回 帖 发 新 帖 刷新版面

主题:请教

/* Note:Your choice is C IDE */
#include "stdio.h"

void main()
{
    char a[100],c[25];
    int i,n[25]={0};

    gets(a);
    puts(a);

    
    
 /**把字符串改写成大写的**/    
 
    i=0;
    do
    {

        if(a[i]>=97&&a[i]<=122)a[i]=a[i]-32;
        i++;
    }while(a[i]!='\0');
    
    
    
/**给字符串C赋值**/

    for(i=0;i<=25;i++)c[i]=65+i;

/**计算各字母的个数**/
    i=0;
    do
    {switch(a[i])
        {   case'A':n[0]++;break;
            case'B':n[1]++;break;
            case'C':n[2]++;break;
            case'D':n[3]++;break;
            case'E':n[4]++;break;
            case'F':n[5]++;break;
            case'G':n[6]++;break;
            case'H':n[7]++;break;
            case'I':n[8]++;break;
            case'J':n[9]++;break;
            case'K':n[10]++;break;
            case'L':n[11]++;break;
            case'M':n[12]++;break;
            case'N':n[13]++;break;
            case'O':n[14]++;break;
            case'P':n[15]++;break;
            case'Q':n[16]++;break;
            case'R':n[17]++;break;
            case'S':n[18]++;break;
            case'T':n[19]++;break;
            case'U':n[20]++;break;
            case'V':n[21]++;break;
            case'W':n[22]++;break;
            case'X':n[23]++;break;
            case'Y':n[24]++;break;
            case'Z':n[25]++;break;
        };
        i++;
    }while(a[i]!='\0');
    
    
    for(i=0;i<=25;i++)
    if(n[i]!=0)printf("%c %d\n",c[i],n[i]);
            
}



请问各位大侠

为什么总是输出“ Z -20 ”???

回复列表 (共4个回复)

沙发

这明显是内存分配问题,改成   
 char a[100],c[26];
    int i,n[26]={0};
就好了。

板凳


能不能再讲讲详细点啊?

3 楼

[quote]
能不能再讲讲详细点啊?[/quote]
因为c[25]元素为0-24

4 楼

/* Note:Your choice is C IDE */
//我把楼上的总结一下,两个错误,看代码旁边的解释
#include <stdio.h>

int main()
{
    char a[100], c[26];//c[25],26个字母哈,c[0]~c[24],很容易犯错,楼主注意一下就好了
你把小写字母转换为大写字母,字母还是26个哈
    int i, n[26] = {0};//n[25],26个字母哈,n[0]~n[24],很容易犯错,楼主注意一下就好了
是26个字母统计各有多少啊
    gets(a);
    puts(a);

    
    
 /**把字符串改写成大写的**/    
 
    i=0;
    do
    {

        if(a[i] >= 97 && a[i] <= 122) a[i] = a[i] - 32;
        i ++;
    }while(a[i] != '\0');
    
    
    
/**给字符串C赋值**/

    for(i = 0; i <= 25; i ++) c[i] = 65 + i;

/**计算各字母的个数**/
    i=0;
    do
    {
        switch(a[i])
        {   case'A':n[0]++;break;
            case'B':n[1]++;break;
            case'C':n[2]++;break;
            case'D':n[3]++;break;
            case'E':n[4]++;break;
            case'F':n[5]++;break;
            case'G':n[6]++;break;
            case'H':n[7]++;break;
            case'I':n[8]++;break;
            case'J':n[9]++;break;
            case'K':n[10]++;break;
            case'L':n[11]++;break;
            case'M':n[12]++;break;
            case'N':n[13]++;break;
            case'O':n[14]++;break;
            case'P':n[15]++;break;
            case'Q':n[16]++;break;
            case'R':n[17]++;break;
            case'S':n[18]++;break;
            case'T':n[19]++;break;
            case'U':n[20]++;break;
            case'V':n[21]++;break;
            case'W':n[22]++;break;
            case'X':n[23]++;break;
            case'Y':n[24]++;break;
            case'Z':n[25]++;break;
        };
        i ++;
    }while(a[i] != '\0');
    
    
    for(i = 0; i <= 25; i ++)
    {
        if(n[i]!=0)
            printf("%c %d\n",c[i],n[i]);
    }
    return 0;     
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册