【问题标题】:issue with a program in c to check a num whether is equally divisible by 2 through 9用 c 中的一个程序来检查一个 num 是否可以被 2 到 9 整除
【发布时间】:2020-03-17 09:37:39
【问题描述】:

我是 c 编程的初学者,我尝试编写一个程序,要求输入 1 到 100 之间的数字,然后告诉哪些数字可以被 2 到 9 整除。关键是我打算用 1 显示结果printf() 我写了 8 %f 和变量,但有些数字只有 1 或 2 可整除而不是 8 !!!

int num;
float a2,a3,a4,a5,a6,a7,a8,a9,n2,n3,n4,n5,n6,n7,n8,n9;
float b2,b3,b4,b5,b6,b7,b8,b9;
printf("please enter an int number between 1 to 100 \n");
scanf(" %d", &num);
a2=( num % 2 == 0)?(b2=2):(n2);
a3=( num % 3 == 0)?(b3=3):(n3);
a4=( num % 4 == 0)?(b4=4):(n4);
a5=( num % 5 == 0)?(b5=5):(n5);
a6=( num % 6 == 0)?(b6=6):(n6);
a7=( num % 7 == 0)?(b7=7):(n7);
a8=( num % 8 == 0)?(b8=8):(n8);
a9=( num % 9 == 0)?(b9=9):(n9);
printf("your chosen number is divisible by %.0f %.0f %.0f %.0f  %.0f  %.0f %.0f  %.0f ",b2,b3,b4,b5,b6,b7,b8,b9);

【问题讨论】:

  • a2=( num % 2 == 0)?(b2=2):(n2); 运行时n2 的值是多少?没有设置任何 n 变量。
  • 你为什么要使用 float 变量,而你曾经分配给这些变量的是整数值?
  • 其实我也不知道条件运算符后半部分应该写什么

标签: c


【解决方案1】:

你的代码问题太多了:

  1. 您打印所有 b 的值,即使给定的数字不能被 [2, 9] 之一整除

  2. an 的用途是什么?

  3. 您尚未初始化b。由于这些条件,它可以携带垃圾值。

  4. 为什么要使用浮点变量?整除性测试仅适用于整数。

解决方案:

无需硬编码模式,只需运行一个循环,同时检查和显示结果。

printf("%d is divisible by:", num);
for (int i = 2; i <= 9; ++i)
{
 if (num % i == 0)
 {
  printf(" %d", i);
 }
}

顺便说一句,您的代码也不会检查给定数字是否在您想要的范围内。

【讨论】:

  • 伟大的 Tnx 亲爱的 Ardent
猜你喜欢
  • 2015-01-26
  • 1970-01-01
  • 2020-10-23
  • 2010-12-29
  • 2015-03-06
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多