当我尝试执行以下代码时,我输入2个数字后显示为分段错误..我没有发现任何错误..这是一个程序,用于从用户读取n个数字并添加所有数字的所有数字并打印它.
/*Read n numbers and find sum of digits*/
#include<stdio.h>
int main()
{
int n, num[50], sum=0, dig, i;
printf("\nHow many number you want to enter: ");
scanf("%d", &n);
printf("\nEnter numbers: ");
for(i=0; i<n; i++)
{
scanf("%d", num[i]); //Enter each number inputted from keyboard
printf("\nThe number entered now %d", num[i]);
}
for(i=0; i<n; i++)
{
while(num[i] != 0)
{
dig = num[i]%10; //finding out the digits of each number
sum = sum + dig;
num[i] = num[i]/10;
printf("\nSm of digits till now: ", sum);
}
}
printf("\nSum of digits of all numbers entered: %d", sum);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
你忘&了scanf中的操作符:
scanf("%d", num[i]);
Run Code Online (Sandbox Code Playgroud)
应该:
scanf("%d", &num[i]);
// ^^
Run Code Online (Sandbox Code Playgroud)
顺便说一下,正确学习缩进C程序.
我没有发现任何错误
是的,你的程序编译,但你不应该忽略警告.例如,在您的代码中使用gcc警告如下所述,描述了问题.
警告:格式
‘%d’需要类型的参数‘int *’,但参数2的类型为‘int’
[-Wformat]
它说scanf函数调用中的参数第二个num[i]是int类型(因为numint数组的声明),而根据%d它应该是第一个参数int*,意味着你需要传递地址这意味着你忘记&了运算&符&符号的地址.
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |