为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
慕粉3841072 2016-09-02 11:18:06
#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;}
查看完整描述

1 回答

?
onemoo

TA贡献883条经验 获得超454个赞

你的代码最大的问题不在加粗的地方, 最大的问题是你把所有的字符型字面量都用双引号括起来了! 而字符型应该用单引号括起来!

单个字符字面量应该用单引号括起来,用双引号括起来的是字符串。 字符串字面量相当于一个char数组,所以你代码一开始的 char p = "p"; 并没有让变量p的初值为'p',变量p的初值是某个指向"p"字符串的指针转型而来的整型值,这个整型值是什么是不确定的。   后面代码中的所有使用字符的地方你也都犯了同样的错误!  你先把这改正再说。


就算你把单引号都写对了,这个程序还是有问题,这问题确实会出在你加粗的scanf上。 我想你应该先看看会出什么样的错误,我再讲解这是为什么,以及怎么解决。

查看完整回答
1 反对 回复 2016-09-02
  • 1 回答
  • 0 关注
  • 1304 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信