编程题#5:细菌实验分组 C语言
2017-01-14 15:41
866 查看
先求出繁殖率放到value[100]里
然后用bubble(int *arraynum,int *arrayvalue,int nn)冒泡排序算法对繁殖率value和培养皿编号num从大到小排序
记录繁殖率高的培养皿个数bignum 从大到小输出编号num
记录繁殖率高的培养皿个数smallnum 从大到小输出编号num
获得的新知识点:
自己写的函数可以不返回值,就没有return了
新命名的函数void bubble(int *arraynum,int *arrayvalue,int nn)已经是对形参arraynum,arrayvalue,nn的声明,函数体里面不用在声明了
而且arraynum和arrayvalue带*是因为传递的是num和value数组的首地址,这样才能在函数体里面对整个数组里的元素进行操作
有一种细菌分为A、B两个亚种,它们的外在特征几乎完全相同,仅仅在繁殖能力上有显著差别,A亚种繁殖能力非常强,B亚种的繁殖能力很弱。在一次为时一个 小时的细菌繁殖实验中,实验员由于疏忽把细菌培养皿搞乱了,请你编写一个程序,根据实验结果,把两个亚种的培养皿重新分成两组。
输入
输入有多行,第一行为整数n(n≤100),表示有n个培养皿。
其余n行,每行有三个整数,分别代表培养皿编号,试验前细菌数量,试验后细菌数量。
输出
输出有多行:
第一行输出A亚种培养皿的数量,其后每行输出A亚种培养皿的编号,按繁殖率升序排列。
然后一行输出B亚种培养皿的数量,其后每行输出B亚种培养皿的编号,也按繁殖率升序排列。
样例输入
然后用bubble(int *arraynum,int *arrayvalue,int nn)冒泡排序算法对繁殖率value和培养皿编号num从大到小排序
记录繁殖率高的培养皿个数bignum 从大到小输出编号num
记录繁殖率高的培养皿个数smallnum 从大到小输出编号num
获得的新知识点:
自己写的函数可以不返回值,就没有return了
新命名的函数void bubble(int *arraynum,int *arrayvalue,int nn)已经是对形参arraynum,arrayvalue,nn的声明,函数体里面不用在声明了
而且arraynum和arrayvalue带*是因为传递的是num和value数组的首地址,这样才能在函数体里面对整个数组里的元素进行操作
#include<stdio.h> void bubble(int *arraynum, int *arrayvalue, int nn){ int temp = 0, flagnum = 0; int i, j; for (j = 0; j < nn; j++){ for (i = 0; i < nn-j; i++){ if (arrayvalue[i + 1] > arrayvalue[i]){ //繁殖率交换顺序 temp = arrayvalue[i+1]; arrayvalue[i+1] = arrayvalue[i]; arrayvalue[i] = temp; //繁殖率对应的培养皿编号也交换顺序 temp = arraynum[i+1]; arraynum[i+1] = arraynum[i]; arraynum[i] = temp; } } } } int main(){ int i; int num[100],value[100],value1[100],value2[100]; int n; int small = 0,big = 0,smallnum=0,bignum=0; scanf("%d", &n); for (i = 0; i < n; i++){ scanf("%d %d %d", &num[i], &value1[i],&value2[i]); value[i] = value2[i] / value1[i]; } /*for (i = 0; i < n; i++){ printf("%d %d %d %d\n", num[i], value1[i], value2[i],value[i]); }*/ bubble(num, value,n);//从大到小冒泡排序 big = value[0]; small = value[n-1]; //printf("最小值:%d\n", small); //printf("最大值:%d\n", big); for (i = 0; i < n; i++){ if (value[i] - small < big - value[i]){ smallnum++; } else{ bignum++; } } printf("%d\n", bignum); for (i = 0; i < bignum; i++){ printf("%d\n", num[i]); } printf("%d\n", smallnum); for (i = smallnum-1; i < n; i++){ printf("%d\n", num[i]); } return 0; }描述
有一种细菌分为A、B两个亚种,它们的外在特征几乎完全相同,仅仅在繁殖能力上有显著差别,A亚种繁殖能力非常强,B亚种的繁殖能力很弱。在一次为时一个 小时的细菌繁殖实验中,实验员由于疏忽把细菌培养皿搞乱了,请你编写一个程序,根据实验结果,把两个亚种的培养皿重新分成两组。
输入
输入有多行,第一行为整数n(n≤100),表示有n个培养皿。
其余n行,每行有三个整数,分别代表培养皿编号,试验前细菌数量,试验后细菌数量。
输出
输出有多行:
第一行输出A亚种培养皿的数量,其后每行输出A亚种培养皿的编号,按繁殖率升序排列。
然后一行输出B亚种培养皿的数量,其后每行输出B亚种培养皿的编号,也按繁殖率升序排列。
样例输入
5 1 10 3456 2 10 5644 3 10 4566 4 20 234 5 20 232样例输出
3 1 3 2 2 5 4
相关文章推荐
- 细菌实验分组
- poj 细菌实验分组
- 细菌实验分组(C程序设计进阶第2周)
- 细菌实验分组(C程序设计进阶 第2周)
- poj 细菌实验分组
- OpenJudge计算概论-细菌实验分组
- POJ C程序设计进阶 编程题#5:细菌分组实验
- C语言实验——合法的C标识符
- 实验三(2) SQL查询(排序、集函数和分组子句的应用)
- C语言实验:输入任意一个年份和月份,输出该月份的公历日历
- C语言实验——逆置正整数
- C语言实验——计算表达式
- C语言实验——判断素数(循环结构)
- sql实验二:使用分组,排序,汇总
- C语言实验——打印菱形
- C语言实验——矩阵下三角元素之和
- C语言实验——圆周率
- C语言实验——打印数字图形
- 实验 2 用C语言编写简单程序
- C语言 递推与递归 数据结构实验之排序八:快速排序