问题描述
#include<stdio.h>main(){ int x=0,y=0; char i='y',j=''; printf("hello world!n"); while(i=='y') { printf("enter x and ynx="); scanf("%d",&x); printf("y="); scanf("%d",&y); if (x==y) printf("x=y, no maximum.n"); else if (x>y) printf("x>y, x is the maximum.n"); else printf("x<y, y is the maximum.n"); printf("enter 'y' or 'Y' to continue.nand press others to quiet...nyour choose is..."); scanf("%c",&j); if (j=='y') i=''; printf("n*************************n"); } }为什么是死循环??scanf("%c",&j);怎么没有执行到??求解。 问题补充:<div class="quote_title">liukai 写道</div><div class="quote_div">你定义了i=='y'这个条件<br />while(i=='y')<br />说明只要i=='Y'里面的语句就执行 而你定义的条件又满足这个<br />所以是死循环</div><br />这个i是来控制何时跳出循环的<br />
解决方案
#include<stdio.h>int main(){ int x=0,y=0; char i='y',j=''; printf("hello world!n"); while(i=='y') { printf("enter x and ynx="); scanf("%d",&x); getchar(); printf("y="); scanf("%d",&y);getchar(); if (x==y) printf("x=y, no maximum.n"); else if (x>y) printf("x>y, x is the maximum.n"); else printf("x<y, y is the maximum.n"); printf("enter 'y' or 'Y' to continue.nand press others to quiet...nyour choose is..."); scanf("%c",&j);getchar(); if (j != 'y' && j != 'Y') i=''; printf("n*************************n"); } }这样就可以了,原因是scanf过滤空格、制表符、回车,当你输入数字的时候敲了回车。getchar就读到了你最后敲的那个回车符了。
解决方案二:
你定义了i=='y'这个条件while(i=='y')说明只要i=='Y'里面的语句就执行 而你定义的条件又满足这个所以是死循环