c/c++零基础坐牢第七天
c/c++从入门到入土(7)
开始时间:2023-04-23 23:06:22
结束时间:2023-04-24 00:41:25
前言:今天的调休生活过得怎么样呢,哈哈哈哈。蓝桥杯省赛成绩出来了,大家是不是像我一样的省四呢?咳咳,早知道今年的国赛在北京比,我肯定会拆掉那台电脑吧!初学者,咱们多练习练习循环结构。
实验二 C循环结构程序设计
第一题 应用循环结构输出ASCII码表
一.问题描述
请应用循环结构编写算法输出码值为33~127的ASCII码码值、字符对照表。 输入格式: 无输入。 输出格式: 以以下格式输出码值为33~127的ASCII码码值、字符对照表,一个字符一行。 < ASCII码 >-->< 字符 > 输入样例: 输出样例: 33-->! 34-->" 35--># 36-->$ 37-->% 38-->& 39-->' 40-->( 41-->) 42-->* 43-->+ 44-->, 45-->- 46-->. 47-->/ 48-->0 49-->1 50-->2 51-->3 52-->4 53-->5 54-->6 55-->7 56-->8 57-->9 58-->: 59-->; 60-->< 61-->= 62-->> 63-->? 64-->@ 65-->A 66-->B 67-->C 68-->D 69-->E 70-->F 71-->G 72-->H 73-->I 74-->J 75-->K 76-->L 77-->M 78-->N 79-->O 80-->P 81-->Q 82-->R 83-->S 84-->T 85-->U 86-->V 87-->W 88-->X 89-->Y 90-->Z 91-->[ 92-->\ 93-->] 94-->^ 95-->_ 96-->` 97-->a 98-->b 99-->c 100-->d 101-->e 102-->f 103-->g 104-->h 105-->i 106-->j 107-->k 108-->l 109-->m 110-->n 111-->o 112-->p 113-->q 114-->r 115-->s 116-->t 117-->u 118-->v 119-->w 120-->x 121-->y 122-->z 123-->{ 124-->| 125-->} 126-->~ 127--> 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB
二.设计思路
无输入,只用在循环结构内分别输出从33到127的基本整型和字符型。
三.流程图
四.源代码
#include<stdio.h> int main() { int i; for(i=33;i<=127;i++) { printf("%d-->%c\n",i,i); } return 0; }
第二题 应用循环结构验证欧拉素数公式
一.问题描述
请应用循环结构编写算法验证欧拉公式 图片1.png 是否是一个在n=-39~40范围内计算素数的通项公式。 输入格式: 无输入。 输出格式: 以以下形式输出每个an的判断情况,其中Y表示对于当前项n来说,欧拉公式成立;N表示对于当前项n来说,欧拉公式不成立。 < n >----< an >----< Y/N > 输入样例: 输出样例: -39----1601----Y -38----1523----Y -37----1447----Y -36----1373----Y -35----1301----Y -34----1231----Y -33----1163----Y -32----1097----Y -31----1033----Y -30----971----Y -29----911----Y -28----853----Y -27----797----Y -26----743----Y -25----691----Y -24----641----Y -23----593----Y -22----547----Y -21----503----Y -20----461----Y -19----421----Y -18----383----Y -17----347----Y -16----313----Y -15----281----Y -14----251----Y -13----223----Y -12----197----Y -11----173----Y -10----151----Y -9----131----Y -8----113----Y -7----97----Y -6----83----Y -5----71----Y -4----61----Y -3----53----Y -2----47----Y -1----43----Y 0----41----Y 1----41----Y 2----43----Y 3----47----Y 4----53----Y 5----61----Y 6----71----Y 7----83----Y 8----97----Y 9----113----Y 10----131----Y 11----151----Y 12----173----Y 13----197----Y 14----223----Y 15----251----Y 16----281----Y 17----313----Y 18----347----Y 19----383----Y 20----421----Y 21----461----Y 22----503----Y 23----547----Y 24----593----Y 25----641----Y 26----691----Y 27----743----Y 28----797----Y 29----853----Y 30----911----Y 31----971----Y 32----1033----Y 33----1097----Y 34----1163----Y 35----1231----Y 36----1301----Y 37----1373----Y 38----1447----Y 39----1523----Y 40----1601----Y 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB
二.设计思路
无输入,嵌套循环,在大循环中,按照格式输出n和an,判断an是否为素数,从2开始到更号an一个个判断若是an的合数则为N,很明显全是Y,直接输出Y就行了。
三.流程图
四.源代码
#include<stdio.h> #include<math.h> int main(){ int i,n,k; for(i=-39;i<=40;i++) { n=i*i-i+41; printf("%d----%d----",i,n); for(k=2;k<=sqrt(n);k++) { if(n/k!=0) printf("Y\n"); break; } } return 0; }
第三题 应用循环结构输出菱型字符图形
一.问题描述
请应用循环结构编写算法实现如下图所示的n(n为正奇数)行菱型字符图形的输出。例如n=7,ch='*'时: * *** ***** ******* ***** *** * 输入格式: 输入在一行中给出字符ch和行数n(n为正奇数)的值,以空格为间隔。 输出格式: 对每一组输入的字符ch和行数n,显示n行由字符ch组成的菱形字符图形。 输入样例1: * 5 输出样例1: * *** ***** *** * 输入样例2: * 6 输出样例2: error data 输入样例3: # 3 输出样例3: # ### # 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB
二.设计思路
这题是所有题中最难的一个,有输入为三角形层数和符号。我的思路是首先输出上半三角形,然后输出下半三角形。问题的难点是输出几行,空格如何输出,每一层几个符号怎么判断,以及什么时候输出换行。第一个问题输出几行,已知总共需要输出一个奇数行,上半则为总行数加一除2,以总行数为嵌套循环大循环循环次数,第二循环输出空格,举例总输出行数为5,第一行输出两个空格和一个星号,第二行第二行输出一个空格和三个星号,第三行不输出空格,输出五个星号,总结规律,空格数为总循环数减已循环数,符号数为两倍已循环次数减一。下半三角也一样。
三.流程图
四.源代码
#include<stdio.h> int main() { int i,j,k; int a,n; char ch; int b,c,d; scanf("%c %d",&ch,&n); if(n%2!=0) { a=(n+1)/2; for(i=1;i<=a;i++) { for(k=1;k<=a-i;k++) { printf(" "); } for(j=1;j<=2*i-1;j++) { printf("%c",ch); } printf("\n"); } for(b=1;b<=a-1;b++) { for(d=1;d<=b;d++) { printf(" "); } for(c=n-2*b;c>=1;c=c-1) { printf("%c",ch); } printf("\n"); } } if(n%2==0) printf("error data"); return 0; }
第四题 数列求和
一.问题描述
求S=a+aa+aaa+…+a…a之值,其中a是一个数字,n表示a的位数,例如a=2,n=5时:S=2+22+222+2222+22222。 输入格式: 输入在一行中给出数字a和n的值。 输出格式: 对每一组输入的a和n,在一行中输出S的值。 输入样例1: 2 5 输出样例1: S=24690 输入样例2: a 0 输出样例2: error data 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB
二.设计思路
有输入,首先要考虑第一个输入是不是一个正常的自然数,其次第二个位置的输入必须大于零。第二个数为已知的大循环次数,然后考虑2,22,222,2222这种数如何出现,即前一个数乘十加一个基本数,然后加起来就行了。
三.流程图
四.源代码
#include<stdio.h> int main(){ int a,n,i=0,s=0,t=0; scanf("%d %d",&a,&n); if(n!=0&&a>0&&a<9) { while(i<n) { t=t+a; s=s+t; a=a*10; i++; } printf("S=%d",s); } else printf("error data"); return 0; }
第五题 寻找完数
(谭浩强,《C程序设计(第四版)》,清华大学出版社:第五章,P141,第9题) 一个正整数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程序找出不大于N(N>=0)的所有完数。 输入格式: 输入在一行中给出1个整数N(N>=0)。 输出格式: 对每一个输入的N,在一行中输出不大于N的所有完数,每个数输出格式为宽度5位且右对齐,如没有完数则输出none。 输入样例1: 1000 输出样例1: 6 28 496 输入样例2: 5 输出样例2: none 输入样例3: 0 输出样例3: error data 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB
二.设计思路
首先有输入,你输的不是正整数会先报错,其次,我们知道最小完数为6,那么小于六都出不来完数,再其次如何找最简单的方法肯定便是一个个找,符合条件输出(域宽为5右对齐)。怎么设置这个条件呢,在大循环内部,找循环次数(从2开始到目标数)的素数和,选将结构控制是否相等,相等输出。
三.流程图
四.源代码
#include<stdio.h> int main(){ int m,s,i,n; scanf("%d",&n); if(n==0) printf("error data"); for(m=2;m<n;m++) { s=0; for(i=1;i<m;i++) if((m%i)==0)s=s+i; if(s==m) { printf("%5d",m); } } if(n<=5&&n>0) printf("none"); return 0; }
(谭浩强,《C程序设计(第四版)》,清华大学出版社:第五章,P141,第15题) 用二分法求下面方程在(-10,10)之间的根:
输入格式: 无输入。 输出格式: 在一行中输出(-10,10)间方程的根的值,如没有根则输出no root。 输入样例: 输出样例: root=2.0 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB
二.设计思路
首先要知道二分法是怎么运行的,两个端点分别有俩函数值(一正一副),取中点,若中点函数值为正覆盖函数值为正的端点,若函数值为负覆盖函数值为负的端点。循环直到区间达到精度要求为止。
三.流程图
四.源代码
#include<stdio.h> #include<math.h> int main() { float x0,x1=-10,x2=10,f0,f1,f2; f1=x1*((2*x1-4)*x1+3)-6; f2=x2*((2*x2-4)*x2+3)-6; do{ x0=(x1+x2)/2; f0=x0*((2*x0-4)*x0+3)-6; if((f0*f1)<0) { x2=x0; f2=f0; }else{ x1=x0; f1=f0; } }while(fabs(f0)>=1e-5); printf("root=%.1f",x0); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)