Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以C为单位的数组输出won';t格式?_C_Arrays_Formatting - Fatal编程技术网

以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]);
    }