c语言问题
以下程序里的do while 为啥执行不了
# include<stdio.h>
bool IsPrime(int val)
{ int i;
for (i = 2;i < val;++i)
{
if (val%i == 0)
break;
}
if (i == val)
return true;
else
return false;
}
int main(void)
{ char ch;
int val;
do {printf("输入一个你想要的数字\n");
scanf("%d", &val);
if (IsPrime(val)) //这一语句还不懂
printf("yes!\n");
else
printf("no!\n");
printf("你想继续吗?Y/N");
scanf(" %c, &ch");
}
while('y' == ch || 'Y' == ch);
return 0;
}
答案:应该是scanf(" %c", &ch);你的反双引号写错位置了。
if (IsPrime(val)) 等价于if(IsPrime(val) == true),判断输入的值val是否为质数,如果为质数的话,则打印yes。
其他:scanf(" %c, &ch");有问题,书写有问题,改成scanf(" %c“, &ch);就应该没有问题了 do while 执行不了是因为 scanf(" %c, &ch"); 这句错了,你输入的字符无法存储到ch中,应改为scanf(" %c", &ch);
if (IsPrime(val)) 使用了程序IsPrime(val),因为你的isprime(val)程序有返回值,且为 0 或者 1,所以,IsPrime(val)的返回值可以直接拿来作为判断真假的条件
上一个:C语言问题
下一个:C语言的老手,进来帮我构思下编程思路