c语言怎样判断输入的汉字是否是正确的

#include<stdio.h>fefinep"苹果"main(){charstr[5];printf("请问那是什么?\n");scanf("%s",&a);if(a... #include<stdio.h>
fefine p "苹果"
main()
{
char str[5];
printf("请问那是什么?\n");
scanf("%s",&a);
if(a==p);
printf("答对了\n");
else
printf("不,是苹果\n");
}
这哪里错了?我是菜鸟,请大神说的详细点
展开
 我来答
tattackor
2015-10-29 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:890万
展开全部
1、这是跟汉字的存储方式有关,西文字符用ASCII码的话,一个字节可以表示一个字符,而汉字用的是双字节表示一个汉字。那么,为了在机器内部区分ASCII码和汉字机内码,就规定汉字的两个字节的最高为都为1。
2、例如:汉字“啊”的汉字机内码为B0A1H
表示成双字节是这样的10110000 10100001
本程序用的就是判断最高位的方法。
int is_zh_ch(char p)
{
if(~(p >> 8) == 0) 将p字节进行移位运算,右移8位,这样,如果移位后是0,则说明原来的字节最高位为0,不是1那么也就不是汉字的一个字节。
{
return 0; //代表不是汉字
}
return -1;
}
yearandlife
2014-03-23
知道答主
回答量:13
采纳率:0%
帮助的人:8.8万
展开全部
有几个错误
#include<stdio.h>
#define p "苹果" //这里应该是#define
main()
{
char str[5];
printf("请问那是什么?\n");
scanf("%s",str); //应该将&a改成这个
if(str==p) //括号里的a也是要改,而且多了一个分号
printf("答对了\n");
else
printf("不,是苹果\n");
}
追问
谢谢大神,总算可以运行了,不过不管输入什么,都显示“不,是苹果”
追答
这样就好了
#include
#include
#define p "苹果"
main()
{
char str[5];
printf("请问那是什么?\n");
scanf("%s",str);
if(!strcmp(str,p))
printf("答对了\n");
else
printf("不,是苹果\n");
}
用一个字符串比较函数去判断是否相等就好了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
深湛还舒心的小仙人掌j
2014-03-23 · 超过13用户采纳过TA的回答
知道答主
回答量:21
采纳率:0%
帮助的人:29.3万
展开全部
fefine p "苹果" 有错误。

换成如下格式 试试
#define p "苹果"
int main()
{
...

}
追问
好像还是不行,不知道为什么
追答
#define p "苹果"
#include
#include
int main()
{
char str[5];
printf("请问那是什么?\n");
scanf("%s",str);
if(!strcmp(p,str)) //比较字符串,使用strcmp函数,相等返回0
printf("答对了\n");
else
printf("不,是苹果\n");

return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式