C语言程序设计实验课参考答案(实验六:循环结构1)
实验六 循环结构1
1. 多位整数逆转
说明
给定一个多位数n(n<10^9),请输出其各位数字逆转后的整数,输出要求去掉前导0
输入输出格式及样例
输入数据(一个正整数):
输出数据(逆转后的各位数字结果,去掉前导0)
参考答案
1 |
|
2.计算总分
说明
期末考试终于结束了!数学老师在统计全班数学总分,因为人数比较多,他觉得这件事情交给计算机来做比较方便。你能帮老师解决这个问题吗?
输入输出格式及样例
输入数据(输入两行, 第一行为整数n(1≤n<100),表示参加这次考试的人数; 第二行是这n个学生的成绩,相邻两个数之间用单个空格隔开。所有成绩均为 0 到 100 之间的整数。)
5
85 78 90 99 60
输出数据(输出一个整数,即全班数学总分)
412
参考答案
1 |
|
3. 输出满足条件的数
说明
请按顺序输出 n 个数中,能够同时被6 和 10 整除的数。
输入输出格式及样例
输入数据(第一行输入一个正整数 n(1<n≤1000)。 第二行连续输入n 个整数,均在int 型范围内。):
5
2 60 7 30 9
输出数据(按输入顺序依次输出可以同时被6 和10 整除的数,并用一个空格隔开):
60 30
参考答案
1 |
|
4. 偶数求和
说明
输入 n 个整数,求出其中所有偶数的和。
输入输出格式及样例
输入数据(输入第一行一个一个整数 n(1≤n≤10^5 ) 表示数的个数。接下来一行 n 个 int 范围内的整数。):
5
1 4 2 7 8
输出数据(一个整数,表示这些数的和):
14
参考答案
1 |
|
5. 求平均年龄
说明
班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。
输入输出格式及样例
输入数据(第一行有一个整数n(1≤n≤100),表示学生的人数。其后n行每行有1个整数,表示每个学生的年龄,取值为15到25。):
2
18
17
输出数据(输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。):
17.50
参考答案
1 |
|
6. 区间和
说明
输入两个正整数s,t(−10^4 ≤s≤t≤10^4 ),请求出s+(s+1)+(s+2)+⋯+t 的和。
输入输出格式及样例
| 数据1 | 数据2 | |
|---|---|---|
| 输入数据(两个整数s,t) | 1 5 |
-10 10 |
| 输出数据(输出和) | 15 |
0 |
参考答案
1 |
|
7. 三角形
说明
最近小明在书上看到如下图的直角三角形,小明想用代码打印出来,但他不会,你能帮帮他吗?
1 | * |
输入输出格式及样例
输入数据(给定一个n,代表要画出n行的直角三角形,(0<n≤30)):
4
输出数据(若该生恰好有一门课不及格,输出1;否则输出0):
*
**
***
****
思路
不确定行数,我们要用循环输出每一行
不确定列数,我们要用循环输出一行中的每一列
本题需要两层循环嵌套,输出应该逐行输出,所以外层循环表示行,内层循环表示列
参考答案
1 |
|
8. 和为k的数
说明
输入三个整数 n,m,k(1≤n<m≤1000000,1≤k≤50),请你从小到大输出区间[n,m] 里所有位之和恰好等于k 的整数。
输入输出格式及样例
输入数据(三个正整数n,m,k,含义如上)
输出数据(若干个符合条件的整数,中间用一个空格隔开;如果没有符合条件的整数,则输出 none)
| 数据1 | 数据2 | 数据3 | |
|---|---|---|---|
| 输入 | 2 20 5 |
30 50 7 |
30 50 2 |
| 输出 | 5 14 |
34 43 |
none |
参考答案
1 |
|
9. 小 J 的命运
说明
“分分分,学生的命根……”,小 J 对此深有体会!
每次考试成绩出来,只要比上一次考的分数高,小 J 就会受到妈妈的表扬,奖励一瓶“涨芝士”酸奶;相反,如果比上次分数低,则会受到“热烈的鞭笞”,奖励“爱の爆肉”一份!而如果分数与上次相同,则平安无事!
其实,小 J 的水平基本上变化不大,但是每次试卷的难度却参差不齐,分高分低完全取决于试卷的难度系数。难度系数较高的试卷,小 J 考的分数一定较低,相同难度系数时,分数也相同。
现在,班主任李老师已经将本学期要测试的试卷准备好了,请你通过试卷难度系数,分析一下小 J 在本学期即将挨揍的次数,以及受到表扬的次数。
每学期的第一场测试,无论成绩如何,都既不会受表扬,也不会挨揍。
输入输出格式及样例
输入数据(第一行一个正整数n(0<n≤1000),第二行连续 x(0<x≤100),按顺序表示每次测试的难度系数。):
输出数据(一行,包含 2 个整数,分别表示小 J 挨揍的次数,与受表扬的次数,中间用一个空格隔开。):
| 数据1 | 数据2 | |
|---|---|---|
| 输入 | 51 2 3 4 5 |
55 3 4 1 2 |
| 输出 | 4 0 |
2 2 |
参考答案
1 |
|
10.病毒检测
说明
目前科学家都在紧张忙碌地进行新冠病毒分离检测,我们如何识别一个病毒呢?C国发现一种病毒的特征,它会隐藏在一个基因序列中,如果在序列中发现连续的5个递增的数,都既是 6 的倍数,又是 10 的倍数,那么这个基因中就检测出了X1Y1病毒!
聪明机智的你,请运用 C/C++ 或 Python 语言的 for循环,来帮助科学家们完成这项急迫艰巨的工作吧!
输入输出格式及样例
输入数据(第一行,输入一个正整数n,为基因序列的长度。(小于等于 1000),连续输入n个整数,为基因序列的数字。(小于 1000 的非负整数)):
输出数据(如果存在病毒,第一行输出 Yes,第二行一个整数,为该病毒的第一个数在序列中的位置;如果不存在病毒,直接输出 No):
| 数据1 | 数据2 | |
|---|---|---|
| 输入 | 81 2 3 4 5 6 7 8 |
101 4 6 0 60 90 120 150 9 10 |
| 输出 | No |
Yes4 |
参考答案
1 |
|
11. 整数的位数
说明
输入一个整数n(0≤n≤10^6 ),请求出它是几位数
输入输出格式及样例
输入数据(正整数n):
输出数据(n 的位数):
| 数据1 | 数据2 | |
|---|---|---|
| 输入 | 123 |
5001 |
| 输出 | 3 |
4 |
参考答案
1 |
|
12. 数字滑滑梯
说明
在学习编程的过程中,小 J 发现有一种求模运算的符号“%”,于是小 J 想到了一个让数字玩“滑滑梯”游戏的小程序。
例如输入:12345,则会依次输出:12345,23451,34512,45123,51234。
你也来写一个一起玩玩吧!
输入输出格式及样例
输入数据(一个正整数 n(0<n<2^31 ),任何位上都不为 0):
输出数据(输出这个数字“滑滑梯”的结果,每行输出一个):
| 数据1 | 数据2 | |
|---|---|---|
| 输入 | 5 |
123 |
| 输出 | 5 |
123231312 |
思路
123⇒23×10+123÷100⇒230+1⇒231。
其中 100 表示 123 的最高位是百位,那么,如何得到n 的最高位呢?
测试用例中有较大的数,2147483648,在执行位置调换时,会产生超过int取值范围的数,建议用数组进行处理。
参考答案
1 |
|
13. 判断素数
说明
输入一个整数 n,请你判断n 是否为素数。
输入输出格式及样例
输入数据(如果n 为素数,则输出 YES;否则输出 NO。):
输出数据(输出为一行,如果晶晶可以接受贝贝的邀请,输出”YES”;否则,输出”NO”):
| 数据1 | 数据2 | |
|---|---|---|
| 输入 | 0 |
5 |
| 输出 | NO |
YES |
思路
所有小于 2 的数,以及大于 2 的偶数,都不是素数;
2 是素数;
除了 2 以外,所有的素数都是奇数;
如果一个数不是素数,它的大于 1 的因数中,最小的因数的平方,一定不大于它自己。 例如:4 的最小不是 1 的因数为
2 ≤4;同样,10 也是。
参考答案
1 |
|
14. 寻找素数
说明
输入两个整数m,n(0≤m≤n≤10^7 ),请输出区间[m,n]内所有的素数。
输入输出格式及样例
输入数据(两个整数m,n(0≤m≤n≤10^7 ))
输出数据(从小到大输出区间[m,n]内所有的素数。如果这个区间内没有素数,输出none)
| 数据1 | 数据2 | 数据3 | 数据4 | |
|---|---|---|---|---|
| 输入 | 1 10 |
5 20 |
8 10 |
0 1 |
| 输出 | 2 3 5 7 |
5 7 11 13 17 19 |
none |
none |
提示
用例中,有个0-1000000的区间,执行会超时,参考上一题的思路,将明确不是素数的情况先排除掉,再进行循环
参考答案
1 |
|
15. 求阶乘
说明
利用for循环求n!的值。
提示,n!=1×2×…×n。
输入输出格式及样例
输入数据(输入一个正整数n,对于所有数据,1≤n≤20):4
输出数据(输出n!的值):24
思路
n>12时,n!将超出int的取值范围,所以使用double来存储这个阶乘的值,输出时%.f隐藏小数部分
参考答案
1 |
|
16. 求小数的某一位
说明
分数a/b化为小数后,小数点后第n位的数字是多少?
输入输出格式及样例
输入数据(三个正整数a,b,n,相邻两个数之间用单个空格隔开。0<a<b<100,1≤n≤10000。):
1 2 1
输出数据(一个数字):
5
思路
用例中,有个取154位小数位数字的,double小数的有效位只有6位,先除再取是取不到的。
从数学除法竖式的计算方式,每次不能整除时,用余数*10再除,得到商,来求得对应数位上的数字
参考答案
1 |
|