此代码的目标是显示频率或输入中每个字母的使用量,但是当我点击编译时会出现错误显示
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;
}
顺便说一句,我不是计算机科学专业的学生,所以如果我犯了一个愚蠢的错误,请不要评判我。
答案 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)