所以我试图计算在 while 循环中所做的正负条目的平均值,但我似乎无法在控制台中输入任何类型的数字。所以我需要输入数字,只要它不为零,并加上正数和负数。我需要计算输入了多少正面和负面条目。我还需要打印正负条目的平均值。
这是我的代码:
int num;
int positivenum = 0, negativenum = 0;
int cpositive = 0, cnegative = 0;
float average = 0;
printf("Enter a positive and negative integer:");
while (num!=0)
{
scanf("%d", &num);
if (num > 0){
positivenum += num;
cpositive++;
}
else if (num < 0){
negativenum += num;
cnegative++;
}
答案 0 :(得分:1)
这正是 do while
明智的时候:
int num;
int positivenum = 0, negativenum = 0;
int cpositive = 0, cnegative = 0;
printf("Enter a positive and negative integer:");
do
{
scanf("%d", &num);
if (num > 0){
positivenum += num;
cpositive++;
}
else if (num < 0){
negativenum += num;
cnegative++;
}
} while (num!=0);
if (cpositive > 0)
printf("Average of positive numbers: %f\n", (double)positivenum / (double)cpositive);
if (cnegative > 0)
printf("Average of negative numbers: %f\n", (double)negativenum / (double)cnegative);
答案 1 :(得分:0)
将计数类型从 int 更改为 unsigned (负计数没有意义)。还将提示移到循环内并编写了一个函数来计算平均值:
#include <stdio.h>
void average(const char *what, int value, unsigned count) {
if(!count) return;
printf("average of %s numbers: %f\n", what, (float) value / count);
}
int main() {
int num;
int positivenum = 0, negativenum = 0;
unsigned cpositive = 0, cnegative = 0;
for(;;) {
printf("Enter a positive and negative integer: ");
scanf("%d", &num);
if(!num) break;
if(num < 0) {
negativenum += num;
cnegative++;
continue;
}
positivenum += num;
cpositive++;
}
average("positive", positivenum, cpositive);
average("negative", negativenum, cnegative);
}
答案 2 :(得分:0)
#include <stdio.h>
int main() {
int num;
int positivenum = 0, negativenum = 0;
int cpositive = 0, cnegative = 0;
int range = 0;
int i = 0;
printf("Enter the range.\n");
scanf("%d", &range);
printf("Enter a positive and negative integer:\n");
do
{
scanf("%d", &num);
if (num > 0){
positivenum += num;
cpositive++;
}
else if (num < 0){
negativenum += num;
cnegative++;
}
i++;
} while ( (num!=0) && (i < range));
if (cpositive > 0)
printf("Average of positive numbers: %f\n", (float)positivenum / (float)cpositive);
if (cnegative > 0)
printf("Average of negative numbers: %f\n", (float)negativenum / (float)cnegative);
}
我还添加了一个范围来打破循环。