100分!!!!C语言 输入姓名,然后判断是否为汉字或字母,如果非汉字字母则报错。

输入姓名,然后判断是否为汉字或字母,如果非汉字字母则报错。
请主要写出判断的语句。应该用什么函数进行判断?100分!!

利用ASCII码,如果是ASCII码的值是负数(因为规定汉字的最高位是1而ASCII码的最高位是0),则为汉字~~至于字母,对照ASCII码的范围可以确定~~
另外还要注意的是:一个汉字由两个字节表示,所以所有负值个数的一半才是汉字的个数~~~

举个例子
#include<iostream>
#include<string>
using namespace std;
void main()
{
int sum=0;
char a[123];
cin.getline(a,123);
for(int i=0;a[i]!='\0';i++)
{
if(a[i]<0) sum++;
}
cout<<sum/2<<endl;
}

输入:aghlhl暗杀师傅iasdlk
试试看~~
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-11-22
出现非汉字字母则输出 请输入汉字或字母

#include <iostream.h>
#include<string.h>

void main()
{
char name[30];
cin >> name;
int len=strlen(name);
for(int i=0;i<len;i++)
{
if( (name[i]>'z'|| (name[i]<'A'&&name[i]>0) ) &&(name[i-2]<0 || name[i-1]>=0) )
{
cout << "请输入汉字或字母" << endl;
break;
}
}
}
第2个回答  2008-11-22
汉字我不太知道,但是c里面我好像不能输入汉字吧,字母可以这么判断:

#include <ctype.h>

if(isalpha(getchar()))
{
你要执行的...
}
else
{
printf("Error!\n");
exit(0); //这个在<stdlib.h>里面
}
第3个回答  2008-11-22
太简单了!检查ASCII字符的范围
可惜我不懂c,我只懂c++
我就给你说说思路吧,
给一个char变量赋值,然后就是if判断
如果这个变量大于64,小于122则是英文
第4个回答  2008-11-22
#include "stdio.h"
#include"string.h"
void main()
{
char a[100];
int i,flag=0,j;
scanf("%s",a);
j=strlen(a);
for(i=0;i<j;i++)
{
if((a[i]<='z'&&a[i]>='a')||(a[i]>='A'&&a[i]<='Z'))
flag=1;
else flag=0;
if(flag==0)
{printf("error!\n");break;}
}
}
相似回答