我试图找到数组中的最大值。我给了一组区域(输入),现在是:
4.5
19.59
1.92
需要使用scanf
将这些区域读入数组,然后从那里我需要找到该数组中的最大值(区域)。还应该知道,最多只能有100个区域可以读入阵列。所以稍后我可能需要读入数组中的5或20或99等...
如果有人能帮我一把,我会非常感激,我是编程的新手,并不知道从哪里开始。
答案 0 :(得分:1)
#include <stdio.h>
#include <ctype.h>
int main(void){
double v, max_v = 0.0, array[100];
int i = 0, n, state;
while(i < 100){
if(EOF == (state = scanf("%lf", &v)))
break;
else {
int ch, invalid = 0;
while((ch = fgetc(stdin))!='\n' && ch != EOF){
if(!isspace(ch))
invalid = 1;
}
if(invalid || v < 0)
printf("invalid!\n");//skip
else {
array[i++] = v;
if(max_v < v)
max_v = v;
}
}
}
n = i;
for(i = 0; i < n; ++i){
printf("%f\n", array[i]);
}
printf("Largest area = %f\n", max_v);
return 0;
}
答案 1 :(得分:0)
您在评论中说过,数据是从文件重定向的。你还说你需要找到最大的价值。在这种情况下,EOF
是用于表示输入结束的指示。此外,您不需要存储所有值。
您需要逐个读取值,只存储最大值。请参阅以下代码:
FILE* fp = fopen(FILENAME,"r");
if(fp == NULL)
Handle_error(); // or exit(0);
double largest=0,temp;
while( (fscanf(fp, "%lf", &temp) == 1)
{
if( temp > largest)
largest = temp;
}
printf("Largest area = %f" , largest);
时
while
循环将中断
EOF
)