孙燕姿舞台倒:关于C的问题

来源:百度文库 编辑:高考问答 时间:2024/04/29 10:06:04
我编的程序:
main()
{char a;
printf("MM,do you love me?");
do{printf("Yes or No");
scanf("%c",&a);
}
while(a=121);
}
这是死循环,能告诉我问题在哪吗?并把正确的告诉我。这是一个让MM非爱不可的程序,除非输入y,不然就一直循环。

一个是上面提到的 等号 的问题 还有用scanf输入字符 回车会导致循环两次
所以要在后面加上一个getchar()吸纳你的回车符

int main(int argc, char* argv[])
{

char a='n';

printf("MM,do you love me?\n");

do{
printf("Yes or No?\n");
scanf("%c",&a);
getchar();
} while(a!='y');

printf("me too!!! \n press anykey to exit\n");

scanf("%c",&a);

return 0;
}

that should be
yes or no?(y/n)
and Y/y are both ok..........

while(a=121); 改成while(a==121);
注:在C中 =是赋值号,==才是等号

初学者和其他语言转型者常犯的错误。

#include<stdio.h>
main()
{char ch1,ch2;
clrscr();
printf("MM!Do you love me?\n");
printf("yes or no?\n");
scanf("%c",&ch1);
if(ch1=='y')
printf("realy?I love you too!");
else
if(ch1=='n')
{printf("why?please give me a reason!?\n");
scanf("%s",ch2);
printf("%s",ch2);
}

}

main()
{
char a;
printf("MM,do you love me?");
do{
printf("Yes or No");
a = getchar();
}
while(a =='y' || a == 'Y');
}