实验三四中一些的题目难度较大或者易错点明显常见,在此列举重点题型。
(最难的几个题并没有在此篇展示,此篇为部分重点题。)

7-16 念数字
分数 10
作者 翁恺
单位 浙江大学
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:

0: ling
1: yi
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu
输入格式:
输入在一行中给出一个整数,如:1234。

提示:整数包括负数、零和正数。

输出格式:
在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如
yi er san si。

输入样例:
-600
输出样例:
fu liu ling ling
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

此题虽然在循环部分出现,
但用数组做会降低很多难度,
那么在这,还是提供一种循环的做法。
#include <stdio.h>
int count(int x);
int main()
{int n;if(scanf("%d",&n)){};//输入要读的整数int c;if(n<0){printf("fu ");n=-n;}//当输入的整数为负数时,取负数的相反数c=count(n);for(int i=0;c>0;i++)//循环的控制条件为c>0,之前写成了n>0{int m;m=n/c;//取出该整数的第一位数字n%=c;switch (m){ case 0:printf("ling");break;case 1:printf("yi");break;case 2:printf("er");break;case 3:printf("san");break;case 4:printf("si");break;case 5:printf("wu");break;case 6:printf("liu");break;case 7:printf("qi");break;case 8:printf("ba");break;case 9:printf("jiu");}if(c>9)//判断点,控制最后输出没有空格{printf(" ");}c/=10;}return 0;
}
int count(int x)//例如-400,则返回值为100
{int cnt=1;while(x>9){x/=10;cnt*=10;}return cnt;
}

7-19 猜数字游戏
分数 15
作者 C课程组
单位 浙江大学
猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。

输入格式:
输入第一行中给出两个不超过100的正整数,分别是游戏机产生的随机数、以及猜测的最大次数N。最后每行给出一个用户的输入,直到出现负数为止。

输出格式:
在一行中输出每次猜测相应的结果,直到输出猜对的结果或“Game Over”则结束。

输入样例:
58 4
70
50
56
58
60
-2
输出样例:
Too big
Too small
Too small
Good Guess!
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

此题较为复杂,
要注意各种条件,只要将各种条件考虑清楚,
就可得出正确解法。
同时,嵌套是要仔细,
不要因为编译问题导致出错。
#include <stdio.h>
int main()
{int i,a, b, N;scanf("%d %d", &a, &N);for(i = 1; i <= N; i++){scanf("%d", &b);if (b <= 0){printf("Game Over");return 0;}   else if (b < a){printf("Too small\n");}else if (b > a){printf("Too big\n");}else if (a == b && i == 1){printf("Bingo!");return 0;}else if (a == b && i <= 3&&i!=1){printf("Lucky You!");return 0;}else if(a == b && i > 3){printf("Good Guess!");return 0;}else if(i == N && a != b){printf("Game Over");return 0;}}printf("Game Over");
}

7-7 求Fibonacci(斐波那契)数列的n项和
分数 10
作者 张潇月
单位 临沂大学
已知斐波那契数列有如下特点:第1,2两个数为1,1。从第三个数开始,该数是其前面两个数之和。即该数列为1,1,2,3,5,8,13,……。本题要求编写程序,计算该数列的前n项和。

输入格式:
键盘输入n(2≤n≤40)。

输出格式:
sum=S,S为斐波那契数列的前n项和。

输入样例:
10
输出样例:
sum=143
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

此题难度在本篇题解中难度最低,记录此题的目的是要提醒一处细节,
在赋值时要注意是从左到右赋值还是从右到左,
给下一变量赋值时,注意位置。
#include <stdio.h>
int main()
{int a1,a2,a3,n,i,s=0;a1 = 1;a2 = 1;scanf("%d",&n);for (i = 3; i <= n; i++){a3 = a1 + a2;s = s + a3;a1 = a2;a2 = a3;}printf("sum=%d",2+s);
return 0;
}

7-8 sdut-C语言实验- 简单计算
分数 12
作者 马新娟
单位 山东理工大学
接受从键盘输入的N个整数,输出其中的最大值、最小值和平均值(平均值为整除的商)。

输入格式:
第一行一个正整数N(N<=100);
第二行有N个用空格隔开的整数Ti (1 <= i <= N, 0 <= Ti <= 10000000)

