我是这个网站的新手,正在寻求帮助。我正在尝试设计一个程序,它将从用户那里获取数字输入,将其存储到一个数组中,并将它们正确地格式化为三列。但是,我似乎无法弄清楚为什么我的输入格式不正确。
#include <stdio.h>
int main()
{
int x=0;
float num[100];
/* for loop for receiving inputs from user and storing it in array */
for (x=0; x<=100; x++)
{
scanf("%f", &num[x]);
printf("%7.1lf%11.0lf%10.3lf", num[x], num[x+1], num[x+2]);
//printf("%f %f %f\n", num[0], num[1], num[2]);
}
return 0;
最佳答案
我看到的问题:
在
for
循环中使用了不正确的范围。鉴于float num[100];
最大有效索引为
99
。因此,for
循环需要:for (x=0; x < 100; x++) // x < 100 not x <= 100
在初始化之前使用数组元素。
printf("%7.1lf%11.0lf%10.3lf", num[x], num[x+1], num[x+2]);
num[x+1]
和num[x+2]
中没有任何内容被读入。因此,您将获得垃圾值。使用越界数组索引访问
num
。访问
num[x]
、num[x+1]
和num[x+2]
只有在>x+2
小于或等于97
。
我的建议:
使用两个循环。在第一个循环中,读取数据。在第二个循环中,写出数据。
for (x=0; x < 100; x++) // Using 100 here.
{
scanf("%f", &num[x]);
}
for (x=0; x < 98; x++) // Using 98 here.
{
printf("%7.1lf%11.0lf%10.3lf", num[x], num[x+1], num[x+2]);
}
更新,回应 OP 的评论
将打印循环更改为:
for (x=0; x < 98; x += 3) // Increment x by 3
{
printf("%7.1lf%11.0lf%10.3lf", num[x], num[x+1], num[x+2]);
}
关于c - C 中数组的输出不会格式化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39283503/