c语言博客作业02--循环结构

循环结构

1.本章学习总结

1.1 思维导图

1474675-20181027230709676-1757101883.png

1.2 本章学习体会及代码量学习体会

1.2.1 学习体会

  这两周学习了循环结构,现如今已经学了三种循环语句,for语句,while语句,do while语句;for语句适用于已知循环次数;while语句适用于未知循环次数,先判断再循环,然而for可以表达的while语句也可以;do while也使用于未知循环次数,先循环再判断。
  上周还了解了伪代码,运用代码中夹杂着一些文字来解释,可以让不懂代码的人读懂代码。
  还学习到break和continue,break在循环中的作用是直接结束循环,而continue是跳过语句继续循环。

1.2.2 代码累计

1474675-20181027185007124-1652589890.png

2.PTA总分

2.1截图PTA中循环结构2次题目集的排名得分

1474675-20181027185028429-491134312.png
1474675-20181027185044785-1478880988.png

2.2 我的总分:

总分:290分

3.PTA实验作业

3.1 PTA题目1

乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?

3.1.1 算法分析

定义  时间:time   兔子:rabbit   乌龟:tortoise   标志flag=0,i,j=0,k=0;
    输入时间
for i=1 to time do
  if flag==1 then //设置兔子睡觉30分钟,乌龟继续行走
     k++;tortoise+=3;
     if k==30 then//时间累加到30结束
        flag=0
     end if
   end if  
   else  do
     j++;rabbit+=9;tortoise+=3;
     if j==10 then//设置判断时间
        if rabbit>tortoise then
       flag=1;k=0;//令k归零,避免使if语句成立时出错
        end if
        j=0;
      end if
if tortoise==rabbit  then  printf("-_- %d\n",rabbit); end if
else if tortoise>rabbit then printf("@_@ %d\n",tortoise); end if
else then printf("^_^ %d\n",rabbit);end else//进行三种比较

3.1.2 代码截图

1474675-20181027191838652-991462960.png

3.1.3 测试数据

1474675-20181027192458584-1338437778.png

3.1.4 PTA提交列表及说明

1474675-20181027193342773-1749385095.png

Q1:一开始没有考虑兔子睡觉中获胜和兔子不足10分钟获胜
A1:后来设置了一个判断来存放兔子睡觉时乌龟走多少,这样既能运用循环来叠加时间,而且不用在循环中自己加30分钟

3.2 PTA题目2

将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?

3.2.1 算法分析

定义 零钱数:money,5分的个数:fen5=1,
2分的个数:fen2=1,1分的个数:fen1=1,
1分最大个数:max1,2分最大个数max2,总个数:total,种数:count=0;
 输入零钱数
  max1=money/5;//计算在这个money的情况下至多可以有多少个5
  for fen5=money to 1 do
    max2=(money-5*fen5)/2;//在money减去fen5个5后,至多可以有多少个2
    fen2=max2;
    while fen2 to 1
      fen1=money-5*fen5-2*fen2;//得到fen1的个数
      if fen1 >= 1 then
        total=fen5+fen2+fen1;
        printf("fen5:%d, fen2:%d, fen1:%d, total:%d\n",fen5,fen2,fen1,total);
        count++;//计算有多少种情况
      end if
      fen2--;
    end while
   end for
   printf("count = %d",count);

3.2.2 代码

1474675-20181027210755297-798311174.png

3.2.3 测试数据

1474675-20181027212221339-1996953882.png

3.2.4 PTA提交列表及说明

1474675-20181027212710109-1611334134.png
Q1:出现格式错误
A1:检查发现输出的格式与题目不懂
A2:选这题原因是作为两个循环和三个循环的区别,能用两个,就不用三个

3.3 PTA题目3

在商业和科学研究中,人们经常需要对数据进行分析并将结果以直方图的形式显示出来,这会大大增加这些数据的直观性,也便于数据的分析与对比。下面以顾客对餐饮服务打分为例,输入一个正整数repeat (0<repeat<10),做repeat次下列运算:

输入一个正整数n(1≤n≤20),表示有n个学生被邀请来给自助餐厅的食品和服务质量打分,分数划分为1~5这5个等级(1表示最低分,5表示最高分),试统计调查结果,并用*打印出如下形式的统计结果直方图。

3.3.1 算法分析

定义 次数:repeat=0,个数:num=0,循环控制变量:i=1,j=1;
定义 grade,g1=0,g2=0,g3=0,g4=0,g5=0,g;
    输入repeat的值
    while(i<=repeat) do
    //设置大循环来规定有几个直方图
        输入num
        for j=1 to num do
        //用内循环来计算每个数的次数
            输入grade
            if grade==1 then g1++; end if
            else if(grade==2)   g2++;
            else if(grade==3) g3++;
            else if(grade==4) g4++;
            else if(grade==5) g5++; 
       printf("1:");
     for g=1to g1 do
     printf("*");
     printf("\n");
      接着与上面相同

3.2.2 代码

1474675-20181027215021896-1796239716.png
1474675-20181027215046460-1156102066.png

3.3.3 测试数据

1474675-20181027215155215-257541446.png
1474675-20181027215228142-181431853.png

3.3.4 PTA提交列表及说明

1474675-20181027223629027-249844974.png
Q1:一开始不知到num要输入多次
A1:问了同学后,就把输入num放在循环内
Q2:助教的要求简化代码
A2:通过简化输出来简化了代码

4.代码互评

4.1 代码截图

同学:
1474675-20181027225351192-246348561.png
自己:
1474675-20181027225504927-101888324.png
1474675-20181027225514840-1376398330.png

1,二者均为该题的解法,该同学的解法更为简便。
2,虽然解法都是找规律,我的解法是以中间行为标志来解题,而该同学则是以上半部分对称到下半部分的想法解题。

转载于:https://www.cnblogs.com/B-hai/p/9862716.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值