输出格式:
三个有空格隔开的整数分别为最大值、最小值和平均值,其中平均值为整除的商。

输入样例:
在这里给出一组输入。例如:

5
1 2 3 5 4
输出样例:
在这里给出相应的输出。例如:

5 1 3
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

此题难度不大,注意当i==1时,
对max和min的复制,然后在接下来的循环比较。
注意对sum的初始化赋值。
#include<stdio.h>
int main()
{int sum=0, max,min,i,n,N;scanf("%d",&N);for(i=1;i<=N;i++){scanf("%d",&n);if(i==1){max=n;min=n;}else if(i!=1){if(n>max){max=n;}if(n<min){min=n;}}sum=sum+n;}printf("%d %d %d",max,min,sum/N);return 0;
}

7-9 sdut- C语言实验-判断素数(循环结构)
分数 15
作者 马新娟
单位 山东理工大学
从键盘上输入任意一个正整数,然后判断该数是否为素数。
如果是素数则输出"This is a prime."
否则输出“This is not a prime.”

输入格式:
输入任意一个正整数n(1 <= n <= 1000000)。

输出格式:
判断n是否为素数,并输出判断结果:
如果n是素数则输出"This is a prime."
否则输出“This is not a prime.”

特别提醒:请注意对1的判定,1不是素数。

输入样例:
3
输出样例:
在这里给出相应的输出。例如:

This is a prime.
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

此篇题解共有三篇素数题,此题为铺垫,为最简单一类。
#include<stdio.h>
int main()
{int i, n, a, t = 0;scanf("%d", &n);if (n <= 1){printf("This is not a prime.");}else if (n > 1){for (i = 1; i <= n; i++){if (n % i == 0){t++;}}if (t == 2){printf("This is a prime.");}else if (t != 2){printf("This is not a prime.");}}return 0;
}

7-15 sdut-C语言实验-完美的素数
分数 14
作者 马新娟
单位 山东理工大学
素数又称质数。指一个大于1的自然数,除了1和此整数自身外,不能被其他自然数整除的数。我们定义:如果一个素数是完美的素数,当且仅当它的每一位数字之和也是一个素数。现在给你一个正整数,你需要写个程序判断一下这个数按照上面的定义是不是一个完美的素数。

输入格式:
输入包含多组测试数据。
每组测试数据只包含一个正整数 n (1 < n <= 10^6)。

输出格式:
对于每组测试数据,如果 n 是完美的素数,输出“YES”,否则输出“NO”(输出均不含引号)。

输入样例:
在这里给出一组输入。例如:

11
13
输出样例:
在这里给出相应的输出。例如:

YES
NO
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

本题为判断完美素数,注意sum等值,
要在while语句里赋值,
在while前赋值会导致答案的错误,
因为sum在每一次while语句执行时都应该为初始值0;
#include<stdio.h>
int main()
{int t,x,y,i,n,j,a,b,sum;while(scanf("%d",&n)!=EOF){t=n;a=0;b=0;sum=0;for(i=1;i<=n;i++){if(n%i==0){a++;}}if(a==2){while(t>0){x=t%10;t=t/10;sum=sum+x;}for(j=1;j<=n;j++){if(sum%j==0){b++;}}if(b==2)printf("YES\n");else printf("NO\n");}else if(a!=2){printf("NO\n");}}
return  0;
}

7-17 sdut-C语言实验-求某个范围内的所有素数
分数 12
作者 马新娟
单位 山东理工大学
求小于n的所有素数,按照每行10个显示出来。

输入格式:
输入整数n(n<10000)。

输出格式:
每行10个依次输出n以内(不包括n)的所有素数。如果一行有10个素数,每个素数后面都有一个空格,包括每行最后一个素数。

输入样例:
100
输出样例:
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

本题较上题难度有所增加,
此题在每一次符合条件的循环过后都记一次数,
然后在计数达到10时换行即可。
#include <stdio.h>
int main()
{int i, n, j,a=0;scanf("%d",&n);for (i = 2; i <= n; i++){if (i == 2){printf("%d ", i);a++;}else{for (j = 2; j < i; j++){if (i % j == 0){break;}}if (j == i){printf("%d ",i);a++;if (a % 10 == 0){printf("\n");}}}}return 0;
}

