字符运算问题

来源:百度知道 编辑:UC知道 时间:2024/09/28 07:54:21
某公司的招聘条件如下;①Experience with C②bachelor degree③less than 30
帮忙修改程序,并指出问题所在.谢谢!

void main()
{
char x,y,n;
printf("Do you have Experience with C ? Press y/n");
scanf("%c",&x);
if(y=x) printf("Do you bachelor degree ? Press y/n");
{
if(y=x) printf("Do you less than 30 ? Press y/n");
{
if(y=x) printf("Wellcome join us!");
else printf(" We are so sorry to tell you....");
}
else printf("We are so sorry to tell you ....");
}
else printf(" We are so sorry to tell you.....");
}
修改后貌似还有错……
#include<stdio.h>
void main()
{
char a;
printf("Do you have Experience with C ? Press y/n");
scanf("%c",&a);
if(a=='y'||a=='Y')
{
printf("Do you bachelor degree ? Press y/n&q

是这样的,假如你输入一个y然后按回车,程序的缓冲区里面有两个字符,一个是‘y’一个是‘回车符’,第一次判断把‘y’赋给了变量x,第一次判断的结果是真,然后把那个‘回车符’在第二次判断的时候赋给了x,x的值不是‘y’,所以第二次判断为假,程序就结束了。由于运行很快,你看不清结果就没了。

代码改了一下,每次输入字符的时候这样处理:
scanf ("%c %*c", &x);
这个过程是读入一个字符,赋给x,然后读入一个字符,不赋给任何变量,这样就让%*c把每次输入多出来的那个‘回车符’吃掉了,就能得到正确结果了。如果程序来不及观看运算结果就结束了,可以在最后加几个getchar();

void main()
{
char x, y, n; /*这里的y和n貌似没什么用*/
printf("Do you have Experience with C ? Press y/n");
scanf("%c%*c",&x);
if(x == 'y' || x == 'Y') printf("Do you bachelor degree ? Press y/n");/*判断要用==,=只是赋值,字符常量应该用单引号括起来,要考虑输入可能是大写Y的情况。*/
{
scanf ("%c%*c", &x);/*每判断完一条,应该重新读入一个字符。*/
if(x == 'y' || x == 'Y') printf("Do you less than 30 ? Press y/n");
{
scanf ("%c%*c",&x);
if(y=x) printf("Wellcome join us!");