下载app 的网站 如何做,WordPress用户页面,公众平台官网登录入口,常州公司网站模板建站文章目录 前言一、查找“支撑数”二、数组元素的查找三、爬楼梯四、数字交换五、找高于平均分的人 前言
C基础-编程练习题和答案 一、查找“支撑数”
【试题描述】 在已知一组整数中#xff0c; 有这样一种数非常怪#xff0c; 它们不在第一个#xff0c; 也不在最后一个基础-编程练习题和答案 一、查找“支撑数”
【试题描述】 在已知一组整数中 有这样一种数非常怪 它们不在第一个 也不在最后一个 而且刚好都 比左边和右边相邻的数大 你能找到它们吗 【输入要求】 第一行为整数 m 表示输入的整数个数。 3≤ m ≤100 ) 第二行为 m 个整数。 【输出要求】 若干个支撑数 每行一个。 【输入样例】 14 1 3 2 4 1 5 3 9 7 10 8 23 85 43 【输出样例】 3 4 5 9 10 85
#include bits/stdc.h
using namespace std;
/*
在已知一组整数中,有这样一种数非常怪,它们不在第一个,也不在最后一个,而且刚好都比左边和右边相邻的数大,你能找到它们吗
*/
int main() { //定义变量mint m; cin m; // 输入整数的个数 if (m 3 || m 100) { cout 输入的整数个数不符合要求 endl; return 1; } //定义m个元素的数组int nums[m]; for (int i 0; i m; i) { cin nums[i]; // 输入整数 } // 遍历整数数组跳过第一个和最后一个元素for (int i 1; i m - 1; i) { if (nums[i] nums[i - 1] nums[i] nums[i 1]) { // 如果当前数比左右两边的数都大则是支撑数 cout nums[i]endl; } } return 0;
}
二、数组元素的查找
【试题描述】 给你 m 个整数 查找其中有无值为 x 的数 输出 x 一共有几个. 【输入要求】 第一行一个整数 m 数的个数 ( 0 ≤ m ≤ 100 ) 第二行 m 个整数空格隔开 ( 这些数在 0-999999 范围内 ) 第三行为要查找的数 x 【输出要求】 一个整数 表示 x 的个数。 【输入样例】 7 10 21 3 3 5 3 7 3 【输出样例】 3
代码如下
#include bits/stdc.husing namespace std;
/*** 给你 m 个整数 查找其中有无值为 x 的数 输出 x 一共有几个.* return */
int main() { int m; cin m; // 读取整数个数 // 创建一个大小为m的整数数组int nums[m];for (int i 0; i m; i) { cin nums[i]; // 读取每个整数 } int x; cin x; // 读取要查找的数x int count 0; // 初始化计数器 // 遍历整数数组 for(int i0;im;i){ if (nums[i] x) { // 如果找到与x相等的数 count; // 计数器加1 } } cout count endl; // 输出x的个数 return 0;
}三、爬楼梯
【试题描述】 有一段楼梯有 n 级台阶,规定每一步只能跨一级或两级,要登上第 m 级台阶有几种不同的走法? n1000 mn 【输入要求】 一行 两个正整数 n 和 m。 【输出要求】 一个整数 【输入样例】 10 4 【输出样例】 5
#include bits/stdc.husing namespace std;
/*
有一段楼梯有 n 级台阶,规定每一步只能跨一级或两级,要登上第 m 级台阶有几种不同的走法?
*/int main() { int n, m; cin n m; // 这里n是楼梯的总级数但根据题目要求我们只需要计算到达第m级台阶的方法数 if (m 2) { return m; } //定义m级台阶走法数组int dp[m];//一级台阶1种走法dp[0] 1; //二级台阶2种走法dp[1] 2; //第i级台阶走法第i-1级台阶走法第i-2级台阶走法for (int i 2; i m; i) { dp[i] dp[i - 1] dp[i - 2]; } //第 m 级台阶的走法数cout dp[m - 1] endl; return 0;
}四、数字交换
【试题描述】 有一组数设有 N 个 。 有 M 组操作,每组操作交换给定的两个数.编一程序输出经过 M 次 交换后的数组。 【输入要求】 第一行 两个数 N M不超过 20 个 第二行 N 个数 由空格分开 从第三行开始连续有 M 行 每行 2 个数字即 M 组数 。 以其中一行数字举例 比如 3 5 表示第三个数和第五个数交换。 【输出要求】 交换后的一行数中间用空格隔开 【输入样例】 16 2 3 6 11 45 23 70 67 34 26 89 90 15 56 50 20 10 3 5 13 15 【输出样例】 3 6 23 45 11 70 67 34 26 89 90 15 20 50 56 10
#include bits/stdc.husing namespace std;
/**有一组数设有 N 个,有 M 组操作,每组操作交换给定的两个数.编一程序输出经过 M 次交换后的数组。*/
int main() { int n, m; cin n m; // 读取数组长度和操作次数 //定义数组int nums[n]; for (int i 0; i n; i) { cin nums[i]; // 读取初始数组 } // 执行交换操作 for (int i 1; i m; i) { int index1, index2; cin index1 index2; // 读取需要交换的两个数的索引 index1index1-1;// 注意C中的数组索引是从0开始的所以要将输入的索引减1 // tmp用于交换的中间变量 交换两个数 int tmpnums[index1];nums[index1]nums[index2 - 1];nums[index2 - 1]tmp;} // 输出交换后的数组 for (int i 0; i n; i) { cout nums[i] ; } return 0;
}
五、找高于平均分的人
【试题描述】 全班 n 个同学的成绩需要按学号读入 请找出所有高于班级的平均同学。 【输入要求】 两行 第一行为一个正整数 n 第二行为 n 个实数 每个实数之间用一个空格分隔。 【输出要求】 一行 输出高于班平均的同学的学号 场宽为 10。 【输入样例】 5 92 97.5 93 87 89 输出样例 1 2 3
#include bits/stdc.husing namespace std;
/**全班 n 个同学的成绩需要按学号读入 请找出所有高于班级的平均同学。*/
int main() { int n; cin n; // 读取学生数量 double scores[n];//循环读取n个学生数量for (int i 0; i n; i) { cin scores[i]; // 读取第i个学生成绩 } double sum 0.0; for (int i 0; i n; i) { // 计算成绩总和 sum scores[i]; } // 计算平均成绩 double average sum / n; //cout平均分averageendl;for (int i 0; i n; i) { if (scores[i] average) { // 输出高于平均分的同学学号学号是从1开始的cout setw(10) (i 1) ; } } cout endl; // 输出结束后换行 return 0;
}