这是我用C编写的代码,我需要帮助如何忽略printf中的负数(“您输入了%d分数.\n”,i);和平均结果中的负数。
还有如何将int平均值;更改为浮点数平均值;,因为当我将它更改为浮动时,没有得到正确的平均值。
这是我的代码:
int main()
{
int i, score, sum=0, n;
int average;
for(i=0; score>0; i++)
{
printf("Enter score (4-10) :");
scanf("%d", &score);
if(score>0){
sum = sum + score;
}
}
printf("You entered %d scores.\n", i);
average = sum / i;
printf("the average is: %d", average);
}
所需产出:
该程序计算您输入的平均分数。
以负整数结尾。
输入分数(4-10):7
输入分数(4-10):8
输入分数(4-10):9
输入分数(4-10):10
输入分数(4-10):4
输入分数(4-10):4
输入分数(4-10):5
输入分数(4-10):-1
你输入了7分。
平均得分: 6.71
发布于 2019-03-30 14:26:52
似乎平均、和和分数都应该是十进制值(浮点数)。
这意味着您还必须更改scanf参数和printf参数。
将整数i除以浮点数和时,只要和是浮点数,就不需要乘以1.0。
#include <stdio.h>
int main()
{
int i;
float score;
float sum = 0;
float average;
for (i = 0; score > 0; i++) {
printf("Enter score (4-10) :");
scanf("%f", &score); // accept decimals in the scores
if (score > 0) {
sum = sum + score;
} else {
break; /// leave the loop here to prevent incrementing i
}
}
printf("You entered %d scores.\n", i);
average = sum / i; // as sum is a float, this division will now work.
printf("the average is: %2.2f", average); // print 2 decimal places as a float
}
发布于 2019-03-30 14:26:31
int main()
{
int i, score = 1, n;
float sum = 0.0, average; //<-------------changed to float
for(i=0; score>0; i++)
{
printf("Enter score (4-10) :");
scanf("%d", &score);
if(score>0){
sum = sum + score;
}
else{
break;
}
}
printf("You entered %d scores.\n", i);
average = sum / i;
printf("The average is: %f", average); //<--- changed to %f you can use &.2f to print 2 digits after .
return 0;
}
https://stackoverflow.com/questions/55432232
复制相似问题