编写一个C语言程序

编写一个C语言程序,保持跟踪文本行从键盘被敲入时的每个元音(a,e,i,o,u)的出现频率。文本的结束用EOF指定。你的程序的输出应该是在输入文本中遇到的每个原因字母的计数。
增加一个函数到上面的程序中,编写的程序显示一个每个原音字母被遇到的个数的柱状图。例如,如果你的程序检测到字母a5次,字母e3次,字母o12次和字母u1次,这个柱状图应该像下面的这样出现
a|*****
e|***
i|**
o|****
u|*
+ ----|----|----|
0 5 10 15

#include<stdio.h>
int main()
{
int a,e,i,o,u;
char ch;
a=e=i=o=u=0;
while((ch=getchar())!=EOF)
{
switch(ch)
{
case 'a':
a++;
break;
case 'e':
e++;
break;
case 'i':
i++;
break;
case 'o':
o++;
break;
case 'u':
u++;
}
}
printf("a=%d,e=%d,i=%d,o=%d,u=%d\n",a,e,i,o,u);
return 0;
}
输出有要求的话自己改一下。
----
输出可以这样写:
为方便起见,在main()前先写一个函数来输出n个星号后回车:
void printstar(int n)
{
int i;
for(i=0;i<n;i++)
putchar('*');
putchar('\n');
}
main()中输出对应修改为:
printf("a|");
printstar(a);
printf("b|");
printstar(b);
依次类推……
最后一行:
puts(+ ----|----|----| );
百度空格一直显示不好,如果显示不对的话自己改一下空格个数。

参考资料:原创

温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-12-06
#include<stdio.h>
#define EOF -1
#define MAX 1024
main()
{
char s[MAX];
int i,act,ect,ict,oct,uct;
i=0;
act=0;
ect=0;
ict=0;
oct=0;
uct=0;
printf("\nPlease input.");
scanf("%c",&s[i]);
while(s[i]!=EOF)
{
switch(s[i])
{
case 'a':
case 'A': act++; break;
case 'e':
case 'E': ect++; break;
case 'i':
case 'I': ict++; break;
case 'o':
case 'O': oct++; break;
case 'u':
case 'U': uct++; break;
defaut: break;
}
i++;
scanf("%c",&s[i]);
}
printf("\n a=%d,e=%d,e=%d,i=%d,o=%d,u=%d",act,ect,ict,oct,uct);
}
相似回答