编写一个程序来读取数字,直到读取到数字 999,然后该过程停止读取。因此使用 do while。然后显示导入到计算机中的两位数(正数和负数)的总和以及导入到计算机中的数字总数。
当我插入数字 999 时,进程停止。效果很好。 我确信 if 命令是错误的,因为它没有将任何数字相加。 我运行它,它打印出两位数字的总和是 0。
int num1, a, sum;
a = 0;
sum = 0;
do
{
printf("give number\n");
scanf("%d", &num1);
a = a + 1;
if ((num1>=-99) && (num1<=-10) && (num1>=10) && (num1<=99))
{
sum = sum + num1;
}
printf("the sum of the two digit numbers is %d\n", sum);
}
while (num1 != 999);
printf("the sum of the two digit numbers is %d\n", athr);
printf("the number of numbers that were inserted overall is %d\n", a);
最佳答案
你的if
语句永远不可能为真:
if ((num1>=-99) && (num1<=-10) && (num1>=10) && (num1<=99))
因为两个有效范围不重叠,并且您使用 &&
来“组合”它们。
使用
if (((-99 <= num1) && (num1 <= -10)) || ((10 <= num1) && (num1 <= 99)))
相反。
<小时/>我今天的可读性提示:请注意,我稍微调整了比较。范围比较更接近地反射(reflect)了它们在代数符号中的外观:
(-99 <= num1 <= -10) or (10 <= num1 <= 99)
这是一件小事,但我发现它对于能够遵循此类测试的逻辑有很大的不同。只是不要陷入这样的编码陷阱:
if ((-99 <= num1 <= -10) || (10 <= num1 <= 99))
不幸的是,这在 C/C++ 中语法上是有效的,但不会给你想要的结果。
关于有人可以帮我解决这个在 Dev-C++ 上用 C 语言编程的练习吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5915380/