这个代码运行了以后,黑色框里无法输入数字,只有字母能打出来,一打出来,黑色框就没了
是咋回事
代码里p开头代表正数,n开头代表负数要求的数据
#include <stdio.h>
int main()
{
long long range=1e6;
int a[range];
double p_max=0,p_min=2147483647,p_a,n_max=-2147483648,n_min=0,n_a;
double p_sum=0,n_sum=0;
double p_cnt=0,n_cnt=0;
printf("%f",p_min);
for ( int i=0 ; i<range && scanf("%d",&a[i])!=EOF; i++ ) {
if (a[i]>0) {
p_cnt++;
p_sum+=a[i];
if (a[i]>p_max) {
p_max = a[i];
}else if (a[i]<p_min) {
p_min = a[i];
}
}else if (a[i]<0) {
n_cnt++;
n_sum+=a[i];
if (a[i]>n_max) {
n_max = a[i];
}else if (a[i]<n_min) {
n_min = a[i];
}
}
}
p_a = p_sum/p_cnt;
n_a = n_sum/n_cnt;
printf("%.2f %.2f %.2f\n",p_max,p_min,p_a);
printf("%.2f %.2f %.2f\n",n_max,n_min,n_a);
return 0;
}
您好,我从我的编辑器(Dev-c++5.11c语言模式)中运行可以输入,抱歉无法解决你的问题
但我可以指出你的BUG:
代码18行,26行,你不能使用elseif,万一更新了p_max
后p_min
也需要更新,你一个elseif就跳过了,所以有BUG
正确代码如下(更改了的):
#include <stdio.h>
int main()
{
long long range=1e6;
int a[range];
double p_max=0,p_min=2147483647,p_a,n_max=-2147483648,n_min=0,n_a;
double p_sum=0,n_sum=0;
double p_cnt=0,n_cnt=0;
for ( int i=0 ; i<range && scanf("%d",&a[i])!=EOF; i++ ) {
if (a[i]>0) {
p_cnt++;
p_sum+=a[i];
if (a[i]>p_max) {
p_max = a[i];
}if (a[i]<p_min) {
p_min = a[i];
}
}else if (a[i]<0) {
n_cnt++;
n_sum+=a[i];
if (a[i]>n_max) {
n_max = a[i];
}if (a[i]<n_min) {
n_min = a[i];
}
}
}
p_a = p_sum/p_cnt;
n_a = n_sum/n_cnt;
printf("%.2f %.2f %.2f\n",p_max,p_min,p_a);
printf("%.2f %.2f %.2f\n",n_max,n_min,n_a);
return 0;
}