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;
    }
  1. 小贴士: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是一个素数,堪称当时世界上“已知最大素数”的一个记录。

    本题要求编写程序,对任一正整数nn<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——循环结构的更多相关文章

  1. C语言博客作业02——循环结构

    1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 本周学习了循环结构,在之前学习分支结构的时候就涉及到了循环结构中的for循环,这周的又新学了while和do- ...

  2. C博客作业02—循环结构

    0.展示PTA总分(0----2) 截图展示2次题目集:单循环和嵌套循环题目集,排名分数截图. 1.本章学习总结(2分) 1.1 学习内容总结 整理这两周学习主要知识点,并能对每个知识点介绍简单案例或 ...

  3. C语言第三次博客作业---单层循环结构

    一.PTA实验作业 题目1 1.实验代码 int N,i; //N为用户数,i记录循环变量 double height; //height放身高 char sex; //sex放性别F为女,M为男 s ...

  4. c语言1博客作业02

    c语言1博客作业02 这个作业属于哪个课程 C语言程序设计 这个作业的要求在哪 [作业要求](https://edu.cnblogs.com/campus/zswxy/SE2019-2/homewor ...

  5. C语言I-2019博客作业02

    这个作业属于哪个课程 C语言程序设计I 这个作业要求在哪里 C语言I-2019秋作业02 我在这个课程的目标是 学会编程及提问的技能 这个作业在哪个具体目标方面帮助我实现目标 深入了解C语言程序设计中 ...

  6. C语言I博客作业02

    这个作业属于那个课程  C语言程序设计I 这个作业要求在哪 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/8656 我在这个课程的目标 ...

  7. 本次作业统一标题:C语言I博客作业02

    这个作业属于哪个课程 C语言程序设计1 这作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/8655 我在这个课程的目标是 ...

  8. c 语言I博客作业02

    这个作业属于哪个课程 C语言程序设计1 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2019-2/homework/8687 我在这个课程的目标是 ...

  9. C语言Ⅰ博客作业02

    1. 这个作业属于哪个课程 C语言程序设计Ⅰ 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/8656 我在这个课程 ...

随机推荐

  1. springBoot入门到精通-Simple

    https://blog.csdn.net/zhiyikeji/article/details/84346189 1.springBoot前期准备 1.环境配置:jdk,maven 2.编写工具:st ...

  2. CentOS7.6离线安装docker

    2019/10/24,docker 摘要:CentOS 7.6中离线安装docker 18.06.3以及docker-compose 1.24.1 在线安装可参照 文档 所需环境 1.CentOS 7 ...

  3. 又一个秘密如何让浏览器访问最新的js,css等外部引用

    在引用文件末尾加上一个参数,让浏览器知道这个文件跟上一个文件是不同的,让浏览器去服务器重新加载最新的,例如:<script type="text/javascript" sr ...

  4. 【转载】C#中List集合中Last和LastOrDefault方法的差别

    在C#的List集合操作中,Last方法和LastOrDefault方法都会用来查找集合中最后一个符合条件的元素对象,但Last和LastOrDefault方法还是有差别的,建议使用LastOrDef ...

  5. centos7 install mysql5.7.27

    1.yum 安装 wget yum install wget 2.下载MySQL 的yum repo wget https://repo.mysql.com//mysql57-community-re ...

  6. Hive性能优化【严格模式、join优化、Map-Side聚合、JVM重用】

    一.严格模式 通过设置以下参数开启严格模式: >set hive.mapred.mode=strict;[默认为nonstrict非严格模式] 查询限制: 1.对于分区表,必须添加where查询 ...

  7. 使用python模拟实现KNN算法

    一.KNN简介 1.KNN算法也称为K邻近算法,是数据挖掘分类技术之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表. 2.KNN算法的核心思想是如果一个样本 ...

  8. IDEA修改选取单词颜色和搜索结果的颜色

    一.修改选取单词颜色 下图所示,选取Father后背景为淡蓝色,其它相同单词背景为灰色,根本看不清楚 修改配置 1.修改选取文本背景色为78C9FF 2.修改相同文本背景色为78C9FF,包括iden ...

  9. xtrbackup备份,及恢复数据

    模拟定时任务周日备份数据,周一数据变化,周一crontab定时任务增量备份,周二数据变化,周二crontabl增量备份,然后有人删库,我们进行恢复数据 模拟crontab 里的定时任务周日全备 [ro ...

  10. ansible中的docker_container模块

    docker_container模块 1.docker_container模块主要是用于ansible-playbook操作docker容器的一个模块,使用该模块可以实现批量创建docker容器 An ...