阶段一上机考试错题分析
R7-6 打印沙漏
题目:
分析:
(1)每行输出的数相当与 an=2n-1;总数相当于一个上三角加一个下三角再减去1;上三角=下三角=n+(n-1)*n/2*2;即总数=2n*n-1。
(2)题目中要求相邻两行符号数差2,中间对齐——>在每一行前面输出空格数为对应三角形所在行数-1。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include<stdio.h> int main() { int i,kong,n=0,N,fuhao; char op; scanf ( "%d " ,&N); scanf ( "%c" ,&op); while (N>=2*n*n-1){ n++;} if (2*n*n-1>N){ //让n回到 达到离开循环条件前的值 n--;} for (i=1;i<=n;i++) //先输入上三角 { for (kong=1;kong<i;kong++) //输出所需个数的空格 printf ( " " ); for (fuhao=1;fuhao<=2*n-2*i+1;fuhao++) //输出所需个数的符号 printf ( "%c" ,op); printf ( "\n" ); //行末换行 } for (i=n-1;i>=1;i--) //基本与上个循环基本相同,只是修改循环起始计数数和判断条件,且不用输出下三角的尖尖 { for (kong=1;kong<i;kong++) printf ( " " ); for (fuhao=1;fuhao<=2*n-2*i+1;fuhao++) printf ( "%c" ,op); printf ( "\n" ); } printf ( "%d" ,N-2*n*n+1); //输出剩余的符号数量 return 0; } |
解题的难点:
(1)找出循环输出的条件——>重点是要找出规律
(2)让每行靠中对齐——每换一行变换两个数,在上三角中则每换一行就比上一行多出一个空格。
7-7 打印沙漏
分析:
(1)题目要求:测试数据有多组,处理到文件尾。——意味着没有循环的范围,由此引出对于EOF的使用
对于题目并没有给定输入多少次的情况,只说输入到文件结尾的情况
(2)其他部分与上面那题差不多。
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include<stdio.h> int main() { int n,i,kong,fuhao; while ( scanf ( "%d" ,&n)!=EOF){ for (i=1;i<=n;i++) { for (kong=1;kong<i;kong++) printf ( " " ); for (fuhao=1;fuhao<=2*n-2*i+1;fuhao++) printf ( "*" ); printf ( "\n" ); } for (i=n-1;i>=1;i--) { for (kong=1;kong<i;kong++) printf ( " " ); for (fuhao=1;fuhao<=2*n-2*i+1;fuhao++) printf ( "*" ); printf ( "\n" ); } } return 0; } |
——————————————————————————————————————————————————————————————————————————————————————————
做题就像上楼,不能还没有搭好梯子,就想着一步飞上去,不然容易掉下来。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了