以C为单位的数组输出won';t格式?
我是这个网站的新手,正在寻求帮助。我正试图设计一个程序,从用户那里获取数字输入,将其存储到数组中,并将其正确格式化为三列。然而,我似乎不明白为什么我的输入格式不正确以C为单位的数组输出won';t格式?,c,arrays,formatting,C,Arrays,Formatting,我是这个网站的新手,正在寻求帮助。我正试图设计一个程序,从用户那里获取数字输入,将其存储到数组中,并将其正确格式化为三列。然而,我似乎不明白为什么我的输入格式不正确 #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++) {
#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;
#包括
int main()
{
int x=0;
float num[100];
/*用于接收用户输入并将其存储在阵列中的for循环*/
对于(x=0;x问题,我看到:
在循环的中使用了不正确的范围。给定
float num[100];
最大有效索引为99
。因此,
循环的需要为:
for (x=0; x < 100; x++) // x < 100 not x <= 100
没有向num[x+1]
和num[x+2]
读取任何内容。因此,您将获得垃圾值
使用越界数组索引访问num
只有当x+2
小于或等于97
时,访问num[x]
、num[x+1]
和num[x+2]
才有意义
我的建议是:
使用两个循环。在第一个循环中,读取数据。在第二个循环中,写出数据
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]);
}
for(x=0;x<100;x++)//在这里使用100。
{
scanf(“%f”、&num[x]);
}
对于(x=0;x<98;x++)//在这里使用98。
{
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]);
}
for(x=0;x<98;x+=3)//将x增加3
{
printf(“%7.1lf%11.0lf%10.3lf”,num[x],num[x+1],num[x+2]);
}
您的输入和预期输出是什么(格式正确)?你可以使用任何输入,但这里有一个例子说明它是如何产生的。我感谢你的帮助,但我还有一个问题。我应该把它放在输入结果是这样的地方。三列,句点排列,列之间有一个均匀的空间。有点像这样:
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]);
}