2022 年 6 月青少年软编等考 C 语言一级真题解析
目录T1. 倒序输出思路分析T2. 平方差计算思路分析T3. 最小的数思路分析T4. 计算成绩优秀的人数思路分析T5. 开关灯思路分析T1. 倒序输出题目链接SOJ D1166依次输入4 44个整数a aa、b bb、c cc、d dd将他们倒序输出即依次输出d dd、c cc、b bb、a aa这4 44个数。时间限制1 s内存限制64 MB输入一行4 44个整数a aa、b bb、c cc、d dd以空格分隔。0 a , b , c , d 10 8 0 a,b,c,d 10^80a,b,c,d108。输出一行4 44个整数d dd、c cc、b bb、a aa整数之间以一个空格分隔。样例输入1 2 3 4样例输出4 3 2 1思路分析此题考查基本输入输出属于入门题。按照题目要求进行输入输出即可。/* * Name: T1.cpp * Problem: 倒序输出 * Author: Teacher Gao. * DateTime: 2024/03/04 22:36 */#includeiostreamusingnamespacestd;intmain(){inta,b,c,d;cinabcd;coutd c b aendl;return0;}T2. 平方差计算题目链接SOJ D1167给定的两个整数a , b a, ba,b他们的平方差结果为a 2 − b 2 a^2-b^2a2−b2可以化简为( a b ) ( a − b ) (a b)(a-b)(ab)(a−b)。例如5 55和4 44的平方差为5 2 − 4 2 ( 5 4 ) ( 5 − 4 ) 9 5^2-4^2(54)(5-4)952−42(54)(5−4)9。现给定两个整数求他们的平方差。时间限制1 s内存限制64 MB输入一行两个整数a aa、b bb以空格分隔。0 b a 10 4 0 b a 10^40ba104。输出输出a aa和b bb的平方差。样例输入5 4样例输出9思路分析此题考查算术运算属于入门题。此题只需按照题目中给出的公式进行计算输出即可题目中有两个公式使用任意一个皆可。/* * Name: T2.cpp * Problem: 平方差计算 * Author: Teacher Gao. * DateTime: 2024/03/04 22:37 */#includeiostreamusingnamespacestd;intmain(){inta,b;cinab;cout(ab)*(a-b);return0;}T3. 最小的数题目链接SOJ D1168依次输入3 33个整数a aa、b bb、c cc将a aa、b bb、c cc中的最小值输出。时间限制1 s内存限制64 MB输入一行3 33个整数a aa、b bb、c cc以空格分隔。0 a , b , c 10 8 0 a,b,c 10^80a,b,c108。输出1 11个整数即3 33个整数的最小值。样例输入2 3 2样例输出2思路分析此题考察分支结构比较大小属于入门题。此题可以用分支嵌套解决是一种容易想到的做法。若a b则继续比较b和c否则就比较a和c。此题也可以用级联if语句结合逻辑运算符求解也比较容易想到。若a b并且a c那么a就是最小值若b a并且b c那么b就是最小值以上两种情况都不符合的情况下c就是最小值。此题还可以连用两次单分支执行打擂台这种做法不太容易想到。可以假设a是最小值擂主然后用b和a作比较若b小于ab战胜了擂主则用b更新ab成为新擂主。对c采取同样的处理方式即可。详见参考代码。/* * Name: T3.cpp * Problem: 最小的数 * Author: Teacher Gao. * DateTime: 2024/03/04 22:40 */#includeiostreamusingnamespacestd;intmain(){inta,b,c;cinabc;if(ba){ab;}if(ca){ac;}coutaendl;return0;}T4. 计算成绩优秀的人数题目链接SOJ D1169现有一个班一门课程考试的分数请统计其中成绩为优秀的人数。成绩为优秀的要求是分数大于等于85 8585。时间限制1 s内存限制64 MB输入第一行1 11个整数n nn表示分数的个数。0 n ≤ 100 0 n ≤ 1000n≤100。第二行n nn个正整数表示每一个分数每个分数小于等于100 100100。输出输出一个整数表示成绩为优秀的人数。样例输入10 85 70 99 90 78 55 100 62 88 84样例输出5思路分析此题考查循环结构与分支结构属于入门题。此题需要依次判断输入的每个数x。若x大于或等于85 8585则答案累加1 11。/* * Name: T4.cpp * Problem: 计算成绩优秀的人数 * Author: Teacher Gao. * DateTime: 2024/03/04 22:56 */#includeiostreamusingnamespacestd;intmain(){intn,x;cinn;inttot0;for(inti1;in;i){cinx;if(x85){tot;}}couttotendl;return0;}T5. 开关灯题目链接SOJ D1170假设有n nn盏灯n nn为不大于5000 50005000的正整数从1 11到n nn按顺序依次编号初始时全部处于开启状态有m mm个人m mm为不大于n nn的正整数也从1 11到m mm依次编号。第一个人1 11号将灯全部关闭第二个人2 22号将编号为2 22的倍数的灯打开第三个人3 33号将编号为3 33的倍数的灯做相反处理即将打开的灯关闭将关闭的灯打开。依照编号递增顺序以后的人都和3 33号一样将凡是自己编号倍数的灯做相反处理。请问当第m mm个人操作之后哪几盏灯是关闭的按从小到大输出其编号其间用逗号间隔。时间限制1 s内存限制64 MB输入输入正整数n nn和m mm以单个空格隔开。输出顺次输出关闭的灯的编号其间用逗号间隔。样例输入10 10样例输出1,4,9思路分析此题考查数组标记法属于基础题。思路与2021 20212021年6 66月份考试的 T5 一致可以参考 2021 年 6 月青少年软编等考 C 语言一级真题解析中的 T5。需要注意的是此题输出的是与原始状态相反的灯的编号。此外两个输出的整数之间需要输出一个逗号这里也可以采用标记法这个技巧。将输出看作是先输出一个逗号再输出一个整数于是我们只需要将第一个逗号处理掉就可以了。具体来说可以在输出前设置一个标记flag 1输出时检测该标记是否为1 11。若是则将flag赋值为0 00否则输出一个逗号。当然我们还可以采用一种更简单的方式来处理那就是将输出的第1 11个数单独放在循环之前进行输出这样循环内部就只需要从第2 22个数开始输出每次输出时先输出逗号,再输出数字即可。根据题目中的数据范围可以确定第1 11个被输出的数字一定是1因为这个开关只会被第1 11个人按一次。虽然这种方式的通用性比不上前面的标记法但代码确实简单。参考代码仍然以更具通用性的标记法为例至于第二种方法大家可以自行尝试。/* * Name: T5.cpp * Problem: 开关灯 * Author: Teacher Gao. * DateTime: 2024/03/04 20:50 */#includeiostreamusingnamespacestd;intmain(){intn,m;boola[5005]{0};cinnm;// 枚举人的编号for(intj1;jm;j){// 枚举灯的编号for(intij;in;ij){a[i]!a[i];}}boolflag1;for(inti1;in;i){if(a[i]){if(flag){flag0;}else{cout,;}couti;}}return0;}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2456971.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!