C语言博客作业--嵌套循环

一、PTA实验作业

题目一:7-4 换硬币

1. 本题PTA提交列表

1232486-20171110165047028-1235887920.png

2. 设计思路

  • 1.定义a,b,c分别放5分,2分,1分钱硬币的数量。定义count统计次数,x放输入的金额
  • 2.规定count的初值为0
  • 3.输入x的值
  • 4.用for语句列出所有的可能
  • 5.如果可能满足5a+2b+c==x执行步骤6,7
  • 6.输出5分,2分,1分及总共数量
  • 7.count加1
  • 8.输出count的值

3.本题调试过程碰到问题及解决办法

1232486-20171110170614044-250496406.png

  • 原本循环是从最小直接加到最大的可能,虽然能够输出但与题目不符。所以采用了减法使输出满足题目的要求。

题目2:梅森数

1.本题PTA提交列表

1232486-20171110171720778-723080393.png

2.设计思路

  • 1.定义i,n放输入的数,y,b
  • 2.输入n的值
  • 3.如果n<2,输出 None
  • 4.如果n>=2且n<20执行下列步骤
  • 5.b=2,如果b<=n执行步骤6,7,8,9
  • 6.y=pow(2,b)-1;
  • 7.i=2,如果i<=y/2执行步骤8,9
  • 8.如果y%i==0不输出
  • 9.如果i>y/2,输出y的值
  • 10.b加一,回到步骤5

3.本题调试过程碰到问题及解决办法

1232486-20171110184619528-74278187.png

原本的代码的输出以及调试没有什么问题都与题目一致,但一直是部分正确。通过给出的提示,然后再分析题目得出是自己少考虑了情况。通过添加修改终于全部正确。
正确代码及调试:
1232486-20171110185214544-1422898197.png

题目3:餐饮服务质量调查打分

1.本题PTA提交列表

1232486-20171110185539716-995630925.png

2.设计思路

  • 1.定义repeat,n放个数,i,a放打的成绩,count1,count2,count3,count4,count5分别放1,2,3,4,5的次数,u
  • 2.输入repeat的值
  • 3.规定u==1,如果u<=repeat执行以下步骤
  • 4.规定count1,count2,count3,count4,count5初值为0
  • 5.输入n的值
  • 6.规定i的初值为1,如果i<=n,执行步骤7,8,9,10,11,12,13
  • 7.输入a的值
  • 8.如果a的值为1,count1加1
  • 9.如果a的值为2,count2加1
  • 10.如果a的值为3,count3加1
  • 11.如果a的值为4,count4加1
  • 12.如果a的值为5,count5加1
  • 13.i加一,返回步骤6
  • 14.输出1: ,执行count1次循环输出* 后换行
  • 15.输出2: ,执行count2次循环输出* 后换行
  • 16.输出3: ,执行count3次循环输出* 后换行
  • 17.输出4: ,执行count4次循环输出* 后换行
  • 18.输出5: ,执行count5次循环输出* 后换行

3.本题调试过程碰到问题及解决办法

本题开始写的代码循环位置没有放好,虽然题目中测试的数据1可以正确输出,但repeat改为2及以上就错误了
错误代码用repeat==1调试没出现问题
1232486-20171110194833638-2005589505.png
后来经过排查调整位置使代码正确

二、同学代码结对互评

1.欧阳震霆

2.

#include<stdio.h>

int main(){
    int repeat,n,i,a,count1,count2,count3,count4,count5,u;
    scanf("%d\n",&repeat);
        for(u=1;u<=repeat;u++){
            count1=count2=count3=count4=count5=0;
            scanf("%d",&n);
         for(i=1;i<=n;i++){
            scanf("%d",&a);
            if(a==1)
            count1++;
            else if(a==2)
            count2++;
            else if(a==3)
            count3++;
            else if(a==4)
            count4++;
            else if(a==5)
            count5++;
         }
         printf("1:");
         for(i=1;i<=count1;i++){
         printf("*");
         }
         printf("\n2:");
         for(i=1;i<=count2;i++){
         printf("*");
         }
         printf("\n3:");
         for(i=1;i<=count3;i++){
            printf("*");
         }
         printf("\n4:");
         for(i=1;i<=count4;i++){
            printf("*");
         }
         printf("\n5:");
         for(i=1;i<=count5;i++){
            printf("*");    
         }
         printf("\n");
    }
    return 0;
}   我的代码
 #include<stdio.h>

int main()
{
    int repeat,n,i,j,grade,count1,count2,count3,count4,count5,m;
    scanf("%d",&repeat);
    if(repeat>0&&repeat<10){
    for(i=1;i<=repeat;i++){
        count1=count2=count3=count5=count4=0;
        scanf("%d",&n);
        if(n>=1&&n<=20){
        for(j=1;j<=n;j++){
            scanf("%d",&grade);
        switch(grade){
            case 1:count1++;break;
            case 2:count2++;break;
            case 3:count3++;break;
            case 4:count4++;break;
            case 5:count5++;break;
            default:break;
        } 
    }
    printf("1:");
    for(m=1;m<=count1;m++)
    printf("*");
    printf("\n");
    printf("2:");
    for(m=1;m<=count2;m++)
    printf("*");
    printf("\n");
    printf("3:");
    for(m=1;m<=count3;m++)
    printf("*");
    printf("\n");
    printf("4:");
    for(m=1;m<=count4;m++)
    printf("*");
    printf("\n");
    printf("5:");
    for(m=1;m<=count5;m++)
    printf("*");
    printf("\n");
        }
    
}
}
    return 0;
}   欧阳代码

3.代码分析:代码中的定义及输入阶段是差不多的,在统计分数的次数时用的方法不同。

我用的时基本的if-else语句,欧阳用的是switch语句。switch语句明显比较简单,if-else虽然
也易懂但所需的篇幅较大。后面我输出换行时与数字合并,看起来较为简洁。

三、截图本周题目集的PTA最后排名

1232486-20171110200940731-1048388684.png

本周学习总结

1.你学会了什么

  • 在循环中加入其他循环解决问题。期间也涉及到寻找一些变量间的关系从而解决问题。
  • 明白了代码在循环内外的差别,这方面要仔细去观察
  • 了解到函数中的及时停止循环及循环的去向也是很重要

2.本周的内容,你还不会什么?

  • 有些难一点题目还是没有什么思路
  • 有些循环的位置,循环停止,去向找的不准确导致错误
  • 写的代码还是无法做到比较简洁

转载于:https://www.cnblogs.com/lzc176/p/7815610.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值