C语言,输入一行字符,计算各个大写字母出现的次数。

来源:百度知道 编辑:UC知道 时间:2024/05/27 11:00:19
main()
{
char a[100];
int dx[26],i;
gets(a);
for(i=0;a[i]!='\0';i++)
{
switch (a[i])
{
case 'A':dx[0]++;break;
case 'B':dx[1]++;break;
case 'C':dx[2]++;break;
case 'D':dx[3]++;break;
case 'E':dx[4]++;break;
case 'F':dx[5]++;break;
case 'G':dx[6]++;break;
case 'H':dx[7]++;break;
case 'I':dx[8]++;break;
case 'J':dx[9]++;break;
case 'K':dx[10]++;break;
case 'L':dx[11]++;break;
case 'M':dx[12]++;break;
case 'N':dx[13]++;break;
case 'O':dx[14]++;break;
case 'P':dx[15]++;break;
case 'Q':dx[16]++;break;
case 'R':dx[17]++;break;
case 'S':dx[18]++;break;
case 'T':dx[29]++;break;
case 'U':d

这个算法很复杂啊,你应该重新想一想别的算法,比如说用大写字母对应的阿斯科码值运用一维数组计数,需要的话给你编一个
#include<stdio.h>
#include<stdlib.h>
main()
{
int i=0;
char a[100];
int b[123]={0};
gets(a);
while(a[i]!='\0')
{
if(a[i]>='A' && a[i]<='Z')
b[a[i]]++;
i++;
}
for(i=65;i<=90;i++)
printf("%c有%d个\n",'A'+i-65,b[i]);
system("pause");
return 0;
}

你应该对int dx[26]进行初始化,将其初始化为0
for(i=0;i<26;i++)
dx[i]=0;