c语言基础题目—中位数(程序改错)-创新互联

文章目录
    • 题意解读
    • 题目描述
    • 输入输出
    • 测试样例
    • 参考答案

创新互联专注于横山网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供横山营销型网站建设,横山网站制作、横山网页设计、横山网站官网定制、成都微信小程序服务,打造横山网络公司原创品牌,更为您提供横山网站排名全网营销落地服务。题意解读
  1. 这是一道改错题,给了一串错误的代码,错误的个数未知,包括语法和思路的错误。
  2. 在写这种改错题的时候,首先要读懂代码的意思,然后根据题目要求进行改正。还有一种方法,就是不看给出的代码,根据题目像常规题一样编写一个符合题目要求的代码。
  3. 代码整体思路:输入m,再输入m组数,然后每组数第一个表示该组有几个数,计算该组数的中位数,最后输出所有组中中位数大的那组数,同时输出组别。
  4. 这道题给出的错误代码中,主要的问题是for循环的条件错误,以及双浮点数运算错误。只要读懂代码,然后细节注意到,这几处错误还是比较容易找出来的。
题目描述

在这里插入图片描述
错误代码如下:

#includeint main(void)
{int m,n,i,j,k,t,index;
    double x;
    scanf("%d",&m);
    double b[m];
    for(k=1;k<=m;k++)
    {scanf("%d",&n);
        int a[n];
        for(i=1;i<=n;i++)
            scanf("%d",&a[i]);
        for(i=0;iif(a[i]>a[j])
                {t=a[i];a[i]=a[j];a[j]=t;
                }
            }
        if(n%2==0)
            b[k]=(a[n/2-1]+a[n/2])/2;
        else b[k]=a[n/2];
    }
    x=b[0];index=0;
    for(i=1;ix)
        {x=b[i];
            index=i;            
        }
    printf("第%d组的疗效最好,中位数是%.2lf。\n",index+1,x);
    return 0;            
}
输入输出

在这里插入图片描述

测试样例

在这里插入图片描述

参考答案
#include#define N 1000
int main(void)
{int m, n, i, j, k, t, index;
	double x;
	scanf("%d", &m);  //m组数
	double b[N];  //用来存入每组数的中位数
	for (k = 0; k< m; k++)
	{scanf("%d", &n);  //每组的第一个数
		int a[N];
		for (i = 0; i< n; i++)
			scanf("%d", &a[i]);  //每组有效的数,存入数组a
		for (i = 0; i< n - 1; i++)   //对每组数进行升序排列,注意循环条件“ i		if (a[i] >a[j])
				{t = a[i]; a[i] = a[j]; a[j] = t;
				}
			}
		if (n % 2 == 0)  //如果是偶数,中位数为中间两数的平均值
			b[k] = (a[n / 2 - 1] + a[n / 2]) / 2.0;  //注意数组b为double型,不要直接÷整型数
		else b[k] = a[n / 2];
	}
	x = b[0]; index = 0;
	for (i = 1; i< m; i++)  //简单的循环比较大中位数,同时获取组别
		if (b[i] >x)
		{	x = b[i];
			index = i;
		}
	printf("第%d组的疗效最好,中位数是%.2lf。\n", index + 1, x);
	return 0;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享文章:c语言基础题目—中位数(程序改错)-创新互联
转载源于:http://azwzsj.com/article/dchgjj.html