c 语言的问题求大神的指导!

问题描述

c 语言的问题求大神的指导!
#include""stdio.h""
#include""stdlib.h""
void main()
{
int guess=0problemch;
ch=getchar();
do
{scanf(""%d""&guess);
problem=(int)(rand()%100)+1;
for(;guess!=problem;)
{if(guess>problem)
printf(""too high!"");
if(guess<problem)
printf(""too low!"");
scanf(""%d""&guess);
}
printf(""%d""problem);
ch=getchar();
}while(ch!='n');
}为什么猜完一次数字后,我按任意键程序都会进入死循环!!

解决方案

你的代码问题在于scanf没有判断输入的是否是数字,如果不是数字,就会进入死循环。加一个判断就好了。
不过你也可以使用fgets之类的替代scanf,方便指定输入数据类型。

#include <stdio.h>#include <stdlib.h>void main(){    int guess = 0 problem;    char ch = getchar();    int isNumber;    do    {        isNumber = scanf(""%d"" &guess);        if(isNumber == 0)        {            printf(""please input a number!"");            ch = getchar();            continue;        }        problem = (int)(rand() % 100) + 1;        for(; guess != problem;)        {            if(guess > problem)                printf(""too high!"");            if(guess < problem)                printf(""too low!"");            scanf(""%d"" &guess);        }        printf(""%d"" problem);        ch = getchar();    }while(ch != 'n');}

解决方案二:

把类型都定义对了,你这里ch应该是char,别定义成int 

解决方案三:
while(ch!='n');
按n退出。

时间: 2024-10-03 22:58:57

c 语言的问题求大神的指导!的相关文章

c语言的问题求大神的指导

问题描述 c语言的问题求大神的指导 ![#include"stdio.h" #include"conio.h" main() { clrscr(); gotoxy(10,1); cprintf( "甜密密"); highvideo();/*高亮度显示*/ cprintf( " 你笑得甜密密, "); lowvideo();/*低亮度显示*/ cprintf( " 好象花儿开在春风里, "); normvid

c 语言的问题求大神的指导

问题描述 c 语言的问题求大神的指导 猜四位数的游戏,a表示存在且位置没错,b表示位置错了数字没错 怎么做啊,求指导#include"stdio.h" #include"stdlib.h" void main() { int answer[4],x; int guess[4],i,j,a,b; for(x=0;x<4;x++) answer[x]=(int)(rand()%8+1); while(a!=3) { a=0,b=0; for(i=0;i<4;

c语言的问题求大神的指导!!!

问题描述 c语言的问题求大神的指导!!! #include"stdio.h" main() { int a[10],i,j,k; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) printf("%5d",a[i]); for(i=0;i<10;i++) for(j=0;j<10;j++) if(a[i]<a[j]) { k=a[i]; a[i]=a

c语言-C语言小白问题求大神指教

问题描述 C语言小白问题求大神指教 #include #include unsigned fun(int w) { int a; int i; i=1; a=w; while(a==0) { a=a/10; i++; } w=w%pow(10,i); return w; } unsigned main() { int w; printf("please enter a number:n"); scanf("%d",&w); printf("the

输出-C语言完全数问题,求大神直接给程序

问题描述 C语言完全数问题,求大神直接给程序 输入整数n,判断n是否是完全数,并输出结果 输入N,输出1~N之间的所有完全数 解决方案 #include int main() { int n,N,i,j,sum; printf("输入整数n,判断n是否是完全数:n"); scanf("%d",&n); sum = 0; for (i = 2;i < n;i++) { if (n%i == 0)sum += i; } if (n==sum) printf

rvm-相关向量机(RVM)的C语言算法,求大神帮忙?

问题描述 相关向量机(RVM)的C语言算法,求大神帮忙? 7C 相关向量机(RVM)的C语言算法实现,不知哪位大神能给与指导-- 解决方案 这东西用C写起来可复杂了,一般是matlab写好了,做成dll给C调用 参考下:http://download.csdn.net/detail/daleloogn/7143069

c语言问题-小白c语言求教,求大神解答

问题描述 小白c语言求教,求大神解答 #include int main(void) { int years,days; years=21; days=years*365; printf(" The years is %d. The days are %d. ".years,days); Return 0; } 程序无法运行,提示错误.求大神解答.小弟在这里先谢谢啦. 解决方案 printf(" The years is %d. The days are %d. "

c语言-C语言入门问题求大神指点

问题描述 C语言入门问题求大神指点 #include #define TABINC 8 //tab increment size //replace strings of blanks with tabs and blanksint main(void){ int c nb nt pos; nb = 0; //number of blanksnt = 0; //number of tabsfor (pos = 1; (c = getchar()) != EOF; pos++){ if (c ==

c语言-C语言小白提问```求大神

问题描述 C语言小白提问```求大神 float search(float (*p)[4]){ float *pt = NULL; for (int i = 0; i < 4; i++) { if ((*p + i) < 60) { pt = *p; } } return pt; } int main(int argc, const char * argv[]) { float score[][4] = {{60,70,80,90},{56,86,97,68},{57,58,98,95}};