实战训练1—统计相同的数
问题描述:
在一次实验中产生了n个数据,现在统计这n个数据中与指定数字m相同的个数,请编程实现。
输入格式:
输入共三行:第一行为一个整数n,表示整数序列的长度(n<=100);第二行为n个整数,整数之间以一个空格分开;第三行包含一个整数,表示指定的数字m。
输出格式:
输出一行包含一个整数,表示为n个数中与m相同的数的个数。
输入输出样例:
输入样例1 | 输出样例1 |
5 2 3 1 4 3 3 | 2 |
输入样例2 | 输出样例2 |
8 1 2 3 1 3 2 1 1 1 | 4 |
问题分析:
根据题意,定义长度为n的最大值100的int类型数组来存储整数序列,然后输入整数序列的实际长度n,使用循环输入长度为n的整数并存储到数组中;然后输入m,使用循环依次遍历数组元素,判断数组元素是否和m相等,相等则修改一样的个数变量,具体程序代码如下:
#include<bits/stdc++.h>
using namespace std;
int main() {
const int MAXLEN=100;//定义常变量MAXLEN表示数组的长度,并初始化为100表示最大个数
int a[MAXLEN];//定义长度为MAXLEN的int类型数组
int n;//定义整数序列的个数变量n
scanf("%d",&n);//输入n的值
for(int i=0; i<n; i++) { //输入数组元素
scanf("%d",&a[i]);
}
int m,sum=0;//定义m以及与m一样的数的个数变量sum(并初始化为0)
cin>>m;//输入指定的数m
for(int i=0; i<n; i++) {//从下标为0开始到n-1
if(a[i] == m) {//判断a[i]的值是否和m相等
sum++;//两者相等则个数加1
}
}
printf("%d\n",sum);//输出一样的个数sum
return 0;
}
实战训练2—粗心的小明
问题描述:
粗心的小明不小心将一组数据的存放顺序弄反了,你可以帮他恢复吗?例如,原来的顺序为 8,6,5,4,1,修改为 1,4,5,6,8。
输入格式:
输入共两行:第一行为一个整数n,表示整数序列的长度(1<n<100);第二行为n个整数,整数之间以一个空格分开。
输出格式:
输出一行包含n个整数,表示逆序后数组的整数,每两个整数之间用空格分隔。
输入输出样例:
输入样例1 | 输出样例1 |
5 8 6 5 4 1 | 1 4 5 6 8 |
输入样例2 | 输出样例2 |
6 1 1 2 5 8 9 | 9 8 5 2 1 1 |
问题分析:
根据题意,定义长度为n的最大值100的int类型数组来存储整数序列,然后输入整数序列的长度n,然后使用循环为数组每个元素依次赋值,最后从最后一个元素开始到开始,依次输出每个数组元素,具体程序代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
const int MAXLEN=100;//定义常变量MAXLEN表示数组的长度,并初始化为100表示最大个数
int a[MAXLEN];//定义长度为MAXLEN的int类型数组
int n;//定义整数序列的个数变量n
scanf("%d",&n);//输入n的值
for(int i=0;i<n;i++){//使用循环从下标为0到n-1依次输入数组元素
scanf("%d",&a[i]);
}
for(int i=n-1;i>=0;i--){//使用循环从下标为n-到0依次输出数组元素
printf("%d ",a[i]);
}
return 0;
}
实战训练3—鸡尾酒疗法
问题描述:
鸡尾酒疗法,指“高效抗逆转录病毒治疗”。人们在鸡尾酒疗法的基础上又提出了很多种改进的疗法。为了验证这些治疗方法是否在疗效上比鸡尾酒疗法更好,可用通过临床对照实验的方式进行。假设鸡尾酒疗法的有效率为 x,新疗法的有效率为y;如果y−x>5%,则效果更好,如果 x−y>5%,则效果更差,否则称为效果差不多。
下面给出n组临床对照实验,其中第一组采用鸡尾酒疗法,其他 n−1 组为各种不同的改进疗法。请写程序判定各种改进疗法效果如何。
输入格式:
输入共n+1行:第一行为一个整数n(1<n<=20),表示鸡尾酒疗法和新疗法的总个数;接下来的n行,每行包含两个整数,第一个整数是临床实验的总病例数(小于等于10000 ),第二个疗效有效的病例数,这n行数据中,第一行为鸡尾酒疗法的数据,其余各行为各种改进疗法的数据。
输出格式:
输出共n-1行,分别表示对应改进疗法的效果:如果效果更好,输出beter;如果效果更差,输出worse;否则输出same。。
输入输出样例:
输入样例1 | 输出样例1 |
5 125 99 112 89 145 99 99 97 123 98 | same worse better same |
问题分析:
根据题意,要比较鸡尾酒疗法和剩余n-1种新疗法进行比较,并将比较结果输出,首先定义一个长度为20的整数数组,数组的取值为0、1、2,其中0表示新疗法的效果更好,1表示两种疗法效果差不多,2表示新疗法的效果更差,然后先先求解出鸡尾酒疗法的效果,接着使用循环去输入剩余n-1种新疗法的病例数和有效病例数,求出该新疗法的效果,并和鸡尾酒疗法比较存入数组中,最后使用循环依次去遍历数组中的整数值,并转换成对应的单词输出,具体程序代码如下:
#include <bits/stdc++.h>
using namespace std;
int main() {
const int MAXLEN=20;//定义常变量MAXLEN表示数组的长度,并初始化为20表示最大个数
int a[MAXLEN]; //定义长度为MAXLEN的int类型数组,表示哪个疗法好
int n;//定义整数变量n
scanf("%d",&n); //输入n的值
int count, yxcount;// 临床实验的总病例数变量count和有效的病例数变量yxcount
scanf("%d%d",&count,&yxcount);//输入鸡尾酒疗法的count和yxcount
double x = yxcount * 1.0 / count;//定义鸡尾酒疗法的效果变量x,并求解x的值
double y; //定义新疗法的效果变量y
for (int i = 0; i < n - 1; ++i){//接下来依次输入n-1个新疗法的数据
scanf("%d%d",&count,&yxcount);//输入新疗法的count和yxcount
y = yxcount * 1.0 / count;//求解新疗法的效果y
if (y > x && (y - x > 0.05)){//如果新疗法效果y比鸡尾酒疗法效果x大,并且多余0.05
a[i] = 0;//0:表示新疗法更好
}else if (y < x && (x-y > 0.05)){//如果新疗法效果y比鸡尾酒疗法效果x小,并且少于0.05
a[i] = 2;//2:表示鸡尾酒疗法好
}else{
a[i] = 1;//1:表示两者效果差不多
}
}
for (int i = 0; i < n - 1; ++i){//然后输出n-1种新疗法和鸡尾酒疗法的效果
if (a[i] == 0){
printf("better\n");
}else if (a[i] == 1){
printf("same\n");
}else{
printf("worse\n");
}
}
return 0;
}
标签:信息学,新疗法,鸡尾酒,int,信奥赛,疗法,备考,数组,输入
From: https://blog.csdn.net/ALISHENGYA/article/details/145187121