QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 933|回复: 13

还是C语言问题!请帮忙给点改正意见,谢了!(已经解决)

[复制链接]
发表于 2004-10-31 13:12:33 | 显示全部楼层 |阅读模式
题目是:/*输入一行字符,分别统计出英文字母,空格,数字,其他字符的个数*/
我的代码:[code:1]/*输入一行字符,分别统计出英文字母,空格,数字,其他字符的个数*/
#include <stdio.h>
#include <math.h>
main()
{
char c;
int i=0,j=0,k=0,l=0;
while((c=getchar())!='\n')
{if(c>='A'&&c<='Z'||c>='a'&&c<='z')
{++i;printf("英文字母个数=%d\n",i);continue;}
else
if((int)c>=48&&(int)c<=57)
{++k;printf("数字个数=%d\n",k);continue;}
else if((int)c>=0&&(int)c<32||(int)c>32&&(int)c<=47||(int)c>=58&&(int)c<=64||(int)c>=91&&(int)c<=96||(int)c>=123&&(int)c<=254)
{++l;printf("其他数个数=%d\n",l);continue;}
else if((int)c=32)
{++j;printf("空格数=%d\n",j);}
else printf("error");
}
}[/code:1]
我的编译和执行结果:
[code:1][fydream@fydream yuandaima]$ ./fy
njhyugytgf  254 @#$%^&*
英文字母个数=1
英文字母个数=2
英文字母个数=3
英文字母个数=4
英文字母个数=5
英文字母个数=6
英文字母个数=7
英文字母个数=8
英文字母个数=9
英文字母个数=10
空格数=1
空格数=2
数字个数=1
数字个数=2
数字个数=3
空格数=3
其他数个数=1
其他数个数=2
其他数个数=3
其他数个数=4
其他数个数=5
其他数个数=6
其他数个数=7
[fydream@fydream yuandaima]$ ./fy
h54jfj 54##j5
英文字母个数=1
数字个数=1
数字个数=2
英文字母个数=2
英文字母个数=3
英文字母个数=4
空格数=1
数字个数=3
数字个数=4
其他数个数=1
其他数个数=2
英文字母个数=5
数字个数=5[/code:1]
这不是我想要得理想得结果,虽然最后结果正确,但是有太多没用得输出.
我想得到得理想得结果是:
[code:1]是假如我输入:
124juh @#$%
应该输出:
数字数=3
字母数=3
空格数=1
其他数=4[/code:1]
我要怎么实现呀?谢谢了!
请帮我在我的代码基础上改正,谢谢了!
发表于 2004-10-31 13:15:34 | 显示全部楼层
用C提供的字符串函数就可以了
回复

使用道具 举报

 楼主| 发表于 2004-10-31 13:18:28 | 显示全部楼层
请看我修改以后得贴!我想要得得结果是:
[code:1]是假如我输入:
124juh @#$%
应该输出:
数字数=3
字母数=3
空格数=1
其他数=4[/code:1]
谢谢指教!
回复

使用道具 举报

发表于 2004-10-31 13:25:36 | 显示全部楼层
/*输入一行字符,分别统计出英文字母,空格,数字,其他字符的个数*/
#include <stdio.h>
#include <math.h>
main()
{
char c;
int i=0,j=0,k=0,l=0;
while((c=getchar())!='\n')
{if(c>='A'&&c<='Z'||c>='a'&&c<='z')
++i;
else
if((int)c>=48&&(int)c<=57)
++k;
else if((int)c>=0&&(int)c<32||(int)c>32&&(int)c<=47||(int)c>=58&&(int)c<=64||(int)c>=91&&(int)c<=96||(int)c>=123&&(int)c<=254)
++l;
else if((int)c=32)
++j;
else printf("error");
}
printf("英文字母个数=%d\n",i);
printf("数字个数=%d\n",k);
printf("其他数个数=%d\n",l);
printf("空格数=%d\n",j);
}
回复

使用道具 举报

 楼主| 发表于 2004-10-31 13:31:37 | 显示全部楼层
哦!我明白了!PRINTF放在外面就不受循环得干扰了!谢谢你!
回复

使用道具 举报

发表于 2004-10-31 13:34:17 | 显示全部楼层
将你要打印的放到循环外面就行了
回复

使用道具 举报

发表于 2004-10-31 13:39:40 | 显示全部楼层
对啊。呵呵。你刚学C是吧
你如果只要最后的结果。你把打印语句放到循环中去干什么啊。。
那个只会混淆你的程序啊。。
放到最后就行了啊。。
没有必要那样做。。
回复

使用道具 举报

 楼主| 发表于 2004-10-31 16:23:50 | 显示全部楼层
再次感谢!!!对呀!我是刚学C得,请给指明一条能够使我有很快长进得办法呀!谢谢了!
回复

使用道具 举报

发表于 2004-10-31 21:04:45 | 显示全部楼层
:-)
回复

使用道具 举报

发表于 2004-11-1 09:22:00 | 显示全部楼层
你试试计算一段话中有多少英文单词
回复

使用道具 举报

发表于 2004-11-1 17:28:02 | 显示全部楼层
能用正则式实现吗?
回复

使用道具 举报

 楼主| 发表于 2004-11-1 18:27:09 | 显示全部楼层
可以计算亚!你可以给我一段话!我试一下!呵呵!
对亚!如果这一段话多余一行就不好办了!情AXIN老兄帮忙指点一下,谢谢了!
还有FIRENOTH兄弟,我C语言还没有看完,我刚看到循环部分,不过谢谢你的帮助!呵呵!
回复

使用道具 举报

发表于 2004-11-2 09:30:38 | 显示全部楼层
[quote:7fc19abdff="fydream"]可以计算亚!你可以给我一段话!我试一下!呵呵!
对亚!如果这一段话多余一行就不好办了!情AXIN老兄帮忙指点一下,谢谢了!
还有FIRENOTH兄弟,我C语言还没有看完,我刚看到循环部分,不过谢谢你的帮助!呵呵![/quote]

当然有不规则的空行和空格,比如开头空两格,两个单词之间空N格,一行与一行之间也可能空N格~
回复

使用道具 举报

 楼主| 发表于 2004-11-2 12:46:58 | 显示全部楼层
应该没有什么问题吧!
请看:
[code:1]
[fydream@fydream yuandaima]$ ./fy
nasldihhbjkldfuavjklhas468a4f4g6dsg6agt74tt45584543@#%$#&&U*&%&$$   sdfhjlasfd   kjshiasdfnkhjsa ]o9430rtreo;j erq5g4t4rgv$%$#^%###@%^skcghkasdn.cv$$$$sadcsadvb cds,sdafgsdacnjsadc
英文字母个数=114
数字个数=24
其他数个数=33
空格数=9
[/code:1]
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-7 05:29 , Processed in 0.081432 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表