有人可以帮我解决这个在 Dev-C++ 上用 C 语言编程的练习吗?

标签 c

编写一个程序来读取数字,直到读取到数字 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/

相关文章:

C 编程时间和时钟函数

c - 在 C 中打印字母金字塔

c - c中除法的奇怪结果

c - 使用 strtok 分组 false 标记分割字符串

在 C 中创建基于时间的 map

c - 为什么 return 不退出 xv6 中的进程?

c - C 中的全局数据空间不足

c - 在结构中存储数据(链表)

python - gtk+ 复选按钮设置

绘图区开罗多个形状