杭电 oj 2014题,我的代码如下,错误的部分已经找了出来,但是不知道为什么错误,求大神来解答;
#include<stdio.h>main(){intn,i,a[200],sum,max,min,maxid,minid;doubleaverage;while(sca...
#include<stdio.h>
main()
{
int n,i,a[200],sum,max,min,maxid,minid;
double average;
while(scanf("%d",&n)!=EOF)
{
sum=0;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
max=min=a[0];
for(i=0;i<n;i++)
{
if(min>a[i])
{
min=a[i];
minid=i;
}
if(max<a[i])
{
max=a[i];
maxid=i;
}
}
a[minid]=0;
a[maxid]=0;
for(i=0;i<n;i++)
sum=sum+a[i];
average=(double)sum/n-2;
printf("%.2lf\n",average);
}
}
出错的代码是
a[minid]=0;
a[maxid]=0;
这两句。
为什么这两句会运行错误?
这个代码能不能运行还和输入的测试数据有关系,如果输入的数据是 3 99 98 97 就会运行错误,但是要是输入 3 98 97 99就能运行,要是输入 3 97 98 99 就只能运行a[minid]=0; 这一句而后一句不能运行,求大神详细解释这是为什么? 展开
main()
{
int n,i,a[200],sum,max,min,maxid,minid;
double average;
while(scanf("%d",&n)!=EOF)
{
sum=0;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
max=min=a[0];
for(i=0;i<n;i++)
{
if(min>a[i])
{
min=a[i];
minid=i;
}
if(max<a[i])
{
max=a[i];
maxid=i;
}
}
a[minid]=0;
a[maxid]=0;
for(i=0;i<n;i++)
sum=sum+a[i];
average=(double)sum/n-2;
printf("%.2lf\n",average);
}
}
出错的代码是
a[minid]=0;
a[maxid]=0;
这两句。
为什么这两句会运行错误?
这个代码能不能运行还和输入的测试数据有关系,如果输入的数据是 3 99 98 97 就会运行错误,但是要是输入 3 98 97 99就能运行,要是输入 3 97 98 99 就只能运行a[minid]=0; 这一句而后一句不能运行,求大神详细解释这是为什么? 展开
2个回答
展开全部
#include<stdio.h>
int main() {
int n, i, a[200], sum, max, min, maxid, minid;
double average;
while (scanf("%d", &n) != EOF) {
sum = 0;
for (i = 0; i<n; i++)
scanf("%d", &a[i]);
max = min = a[0];
maxid = minid = 0; // 你少了对maxid和minid的初始化
for (i = 0; i<n; i++) {
if (min>a[i]) {
min = a[i];
minid = i;
}
if (max<a[i]) {
max = a[i];
maxid = i;
}
}
a[minid] = 0;
a[maxid] = 0;
for (i = 0; i<n; i++)
sum = sum + a[i];
average = (double)sum / (n - 2); // 除法比减法优先级高,需要加括号
printf("%.2lf\n", average);
}
}
华芯测试
2024-09-01 广告
2024-09-01 广告
电学测试台是深圳市华芯测试科技有限公司的核心设备之一,它集成了高精度测量仪器与自动化控制系统,专为半导体芯片、电子元件及模块的电性能检测而设计。该测试台能够迅速、准确地完成电压、电流、电阻、电容及频率等关键参数的测试,确保产品质量符合行业标...
点击进入详情页
本回答由华芯测试提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询