从键盘输入字符串,回车表示结束。编写子程序统计出该字符串中26个英文字母分别包含多少个?

2023-01-14

(大小写统计在一起)在主程序中打印出来。A=3,b=1.
我做的程序不知道哪出错了。。求高手帮忙
#include <stdio.h>
#include<string.h>
void count (char ch[])

int i=0;
int sum[26]=0;
while(ch[i]!='0');

if(ch[i]="A"||ch[i]=="a") sum[1]++;
if(ch[i]="B"||ch[i]=="b") sum[2]++;
if(ch[i]="C"||ch[i]=="c") sum[3]++;
if(ch[i]="D"||ch[i]=="d") sum[4]++;
if(ch[i]="E"||ch[i]=="e") sum[5]++;
if(ch[i]="F"||ch[i]=="f") sum[6] ++;
if(ch[i]="G"||ch[i]=="g") sum[7]++;
if(ch[i]="H"||ch[i]=="h") sum[8]++;
if(ch[i]="I"||ch[i]=="i") sum[9]++;
if(ch[i]="J"||ch[i]=="j") sum[10]++;
if(ch[i]="K"||ch[i]=="k") sum[11]++;
if(ch[i]="L"||ch[i]=="l") sum[12]++;
if(ch[i]="M"||ch[i]=="m") sum[13]++;
if(ch[i]="N"||ch[i]=="n") sum[14]++;
if(ch[i]="O"||ch[i]=="o") sum[15]++;
if(ch[i]="P"||ch[i]=="p") sum[16]++;
if(ch[i]="Q"||ch[i]=="q") sum[17]++;
if(ch[i]="R"||ch[i]=="r") sum [18]++;
if(ch[i]="S"||ch[i]=="s") sum[19]++;
if(ch[i]="T"||ch[i]=="t") sum[20]++;
if(ch[i]="U"||ch[i]=="u") sum[21]++;
if(ch[i]="V"||ch[i]=="v") sum[22]++;
if(ch[i]="W"||ch[i]=="w") sum[23]++;
if(ch[i]="X"||ch[i]=="x") sum[24]++;
if(ch[i]="Y"||ch[i]=="y") sum[25]++;
if(ch[i]="Z"||ch[i]=="z") sum[26]++;
i++;
printf("Character number%d",ch[i],sum[i]);


main()

char str[26];
int i;
printf("please input sting:");
count(str);
gets(str);
参考知识1 while(ch[i]!='0');
应该是while(ch[i]!='\n');

if(ch[i]="A"||ch[i]=="a")
应该是
if(ch[i]=='A'||ch[i]=='a') ==号,单引号

给你个简单的:
#include <stdio.h>
int main()

static int cnt[26];
char ch;
int i;
printf("输入字符串:");
while((ch=getchar())!='\n')

if(ch>='a'&&ch<='z')
cnt[ch-'a']++;
if(ch>='A'&&ch<='Z')
cnt[ch-'A']++;

for(i=0;i<26;i++)

if(cnt[i])
printf("%c:%d\n",'A'+i,cnt[i]);

return 0;
参考知识B 看到楼主的代码,我大吃一惊,太复杂了吧。我在你的基础上改了,看注释,不懂可追问

#include <stdio.h>
#include<string.h>
void count (char ch[])

int i=0;
int sum[26]=0;
while(ch[i]!='\0') // 分号去掉,'0'改成'\0'

if(ch[i]>='A' && ch[i]<='Z') // 字符是单引号,不是双引号

sum[ch[i] - 'A']++; // 如果是'A',sum[0]就会加1,以此类推

else if (ch[i] >= 'a' && ch[i] <= 'z')

sum[ch[i] - 'a']++;

i++;

for (i = 0; i < 26; i++) // 打印26个字母的个数

printf("Character %c number %d\n",i + 'A',sum[i]);


int main()

char str[26];
printf("please input sting:");
gets(str); // 先读入字符串,再调用函数计算
count(str);
return 0;
本回答被提问者采纳

相似知识
最简单的记账软件,小键盘就可以完成操作,直接输入金额,按回车,旁边可以显示当日统计。 参考知识1个人觉得星宇免费记账软件还不错,我自己就在用。建立好信用卡账户后就可以,还可以添加备注,个人觉得不是很复杂,要安装,但是是免费的,也没什么插件 参考知识B大熊家的记账本还可以放在U盘中是绿色
刷卡器模拟键盘输入,即刷卡的过程可通过击键盘输入。如何使用户刷卡时,程序自动区分 刷卡器一般都是输入一序列定长数字卡号,你可以经由过程在须要读刷卡器的处所设置一个TIMER,经由过程大大读入第一个字符到最后一个字符的时光距离的话,那么键盘是无法在1,2秒内输入的,而刷卡器就可以。来
广州数控928Tea怎样输入新程序 928型数控新程序输入方法如一、编写新的程序: 编辑—输入—01—回车(不能与已有程序重命名);二、打开一个程序: 编辑—输入—01—回车;三、删除一个程序: 编辑—输入
编写程序..比较2个字符串,不用strcmp函数....急..急. 说strcmp不能用,strlen总可以用吧?#include<iostream>#include<string.h>usingnamespacestd;intmyCmp(co
**工具箱怎么算面积 使用**工具箱,我发给你,你解压后,在CAD中加载这个程序,然后输入Y回车,点击面积,然后点击面域图形回车得到总面积选择对象:面积=228.9874,周长=60.9240228.99面积=521.24
C语言关于字符串动态输入的问题 参考知识1voidmain()intMAX;char*p;scanf("%d",&MAX);p=(char*)malloc(MAX*sizeof(char));gets(p);pu
电脑小键盘Numlock灯亮但是数字打不出来 这是设置的问题,解决方法如下:操作设备:戴尔电脑操作系统:win101、首先“win+r”打开运行输入cmd并回车。2、输入在命令提示符界面输入osk并回车。3、单机虚拟键盘上的“选项”勾选“打开数字
威纶通触摸屏数值元件不能键盘输入 参考知识1进入数值输入元件属性,在触发地址栏,设备类型,输入LB,设备地址,输入9000进入数值输入元件属性,在触发地址栏,设备类型,输入LB,设备地址,输入9000进入数值输入元件属性,在触发地址栏