| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 880 人关注过本帖
标题:各位高手,帮帮忙看看这条程序要怎么改~~~
只看楼主 加入收藏
心之记忆
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-9-1
收藏
 问题点数:0 回复次数:14 
各位高手,帮帮忙看看这条程序要怎么改~~~
#include "stdio.h"
main()
{
 FILE *fp;
 int num=0;
 char q;
 clrscr();
 if((fp=fopen("D:/test.txt","r"))==NULL)
 {
  printf("Can not open!");
  exit(0);
  }
 while(!feof(fp))
 {
  q=fgetc(fp);
  if((q>='A'&&q<='Z')||(q>='a'&&q<='z'))
  {
  num++;
  }
  }
  printf("%d",num);
  }
该程序是建立一个文本文档,然后在里面输入英文字母,再计算字母的个数。
但是我现在想把各个字母分开计算,要怎样改才会最简单?
麻烦帮帮忙~~~谢谢!
搜索更多相关主题的帖子: 计算 英文字母 include 
2005-09-06 19:12
lll1231230
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2005-9-6
收藏
得分:0 
我只会一个一个列出来
是太麻烦了
简单的我不会
2005-09-06 21:55
jackrain
Rank: 1
等 级:新手上路
帖 子:182
专家分:0
注 册:2005-9-4
收藏
得分:0 
大小写区分吗?比如a和A统计成一个还是2个?

程序和身体一样,健壮,再健壮! 我爱C++
2005-09-07 07:50
wenyong
Rank: 1
等 级:新手上路
帖 子:251
专家分:0
注 册:2005-8-9
收藏
得分:0 
你说的是什么意思啊?
怎么分开计算?

2005-09-07 08:46
wenyong
Rank: 1
等 级:新手上路
帖 子:251
专家分:0
注 册:2005-8-9
收藏
得分:0 
还有一点, 你的程序打开后没有关闭。

2005-09-07 08:47
心之记忆
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-9-1
收藏
得分:0 
对啊~~你们说的问题我都考虑了,就是想不到要怎么改
不区分大小写的字母的,就是a,b,c……分开算
一个个列出来真的很麻烦,要怎么改才好?

2005-09-07 13:22
jackrain
Rank: 1
等 级:新手上路
帖 子:182
专家分:0
注 册:2005-9-4
收藏
得分:0 
建一个26维的数组即可。int count[26]={0};
if(q > ='A' && q <= 'Z') count[q - 'A']++;
else if(q >='a' && q <= 'z') count[q - 'a']++;

或者首先把大写全转换成小写。

程序和身体一样,健壮,再健壮! 我爱C++
2005-09-07 15:00
心之记忆
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-9-1
收藏
得分:0 
算法正确了,但是不知道为什么输出的时候,
不是光输出最后的数字,而是全输出了。
我输入的是a a a a b b,
它就输出123412
不知道还有哪里有问题,可以帮忙再看看吗?
#include "stdio.h"
main()
{
 FILE *fp;
 int s[26]={0};
 char q;
 clrscr();
 if((fp=fopen("D:/test.txt","r"))==NULL)
 {
  printf("Can not open!");
  exit(0);
  }
 while(!feof(fp))
 {
  q=fgetc(fp);
  if(q>='A'&&q<='Z')
  {
  s[q-'A']++;
  printf("%d",s[q-'A']);
  }
  else if(q>='a'&&q<='z')
  {
   s[q-'a']++;
   printf("%d",s[q-'a']);
   }
  }
 }

2005-09-07 16:15
jackrain
Rank: 1
等 级:新手上路
帖 子:182
专家分:0
注 册:2005-9-4
收藏
得分:0 
你的printf加的不是地方,你定义int i = 0;在main函数最后加一个for(i = 0;i < 26; i++)printf("%d,",s[i]);就行了。把if 还有else if里的printf都去掉

程序和身体一样,健壮,再健壮! 我爱C++
2005-09-07 16:38
心之记忆
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-9-1
收藏
得分:0 
不行啊~~~输出全是0

2005-09-07 17:04
快速回复:各位高手,帮帮忙看看这条程序要怎么改~~~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012783 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved