猿问

加粗部分为什么没有执行?

#include <stdio.h>



int main()

{

char p = "p";

int a, i, ma;


                        //定义变量

while ("q" != p)

{

printf("请输入一个数,我将判断它是否为素数。\n");

scanf("%d", &a);

ma = a - 1;

                   //输入变量

if (0 == a % 2)

{

printf("%d不是素数。\n",a);

}

else

{

for ( i = 2; i <= (a-1)/2; i++)

{

if (0 == a%i)

{

printf("%d不是素数。\n",a);

break;

}

}

if ((a-1)/2 == 1)

{

printf("%d是素数。\n", a);

}

}

printf("若要退出请输入q\n");

scanf("%c", &p);

        if ("q" == p)

{

printf("你选择退出。\n");

}

else

{

printf("程序将继续。\n\n");

}

}

return 0;

}


慕粉3841072
浏览 1305回答 1
1回答

onemoo

你的代码最大的问题不在加粗的地方, 最大的问题是你把所有的字符型字面量都用双引号括起来了! 而字符型应该用单引号括起来!单个字符字面量应该用单引号括起来,用双引号括起来的是字符串。 字符串字面量相当于一个char数组,所以你代码一开始的 char p = "p"; 并没有让变量p的初值为'p',变量p的初值是某个指向"p"字符串的指针转型而来的整型值,这个整型值是什么是不确定的。   后面代码中的所有使用字符的地方你也都犯了同样的错误!  你先把这改正再说。就算你把单引号都写对了,这个程序还是有问题,这问题确实会出在你加粗的scanf上。 我想你应该先看看会出什么样的错误,我再讲解这是为什么,以及怎么解决。
随时随地看视频慕课网APP
我要回答