7-18 水仙花数
分数 20
作者 徐镜春
单位 浙江大学
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1
3
+5
3
+3
3
。 本题要求编写程序,计算所有N位水仙花数。

输入格式:
输入在一行中给出一个正整数N(3≤N≤7)。

输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。

输入样例:
3
输出样例:
153
370
371
407
代码长度限制
16 KB
时间限制
2500 ms
内存限制
64 MB

此题需要定义函数,如果调用库函数,可能导致运行超时(易错点)。
#include <stdio.h>
int pow(int m,int n)
{   int j,s=1;
for(j=1;j<=n;j++)
{s=s*m;
}
return s;
}int main()
{int x,n,i,a,b;scanf("%d",&n);for(x=pow(10,n-1);x<pow(10,n);x++){ int b = x,sum=0;for (i = 1; i <= n; i++){a = b % 10;b = b / 10;sum = sum + pow(a, n);}if (sum == x){printf("%d\n",x);}}return 0;}

7-21 打印九九口诀表
分数 15
作者 徐镜春
单位 浙江大学
下面是一个完整的下三角九九口诀表:

11=1
1
2=2 22=4
1
3=3 23=6 33=9
14=4 24=8 34=12 44=16
15=5 25=10 35=15 45=20 55=25
1
6=6 26=12 36=18 46=24 56=30 66=36
1
7=7 27=14 37=21 47=28 57=35 67=42 77=49
18=8 28=16 38=24 48=32 58=40 68=48 78=56 88=64
19=9 29=18 39=27 49=36 59=45 69=54 79=63 89=72 99=81
本题要求对任意给定的一位正整数N,输出从1
1到N*N的部分口诀表。

输入格式:
输入在一行中给出一个正整数N(1≤N≤9)。

输出格式:
输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。

输入样例:
4
输出样例:
11=1
1
2=2 22=4
1
3=3 23=6 33=9
14=4 24=8 34=12 44=16
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

此题看似复杂,实则为简单的循环嵌套,
要注意题目要求的输出格式
#include <stdio.h>
int main()
{int n, i, j;scanf("%d",&n);for (i = 1; i <= n; i++){for (j = 1; j <= i; j++){printf("%d*%d=%-4d", j, i, j * i);}printf("\n");}return 0;
}

7-22 找完数
分数 20
作者 陈建海
单位 浙江大学
所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。

输入格式:
输入在一行中给出2个正整数m和n(1<m≤n≤10000),中间以空格分隔。

输出格式:
逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + … + 因子k”,其中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。

输入样例:
2 30
输出样例:
6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

此题逻辑要清晰,对完数要有清晰的认识。注意flag的判断。
#include <stdio.h>
#include <math.h>
int main(void)
{int s,j, m, n, i, x;int flag = 0;scanf("%d %d", &m, &n);for (i = m; i <= n; i++){    s=0;for (j = 1; j < i; j++){if (i % j == 0){s = s + j;}}   if (s == i){flag = 1;printf("%d = ", s);for (x = 1; x < s; x++){if (s % x == 0){if (x ==  s / 2)printf("%d", x);elseprintf("%d + ", x);}}printf("\n");}}if (flag == 0)printf("None");return 0;
}

