C博客作业02——循环结构
0.展示PTA总分
单循环题目集
嵌套循环题目集
1.本章学习总结
1.1学习内容总结
(a)while语句
while(表达式)
{
循环体语句;
}
执行流程:当表达式的值为“真”时,循环执行,直到表达式的值为“假”,循环终止并继续进行while的下一条语句。简单案例:求奇数和
(b)for语句改while语句
表达式1;
while(表达式2)
{
for的循环体语句;
表达式3;
}
(c)do-while语句
min=a;
while(grade>=0)
{
if(grade<min)
{
min=grade;
}
}
执行流程:第一次进入循环时,首先执行循环体语句,然后再检查循环控制条件,即计算表达式,若值为“真”,继续循环,直到表达式的值为“假”,循环结束,执行do-while的下一条语句。简单案例:找出最小值
(abc)比较for循环,while循环,和do-while循环的区别。
1)for语句和while语句都是循环前判断条件,只有条件满足时才会进入循环,如果一开始条件就不满足,则循环一次都不执行,但是do-while循环至少会执行一次循环体。
2)一般情况下,如果题目指定了循环次数,用for语句更加清晰,当然也可以用while语句,而如果没有指定循环次数,而是由某一项的值来控制循环,用while循环可能更合适。
(d)break语句与continue语句的应用
1)break语句和continue语句一般用于循环语句中,不过,break语句还可以用在switch-case结构中。在循环语句中,一旦执行了break语句,循环提前结束,不再执行循环体中位于其后的其它语句。break语句应该和if语句配合使用,即条件满足时,才执行break跳出循环;否则,若break无条件执行,都会结束循环,有时需要区分循环的结束条件。
2)continue语句的作用时跳过循环体中continue后面的语句,继续下一次的循环。
简单案例:
(e)求最大值最小值
小贴士:
min初值:1.输入的第一个数作为初值。2.比输入数都大的数。max初值:1.输入的第二个数作为初值。2.比输入数都小的数。
(f)二进制转十进制
#include <stdio.h>
int main()
{
char ch;
int num=0;
while ((ch = getchar()) != '\n')
{
num = num * 2 + ch - '0';
}
printf("%d", num);
return 0;
}
- 小贴士:num=num乘2+ch-‘0’是一个很好用的工具,其实换个思路理解,如果我们换成 num=num乘10+ch-‘0’,则是我们对拿到的数依次进位,就能比较好的理解这个。
1.2本章学习体会
- 在本章节里,我们开始写的代码会比一开始更长,更复杂一点,这时候,就要求我们对某些经常用到的代码结构足够的熟悉,对某些部分代码的特定功能要滚瓜烂熟,并且要学会优秀代码的操作过程,这样可以大大减少我们花费的时间,提高程序的效率,在上一次的c语言上机课时,由于我对设计求素数函数这个不能理解,一直被卡住很久,然后就很心塞塞。
- 这两周的代码量
这两周代码量 |
---|
816 |
- 计算这两周的代码量,并没有达到目标,现实很骨感,加上自己写一道题花费的时间有点多,所以总体量会偏少,愿自己以后以后能够孰能生巧,并且认真看题目,真的好惨,如果因为没认真看题目在那边死纠结。T_T
2.PTA实验作业
2.1题目名:7-2梅森数
题目:形如2n−1的素数称为梅森数(Mersenne Number)。例如22−1=3、23−1=7都是梅森数。1722年,双目失明的瑞士数学大师欧拉证明了231−1=2147483647是一个素数,堪称当时世界上“已知最大素数”的一个记录。
本题要求编写程序,对任一正整数n(n<20),输出所有不超过2的n次方−1的梅森数。
2.1.1伪代码
a)定义变量n存放正整数,
定义end为不超过2的n次方的最大梅森数,
定义digit为梅森数。
b)定义函数Digit(double n)来求梅森数,
定义函数Isprime()来判断是不是素数。
c)
输入成绩;
if(n==1)
没有梅森数;
end if
if(n==2)
输出梅森数3;
end if
for i=2 to end do
调用函数Digit(i)输出梅森数
if(调用Isprime()函数来判断梅森数是否为素数)
如果是,则输出梅森数;
end if
end for
2.1.2代码截图
2.1.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
1 | None | 没有梅森数 |
2 | 3 | 只有一个梅森数 |
6 | 3 7 13 | 答案正确 |
20 | 3 7 31 127 8191 131071 524287 | 答案正确 |
2.1.4PTA提交列表及说明
提交列表说明
1.部分正确:对最小整数缺少判断。
2.部分正确:一开始是digit<=end,则会多输出一个梅森数,于是把等号去掉。
3.部分正确:发现等号去掉以后,对n=2不成立,于是n=2另外分析。
2.2 题目名:水仙花数
- 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写程序,计算所有N位水仙花数。
2.2.1伪代码
a)定义变量N表示几位数
定义term表示N位数的最小值
定义value1表示用来存储帧数分解以后的各个数
定义value2存储这个数的个位数
定义value3存储各个数N次方以后的值
定义sum用来存储这个数各个数的立方和。
b)
定义Mypow()函数用来求N位数的最小值,
定义mypow()用来定义整数的各个数的N次方和。
c)
输入N;
求N位数的最小值term
for i=term to term*10 do
do
{ 取各位:value1=value2%10;
去个位:value2=value2/10;
算N次方和:value3=mypow(value1,N);
sum对各个数N次方和求和
if sum和i相等
输出水仙花数
对sum重新赋值,进行下一次求和
end if
}
end for
2.2.2代码截图
2.2.3造测试数据
输入数据 | 输出数据 | 说明 | |
---|---|---|---|
3 | 153 370 371 407 | 数据正常 | |
2 | 没有 | 异常数据 | |
7 | 1741725 4210818 9800817 9926315 | 数据正常 |
2.2.4PTA提交列表及说明
- 提交列表说明:
1.答案错误:一开始没有看清题目,所以只是以为是做个的那道题,求三位数的水仙花数,于是提交,答案错误。
2.答案错误:后来发现了,又开始纠结于如果N等于四,等于五,怎么求把每个数分开,那个时候自己脑袋一定是装了浆糊,所以没转过来,在那边纠结了很久,于是错误了很多次,后来才发现只要取余就可以。
3.编译错误:复制过去scanf没改过来。
4.格式错误:最后我纠结的地方在格式,因为我用鼠标弄输出样例,发现前三个数后面有空格,最后一个数没有,于是在那边想了很久,不知道怎么解决,因为对于不同的N,它的水仙花数数量也不是固定的,无法通过限制条件来解决,后来发现是我鼠标弄得方式不对头,于是出现了那种情况,后来就可以了。
2.3题目名:图形打印
- 题目要求读入菱形起始字母和菱形的高度,然后输出空心字符菱形。所谓“空心菱形”是指:每行由两端为字母、中间为空格的字符串构成,每行的字符串中心对齐;上半部分相邻两行字符串长度差2,且字母从给定的起始字母逐一递增;下半部分与上半部分对称。
2.3.1伪代码
1.a)
定义字符型变量ch来存储输入的字母,
定义n来表示输入的行数,
定义mid=(n+1)/2表示中间一行,
定义ch1表示每一行都换成不同的字母。
2.b)
输入ch和n;
算出中间行mid;
for i=1 to n do
for j=1 to j=fabs(mid-i)do
输出空格;
for k=1 to k=n-2*fabs(mid-i))
如果时第一个和最后一个,则输出字母
如果不是,则输出空格;
最后换行;
end for
2.3.2代码截图
2.3.3造测试数据
2.3.4PTA提交列表及说明
- 列表说明:
虽然是一次通过,那是因为刚刚看完超星的视频,可是当我自己再去打一遍时,仍然发现了问题,在vs里,如果没有再定义一个ch1,直接把表达式放到printf,那样是输出不了东西的,因为里面有函数,所以需要在外面在定义一个变量,同时,自己打的时候忘记了换行。
3.代码互评
3.1题目名:龟兔赛跑
- 乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?
同学代码截图
自己代码截图
二者比较
1.我们思考的方式不同,同学的代码是在每十分钟时,如果条件允许,对乌龟的路程加上90,时间加上30。
2.她的代码设计的变量更少,并且其实更容易被人理解,不用绕比较远的路,更加直接。
3.2 题目名:二进制转十进制
- 输入一组二进制字符,输出其对应的十进制数。当输入回车键时,输入结束。若输入非二进制字符,输出
error input!
同学代码截图
自己代码截图
二者比较
1.在读入二进制数时,我们通常想的是把数一个一个从末尾取出来,或者定义一个大的数组用数组存取来,但是同学的代码用getchar()尽管是从头开始存储,但是下面的num=num*2+ch-‘0‘可以直接转为十进制,不用考虑从后面还是前面取。
2.我觉得同学的代码更简单方便,并且效率也会比我的高,因为我用了pow()函数,我觉得这种代码应该是我要学习的。
C博客作业02——循环结构的更多相关文章
- C语言博客作业02——循环结构
1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 本周学习了循环结构,在之前学习分支结构的时候就涉及到了循环结构中的for循环,这周的又新学了while和do- ...
- C博客作业02—循环结构
0.展示PTA总分(0----2) 截图展示2次题目集:单循环和嵌套循环题目集,排名分数截图. 1.本章学习总结(2分) 1.1 学习内容总结 整理这两周学习主要知识点,并能对每个知识点介绍简单案例或 ...
- C语言第三次博客作业---单层循环结构
一.PTA实验作业 题目1 1.实验代码 int N,i; //N为用户数,i记录循环变量 double height; //height放身高 char sex; //sex放性别F为女,M为男 s ...
- c语言1博客作业02
c语言1博客作业02 这个作业属于哪个课程 C语言程序设计 这个作业的要求在哪 [作业要求](https://edu.cnblogs.com/campus/zswxy/SE2019-2/homewor ...
- C语言I-2019博客作业02
这个作业属于哪个课程 C语言程序设计I 这个作业要求在哪里 C语言I-2019秋作业02 我在这个课程的目标是 学会编程及提问的技能 这个作业在哪个具体目标方面帮助我实现目标 深入了解C语言程序设计中 ...
- C语言I博客作业02
这个作业属于那个课程 C语言程序设计I 这个作业要求在哪 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/8656 我在这个课程的目标 ...
- 本次作业统一标题:C语言I博客作业02
这个作业属于哪个课程 C语言程序设计1 这作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/8655 我在这个课程的目标是 ...
- c 语言I博客作业02
这个作业属于哪个课程 C语言程序设计1 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2019-2/homework/8687 我在这个课程的目标是 ...
- C语言Ⅰ博客作业02
1. 这个作业属于哪个课程 C语言程序设计Ⅰ 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/8656 我在这个课程 ...
随机推荐
- springBoot入门到精通-Simple
https://blog.csdn.net/zhiyikeji/article/details/84346189 1.springBoot前期准备 1.环境配置:jdk,maven 2.编写工具:st ...
- CentOS7.6离线安装docker
2019/10/24,docker 摘要:CentOS 7.6中离线安装docker 18.06.3以及docker-compose 1.24.1 在线安装可参照 文档 所需环境 1.CentOS 7 ...
- 又一个秘密如何让浏览器访问最新的js,css等外部引用
在引用文件末尾加上一个参数,让浏览器知道这个文件跟上一个文件是不同的,让浏览器去服务器重新加载最新的,例如:<script type="text/javascript" sr ...
- 【转载】C#中List集合中Last和LastOrDefault方法的差别
在C#的List集合操作中,Last方法和LastOrDefault方法都会用来查找集合中最后一个符合条件的元素对象,但Last和LastOrDefault方法还是有差别的,建议使用LastOrDef ...
- centos7 install mysql5.7.27
1.yum 安装 wget yum install wget 2.下载MySQL 的yum repo wget https://repo.mysql.com//mysql57-community-re ...
- Hive性能优化【严格模式、join优化、Map-Side聚合、JVM重用】
一.严格模式 通过设置以下参数开启严格模式: >set hive.mapred.mode=strict;[默认为nonstrict非严格模式] 查询限制: 1.对于分区表,必须添加where查询 ...
- 使用python模拟实现KNN算法
一.KNN简介 1.KNN算法也称为K邻近算法,是数据挖掘分类技术之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表. 2.KNN算法的核心思想是如果一个样本 ...
- IDEA修改选取单词颜色和搜索结果的颜色
一.修改选取单词颜色 下图所示,选取Father后背景为淡蓝色,其它相同单词背景为灰色,根本看不清楚 修改配置 1.修改选取文本背景色为78C9FF 2.修改相同文本背景色为78C9FF,包括iden ...
- xtrbackup备份,及恢复数据
模拟定时任务周日备份数据,周一数据变化,周一crontab定时任务增量备份,周二数据变化,周二crontabl增量备份,然后有人删库,我们进行恢复数据 模拟crontab 里的定时任务周日全备 [ro ...
- ansible中的docker_container模块
docker_container模块 1.docker_container模块主要是用于ansible-playbook操作docker容器的一个模块,使用该模块可以实现批量创建docker容器 An ...