我想要做以下事情:
- 将输入的字符串转换为整数。
- 使用指针和for循环计算整数数组的总和。
- 如果用户什么都不输入,只按下回车键,则程序会打印答案。
我的代码:
int main(void)
{
int i, a[10], sum = 0;
int * b;
b = a;
char c[10];
printf ("Please enter some numbers:\n");
for(i = 0 ; i < 10 ; i++)
{
(void) fgets(c, (sizeof * b), stdin);
if(c[0] == '\n')
{
break;
}
*(b + i) = atoi(c);
sum = sum + *(b + i);
}
printf ("sum : %d \n", sum);
return 0;
}
有些奇怪的事情我无法理解。
仅适用于两位数时才有效:
$Please enter some numbers:
$32
$31
$1
$
$sum:64
如果我输入三个数字,它会直接输出结果:
$Please enter some numbers:
$123
$sum:123
$Please enter some numbers:
$12
$123
$sum:135
如果有超过三个数字,程序将会把剩下的数字相加。
$Please enter some numbers:
$2123
$
$sum:215 //The sum became 212+3.
$Please enter some numbers:
$12345
$11
$
$sum:179 //The sum became 123+45+11.
$Please enter some numbers:
$123456
$sum:579 //If the number of digits is a multiple of 3, this program directly prints sum(=123+456).
如果有人能帮助我,我会非常感激。谢谢您阅读这个漫长的问题。
fgets(c,sizeof* b,stdin);
-->fgets(c,sizeof(c),stdin);
- LPs