#include
void main()
{
char new[];
int i,x=0,y=0,z=0,o=0; /**x为英文字符数y为空格字符数z数字个数,o其他字符树***/
printf("输入一个文本\n");
scanf("%s",new);
for(i=0;new[i];i++)
{
if(new[i]>='1'&&new[i]<='9')
z++;
else if((new[i]>='a'&&new[i]<='z')||(new[i]>='A'&&new[i]<='Z'))
x++;
else if(new[i]==' ')
y++;
else o++;
}
printf("英文个数%d\n",x);
printf("数字个数%d\n",z);
printf("空格个数%d\n",y);
printf("其他字符个数%d\n",o);
}
很简单的,用一个字符数组一一判断就可以了.
#include
void main()
{
int i=0,chars=0,nums=0,spaces=0,others=0;
char a[50];/*用来接收输入的字符串*/
printf("请输入一行字符:\n");
gets(a);
while(a[i]!='\0')
{
if ((a[i]>='A' && a[i]<='Z') || (a[i]>='a' && a[i]<='z')) /*字符*/
chars++;
else if (a[i]>='0' && a[i]<='9') /*数字*/
nums++;
else if (a[i]==' ') /*空格*/
spaces++;
else
others++;
i++;
}
printf("共有英文字母%d个,数字%d个,空格%d个,其它字符%d个.\n",chars,nums,spaces,others);
}
在VC6.0下调试通过.
这个不是很难吧?用一个for循环,挨个判断:
用_istdigit[int isdigit(int c);int iswdigit(wint_t c);]判断是否是数字0-9;不需要区分十六进制数吧?
用_istalpha[int isalpha(int c);int iswalpha(wint_t c);]判断是否为英文字母;
用_istspace[int isspace(int c);int iswspace(wint_t c);]判断是否为空格,制表符,换行符等,若只判断空格,则用_T(" ")直接比较算了。
剩下的不就是其他字符了吗?
呵呵
nt main()
{
int charcount = 0, chinesecount = 0, numcount = 0, spacecount = 0, othercount = 0, totalcount;
cout<<"请输入一行字符:";
char pstr[] = "1 a ,,,我 朥你", curchar;
// cin>>pstr;
curchar = pstr[0];
int curindex = 1;
while(curchar != '\0')
{
if (curchar >= 65 && curchar <= 122) //A-z
charcount++;
else if (curchar >= 128 || curchar < 0) //中文
chinesecount++, curindex++; //中文字符占两个字节,因此将游标向后移一位
else if (curchar >= 48 && curchar <= 57) //0-9
numcount++;
else if (curchar == 32) //空格
spacecount++;
else
othercount++;
curchar = pstr[curindex++];
}
totalcount = charcount + chinesecount + numcount + spacecount + othercount;
cout<<"总数:"<
//我转载的