语言C代码中有错误,但我无法弄清楚它在哪里

时间:2017-05-12 16:12:27

标签: c

此代码的目标是显示频率或输入中每个字母的使用量,但是当我点击编译时会出现错误显示

main.c:50:19: error: invalid operands to binary * (have 'float *' and 'int')"
    avg = freq*100/count;    

代码

#include <stdio.h>
#include <ctype.h>
#include <float.h>

int main()
{
    char alp;
    float count, i, avg;
    float freq[26];


    printf("Enter the alphabet : ");
    scanf("%c", &alp);
    do{
        printf("Enter the alphabet : ");
        scanf("%c", &alp);

        switch(alp) {
            case 'a' :freq[0]++; break;
            case 'b' :freq[1]++; break;
            case 'c' :freq[2]++; break;
            case 'd' :freq[3]++; break;
            case 'e' :freq[4]++; break;
            case 'f' :freq[5]++; break;
            case 'g' :freq[6]++; break;
            case 'h' :freq[7]++; break;
            case 'i' :freq[8]++; break;
            case 'j' :freq[9]++; break;
            case 'k' :freq[10]++; break;
            case 'l' :freq[11]++; break;
            case 'm' :freq[12]++; break;
            case 'n' :freq[13]++; break;
            case 'o' :freq[14]++; break;
            case 'p' :freq[15]++; break;
            case 'q' :freq[16]++; break;
            case 'r' :freq[17]++; break;
            case 's' :freq[18]++; break;
            case 't' :freq[19]++; break;
            case 'u' :freq[20]++; break;
            case 'v' :freq[21]++; break;
            case 'w' :freq[22]++; break;
            case 'x' :freq[23]++; break;
            case 'y' :freq[24]++; break;
            case 'z' :freq[25]++; break;
            default :;}
        count++;
    }while (alp==-1);

    for( i = 0; i < 26; i = i + 1 ){
        avg = freq*100/count;
        printf("%c : %f", i+65, avg);

    }


    return 0;
}
顺便说一句,我不是计算机科学专业的学生,​​所以如果我犯了一个愚蠢的错误,请不要评判我。

4 个答案:

答案 0 :(得分:1)

你有这个代码......

avg = freq*100/count;

... freq是一个数组,所以它应该是

avg = freq[i]*100/count;

答案 1 :(得分:1)

您在以下行中缺少数组索引:

avg = freq*100/count;

应该是:

avg = freq[i]*100/count;

数组指针不能相乘:)

答案 2 :(得分:1)

这里freq是浮点数的数组。数组名称是指向第一个位置的内存位置的指针,即freq指向freq [0]。

因此当你使用“avg = freq * 100 / count;”时freq是(float *)并且它需要float。所以使用 freq [i]

答案 3 :(得分:0)

此代码中存在多个错误: 1)你使用unitializated vars:

float count=0, avg=0;

2)avg是一个数组

 avg = freq[i]*100/count;

3)我是一个浮点数,但你想要一个整数(或只是一个字符)

char i=0;

4)while(apl == - 1)不正确时,do while将始终终止(除非出现错误。使用

while(apl!=-1)