我的程序应该看看用户号码是否是他们可用的号码(35-44),然后返回号码(35-44)以及从10个可用号码中选择它们的人的百分比。
我已经试过了一切,好像它是正常的,但数字35和36是给我随机的百分比数字每一次。数字37-44给了我正常的百分比数字,所以我真的不明白发生了什么
输出应该是这样的:
tamanho 36 – percentual: 20
tamanho 37 – percentual: 10
tamanho 38 – percentual: 0
tamanho 39 – percentual: 0
tamanho 40 – percentual: 0
tamanho 41 – percentual: 0
tamanho 42 – percentual: 10
tamanho 43 – percentual: 0
tamanho 44 – percentual: 30
#include <stdio.h>
int tamanVeri(int taman,int vTam[]){
int porc,i;
for(i=0;i<10;i++){
if(taman==vTam[i]){
return i;
}
}
return 0;
}
void showTamanPorc(int vTam[],int vAp[],int vezRepetCSucesso){
int i;
float porc;
for(i=0;i<10;i++){
porc=((float)vAp[i]/(float)vezRepetCSucesso)*100.0;
printf("Tamanho: %i - Porcentagem: %.2f\n",vTam[i],porc);
}
}
int main(void) {
int vAp[10];
int vTam[10]={35,36,37,38,39,40,41,42,43,44};
int tamanho,i=0,j=0,k,adicEm;
printf("Ponha o tamanho do tênis\nEntre 35 e 44\n");
scanf("%i",&tamanho);
while(tamanho!=0&&tamanho>0){
adicEm=tamanVeri(tamanho,vTam);
if(adicEm!=0){
vAp[adicEm]++;
}
j++;
printf("Ponha o tamanho do tênis\nEntre 35 e 44\n");
scanf("%i",&tamanho);
}
showTamanPorc(vTam,vAp,j);
return 0;
}
1条答案
按热度按时间xv8emn3q1#
你的线性搜索函数(
tamanVeri
)在失败时返回0
,并成功地找到整数作为数组的第一个元素。失败时应该返回一些无效的索引(例如,-1
),并更改所使用的比较:int vAp[10];
是未初始化的数组。它包含的值是 * 不确定的 *(实际上是随机的)。使用不确定的值(如vAp[adicEm]++;
)将调用Undefined Behaviour。初始化数组以包含所有零: