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");
}
这哪里错了?我是菜鸟,请大神说的详细点 展开
fefine p "苹果"
main()
{
char str[5];
printf("请问那是什么?\n");
scanf("%s",&a);
if(a==p);
printf("答对了\n");
else
printf("不,是苹果\n");
}
这哪里错了?我是菜鸟,请大神说的详细点 展开
3个回答
展开全部
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;
}
2、例如:汉字“啊”的汉字机内码为B0A1H
表示成双字节是这样的10110000 10100001
本程序用的就是判断最高位的方法。
int is_zh_ch(char p)
{
if(~(p >> 8) == 0) 将p字节进行移位运算,右移8位,这样,如果移位后是0,则说明原来的字节最高位为0,不是1那么也就不是汉字的一个字节。
{
return 0; //代表不是汉字
}
return -1;
}
展开全部
有几个错误
#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<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");
}
用一个字符串比较函数去判断是否相等就好了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fefine p "苹果" 有错误。
换成如下格式 试试
#define p "苹果"
int main()
{
...
}
换成如下格式 试试
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询