我是编码新手,从 C 开始。 由于用户输入,我正在处理的程序让我挂断了电话。我应该找到用户输入的最小值和最大值,但到目前为止我没有尝试过。 任何帮助将不胜感激:
#include <stdio.h>
#include <math.h>
int main() {
int i;
int n;
float data;
float sumx;
float sumx2;
float mean;
float var;
float sd;
int min;
int max;
/* Get the number of data lines from the user*/
printf("How many numbers do you need to enter (n)? ");
scanf("%d", &n);
while (n <= 0) {
printf("Enter positive numbers only, please.\n");
printf("\n");
printf("How many numbers do you need to enter (n)? ");
scanf("%d", &n);
/* Initialization */
sumx = sumx2 = 0.0;
for ( i = 1; i <= n; i++) {
printf("Enter data item %d: ", i);
scanf("%f", &data);
min = 0;
max = 0;
if(data > max)
max = data;
else if(data < min)
min = data;
sumx = sumx + data;
sumx2 = sumx2 + (data * data);
}
mean = sumx / n;
var = 1.0/(n-1) * (sumx2 - (1.0/n) * sumx * sumx);
sd = sqrt(var);
printf("\n");
printf("The minimum value entered: %d\n", min);
printf("The maximum value entered: %d\n", max);
printf("\n")
printf("mean = %f\n", mean);
printf("variance = %f\n", var);
printf("std. dev. = %f\n\n", sd);
return 0;
无论在程序中输入什么值,最小值都为 0,最大值为最后输入的值。 最小值/最大值是否应该不同?
最佳答案
min = 0;
max = 0;
for ( i = 1; i <= n; i++) {
printf("Enter data item %d: ", i);
scanf("%f", &data);
if(data > max)
max = data;
if(data < min)
min = data;
if(i == 1){min = data;}
sumx = sumx + data;
sumx2 = sumx2 + (data * data);
}
编辑(上面的代码不适用于数据的初始值 = 0)
min = INT_MAX; //chux suggestion
max = INT_MIN;
for ( i = 1; i <= n; i++) {
printf("Enter data item %d: ", i);
scanf("%f", &data);
if(data > max)
max = data;
if(data < min)
min = data;
sumx = sumx + data;
sumx2 = sumx2 + (data * data);
}
并更正while
循环
瓦尔特
关于C:最小和最大输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22796661/