繁体   English   中英

编译器无法执行最后两个 printf 函数

[英]compiler can not execute last two printf functions

#include<stdio.h>

int main()
{
    int a[100], i, n, sum=0;
    printf("How many number:");
    scanf("%d", &n);
    for ( i = 0; i < n; i++)
    {
        scanf("%d", a[i]);
        sum = sum + a[i];
    }
    printf("Sum is: %d\n", sum);
    printf("Average is %0.2f", (float)sum/n);
    return 0;
}

我的代码有什么问题? 最后两个 printf 函数不能被编译器执行。 我的代码有问题吗?

scanf函数需要传递一个指向要读取的数据的指针。

 for ( i = 0; i < n; i++) { scanf("%d", a[i]); sum = sum + a[i]; }

a[i]传递一个int而不是指向int的指针。 现在,由于指针只是数字,并且您已经为它提供了一个,因此您的代码将编译,但如果您在编译时打开警告,您的编译器应该警告您。

这样做肯定会产生未定义的行为。

相反,您需要传递a[1]地址

scanf("%d", &a[i]);

您可能还希望检查scanf的返回值,以确保它实际上正在读取您期望的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM