请大神看下小弟这个C语言小程序哪里有问题,为何不能按照我想的输出?

#include<stdio.h>
main()
{int a;
printf("请问:C语言是否能够作弊?请回答 “Y/N” 输入完成后请按回车键");
scanf("%d",&a);
if(a=='Y')
printf("因为你作弊被老师抓,恭喜挂科!");
if(a=='N')
printf("因为你没有作弊肯定挂科,恭喜恭喜!");
}

a的数据类型不对,可改为:

#include<stdio.h>
main()
{char a; // 字符型
printf("请问:C语言是否能够作弊?请回答  “Y/N”  输入完成后请按回车键");
scanf("%c",&a); // 输入字符型
if(a=='Y')
printf("因为你作弊被老师抓,恭喜挂科!");
if(a=='N')
printf("因为你没有作弊肯定挂科,恭喜恭喜!");
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-07-13

scanf("%d",&a);这句话的意思是你输入的是一个int 型的整数,因此你需要输入Y或者N的Ascii码才能实现你想要的结果。

你想要的效果应该是输入字符'Y'或者‘N’,因此你需要定义一个char 类型变量

char a;
scanf("%c",&a);//需要输入回车
或者
char a;
a = getch();//不需要输入回车

用上述两种方法来获取字符

追问

如果他输入 Y/N 以外的字符,怎么才能输出一个“不要调皮,请按照提示输入或分清大小写”

第2个回答  2014-07-13
#include<stdio.h>
Int main(void)
{
char ch;
printf("请问:C语言是否能够作弊?请回答 “Y/N” 输入完成后请按回车键\n");
scanf("%c",&ch);
if(ch=='Y')
{
printf("因为你作弊被老师抓,恭喜挂科!\n");
}
else
{
printf("因为你没有作弊肯定挂科,恭喜恭喜!\n");
}

return 0;

}
相似回答
大家正在搜