此代码的目标是显示输入中每个字母的频率或使用量,但是当我单击编译时,有一个错误显示
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;
}
顺便说一句,我不是计算机科学专业的学生,所以如果我犯了一个愚蠢的错误,请不要评判我。
你有这个代码...
avg = freq*100/count;
。freq 是一个数组,所以它应该是
avg = freq[i]*100/count;
您缺少以下行中的数组索引:
avg = freq*100/count;
它应该是:
avg = freq[i]*100/count;
数组指针不能乘:)
这里的freq是浮点数数组。 数组名称是指向第一个位置的内存位置的指针,即 freq 指向 freq[0]。
因此,当您使用"avg = freq*100/count;"时,频率是(float*(,它期望float。 所以使用频率[i]
此代码中有多个错误:1( 您使用单位化变量:
float count=0, avg=0;
2( avg 是一个数组
avg = freq[i]*100/count;
3(i 是一个浮点数,但你想要一个整数(或只是一个字符(
char i=0;
4( while (apl==-1( 不正确,do while 将始终终止(除非会出现错误。
while(apl!=-1)