帮忙看看这C语言程序

[复制链接]
查看11 | 回复4 | 2009-4-21 22:42:42 | 显示全部楼层 |阅读模式
#include
main()
{
char a[30],*ps;
int i=0,j=0,k=0,l=0,m=0;

printf("please input a string\n");
scanf("%s",&a);

ps=a;
while(*ps)
{
if((*ps>='a')&&(*ps='A')&&(*ps='0')&&(*ps<='9'))
l+=1;//数字个数//
else
m+=1;//其他字符个数//
ps++;
}

printf("小写字母个数有:%d\n",i);
printf("大写字母个数有:%d\n",j);
printf("空格个数有:%d\n",k);
printf("数字个数有:%d\n",l);
printf("其他字符个数有:%d\n",m);
}
这是一个统计字符串大小写字母,数字,空格,其他符号个数的程序,但是当输入有空格的字符串的时候,算的只到空格前面的字符,后面的都没进入循环,当字符串没有空格的时候,统计的正确的。找了好多资料,一直没找到答案。哪位网友帮帮忙

回复

使用道具 举报

千问 | 2009-4-21 22:42:42 | 显示全部楼层
cin和scanf遇到输入空格就停止了! 要用getsscanf("%s",&a); 要改成gets(a);}...
回复

使用道具 举报

千问 | 2009-4-21 22:42:42 | 显示全部楼层
scanf输入数据的分隔符是空格及回车,要用gets...
回复

使用道具 举报

千问 | 2009-4-21 22:42:42 | 显示全部楼层
用fgets(a, 30, stdin), 以免数组a越界。...
回复

使用道具 举报

千问 | 2009-4-21 22:42:42 | 显示全部楼层
scanf输入数据的分隔符是空格及回车!你输入空格后就表示你的输入已经完成!那输入的字符串里面根本没空格及空格后面的字符串当然程序跑飞了!更改的方法如楼上哥哥说的:改成gets(a); 楼上的!拒绝把C++和C混在一起 -_-...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行