我想在输入负数时添加所有正整数。
int number;
int total;
int loopcount;
int a;
number = 0;
a = 0;
total = 0;
for(loopcount = 0; loopcount >=0; loopcount = loopcount + 1)
{
printf("Enter Integer: ");
scanf("%d", &number);
a = number;
if (a >= 0)
{
total = total + number;
}
else if(a < 0)
{
printf("Total positive int = %d\n", &total);
break;
}
}
答案 0 :(得分:1)
问题在于:
printf("Total positive int = %d\n", &total);
^
而不是打印total
变量的值,而是打印它的地址。删除&
。
正确的方法是:
printf("Total positive int = %d\n", total);
答案 1 :(得分:0)
您的代码中存在一个小错误:
printf("Total positive int = %d\n", &total);
^
当它改为:
printf("Total positive int = %d\n", total);
更简单的版本看起来像:
#include<stdio.h>
int main(void)
{
int number = 0;
int total = 0;
while(1)
{
printf("Enter Integer: ");
scanf("%d", &number);
if (number >= 0)
{
total += number;
}
else if(number < 0)
{
total += number;
printf("Total positive int = %d\n", total);
break;
}
else
{
;
}
}
return 0;
}
此代码将执行其所说的内容,但如果未插入有效输入,它也会执行不同的操作。因为,它不会处理非数字的输入。
这是一个负责验证输入并且仅允许数字的那个。
下面这个版本有很多需要改进的地方,但我更喜欢这种方式让学习者理解代码并进一步改进。
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
char str[10] = { 0 }; //Assuming that the number can only be restricted to 9 digits. Change as required!
char *ptr = NULL;
double ret = 0.0;
double total = 0.0;
printf("Enter numbers: ");
while(1)
{
str[0] = '\0';
scanf("%s", str);
ret = strtod(str, &ptr);
if(ret == 0.0)
{
if(ptr != NULL)
{
printf("\nNot a number!");
continue;
}
else
{
total += ret;
}
}
else if(ret < 0.0)
{
total += ret;
break;
}
else
{
total += ret;
}
}
printf("\n%lf", total);
return(0);
}