山东理工大学pta实验三四重点题目再现。相关推荐

  1. 2022山东理工大学pta程序设计---实验五(一维数组)代码

    7-1 sdut- C语言实验-最值 有一个长度为n的整数序列,其中最大值和最小值不会出现在序列的第一和最后一个位置. 请写一个程序,把序列中的最小值与第一个数交换,最大值与最后一个数交换.输出转换好 ...

  2. 2022山东理工大学pta程序设计---实验七(函数)题解

    6-1 sdut-C语言实验-计算组合数 分数 10 作者 马新娟 单位 山东理工大学 计算组合数.C(n,m),表示从n个数中选择m个的组合数. 计算公式如下: 若:m=0,C(n,m)=1 否则, ...

  3. 2022山东理工大学pta程序设计---实验六(二维数组)题解

    7-1 sdut-C语言实验-求一个3*3矩阵对角线元素之和 分数 12 作者 马新娟 单位 山东理工大学 给定一个33的矩阵,请你求出对角线元素之和. 输入格式: 按照行优先顺序输入一个33矩阵,每 ...

  4. 山东理工大学pta答案 C语言,山东理工大学高分子化学题库附答案.docx

    山东理工大学高分子化学题库附答案 一? 选择题 1. 聚乙烯醇的单体是(_____C___) A.乙烯醇 B.乙醛 C.醋酸乙烯酯 D.乙酸乙酯 从结构角度看聚乙烯醇的单体乙烯醇CH2=CH-OH,? ...

  5. 山东理工大学pta程序设计---实验七函数 知识点+题目

    定义函数 返回类型 函数名(参数1, 参数2-) { //函数体 (返回值, 除了void类型都要有返回值, 跟返回类型对应) ; } int main() {return 0; //向操作系统返回0 ...

  6. 2022山东理工大学pta程序设计---实验五(一维数组)详解

    ·## 7-1 sdut- C语言实验-最值 有一个长度为n的整数序列,其中最大值和最小值不会出现在序列的第一和最后一个位置. 请写一个程序,把序列中的最小值与第一个数交换,最大值与最后一个数交换.输 ...

  7. 知到山东理工c语言答案,山东理工大学C语言实验.doc

    山东理工大学C语言实验 山东理工大学 C语言实验指导[答案] 实验一? 顺序结构程序设计(2学时) //姓名:*** //班级:*** //学号:*** //参考测试数据:输入:0 0 180 输出: ...

  8. 山东理工大学单元测试2重现

    本次单元测试虽然较第一次机测难度增加,但整体难度与平时pta练习相比,难度并不大,一些细节同学们在考试时容易忽略,本次八道题,可关注第四题的简便公式,以及第七题的注意事项和第八题运行超时的解决办法. ...

  9. 山东理工大学-2022级-程序设计基础I-顺序结构

    A - C语言实验-- Hello World! (printf练习) 语法点: c语言的程序的基本框架: #include <stdio.h> //包含头文件<stdio.h> ...

  10. 山东理工大学计算机学院学号,计算机组成原理课程设计--山东理工大学计算机学院...

    <计算机组成原理课程设计--山东理工大学计算机学院>由会员分享,可在线阅读,更多相关<计算机组成原理课程设计--山东理工大学计算机学院(14页珍藏版)>请在人人文库网上搜索. ...

最新文章

  1. javascript 事件冒泡 和 冒泡事件阻止
  2. PMCAFF高端俱乐部首次集结,最顶级产品人的私密俱乐部!
  3. [导入]javascript总结
  4. 又不能起床python好学吗
  5. Hadoop概念学习系列之Hadoop HA进一步深入(二十八)
  6. python实现翻转给定列表中的元素
  7. system_Class类说明文档
  8. 号码被标记,各平台取消方法
  9. C# 软件开发岗面试经验总结
  10. 小爱同学app安卓版_小爱同学app下载安卓版|语音助手下载_最火软件站
  11. 淘宝十年数据和轶事整理
  12. web渗透信息收集知识总结
  13. nginx简单配置多个域名转向多个tomcat
  14. 保利威视播放器函数接口汇总
  15. 读书笔记:移动的帝国_日本移动互联网兴衰启示录
  16. K8S学习之污点容忍
  17. This application’s application-identifier entitlement does not match that of the installed applicati
  18. 阵列天线方向图合成(线阵、面阵)-附Python代码
  19. CE修改器还能这样用?解除某度网盘限速
  20. Streamsets相关资料汇总

热门文章

  1. Hadoop完全分布式搭建全过程
  2. 软件体系结构期末考试总结
  3. 智鼎在线测评是测什么_(详解)人才测评工具和人才测评方法
  4. NVIDIA驱动安装过程中的 'nvidia-drm' appears问题
  5. html中的abbr有什么作用,html中关于abbr标签的使用以及作用的详解
  6. 【电子学会】2019年12月图形化四级 -- 随机选T恤
  7. 南京邮电大学网络攻防训练平台逆向第三题PY交易
  8. 了解函数式编程背后的属性:单子(Monad)
  9. 2021年南京天印中学高考成绩查询,2021年南京重点高中名单及排名,南京高中高考成绩排名榜...
  10. java web 实训报告_javaweb实训报告总结.doc