c中的一个程序的问题,用于检查num是否可被2到9整除



我是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);

您的代码中有太多问题:

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

  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);
}
}

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