• C语言第四次博客作业--嵌套循环


    一、PTA实验作业

    题目1:7-3 编程打印空心字符菱形

    1. 本题PTA提交列表

    2. 设计思路

    3.本题调试过程碰到问题及解决办法
    刚开始这题无从下手,后来仔细观察发现空格数目是递减的,但是最难的是中间的空格,始终不得要领,最后请教同学,才明白中间的空格和行数有关,所以又加了一个循环来输出中间的空格

    题目2:7-7 歌唱比赛评分系统

    1. 本题PTA提交列表

    2. 设计思路

    • 1.定义七个整型变量i,j,repeat,n,max,min,sum,一个浮点型变量score
    • 2.输入repeat的值
    • 3.i=1
    • 4.i++,sum=0
    • 5.输入n和score的值
    • 6.max=score,min=score
    • 7.j=1
    • 8.j++,sum=sum+score
    • 9.若min>score,则min=score,若max<score,则max=score
    • 10.若 j==n,跳出循环
    • 11.输入score的值
    • 12.若j<=n,返回第7步,否则执行下一条语句
    • 13.score=(sum-max-min)/(n-2)
    • 14.输出score的值并保留两位小数
    • 15.若i<=repeat,返回返回第3步

    3.本题调试过程碰到问题及解决办法
    刚开始的时候没有在进入第一个循环时重置sum的值,导致sum的值累加了,从而第二次repeat时错误

    后来经过调试发现问题

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

    1. 本题PTA提交列表

    2. 设计思路

    • 1.定义十一个变量i,j,n,k,repeat,grade,grade1,grade2,grade3,grade4,grade5
    • 2.输入repeat的值
    • 3.i=1
    • 4.输入n值
    • 5.grade1=0,grade2=0,grade3=0,grade4=0,grade5=0
    • 6.j=1
    • 7.j++,
    • 8.输入grade的值
    • 9.若grade1,则grade1++;若grade2,则grade2+;若grade3,则grade3++;若grade4,则grade4++;若grade==5,则grade5++,
    • 10.若 j<=n,返回第七步,否则执行下一条语句
    • 11.输出"1:"
    • 12.k=1
    • 13.k++
    • 14.输出"*",若k<=grade1,返回第13步,否则执行下一条语句。
    • 15.输出换行符
    • 16.同理,按照12~16步的方法输出当k分别第2,3,4,5行的星号
    • 17.若i<=repeat,返回第4步

    3.本题调试过程碰到问题及解决办法
    这道题难点主要在怎么利用循环来输出星号,刚开始我的侧重点在嵌套上,然后怎么想也实现不了,然后我就想会不会不是嵌套的问题,然后我就引入一些变量来控制星号的循环,这样问题就解决了

    二、同学代码结对互评

    1.互评同学名称:Soyam(黄泽彬)

    2.我的代码、互评同学代码截图
    这是泽彬的代码

    这是我的代码

    int repeat,n,max,min,sum;//max放最高分,min放最低分,sum放总分 
    	double score;//score放成绩 
    	scanf("%d",&repeat);
    	for(int i=1;i<=repeat;i++)
    	{
    		sum=0;
    		scanf("%d",&n);
    		scanf("%lf",&score);//输入评委人数和成绩 
    		max=score;
    		min=score;//先把第一个成绩给最大值和最小值 
    		for(int j=1;j<=n;j++)
    		{
    		
    			sum=sum+score;//总分累加 
            //用if语句选出最大值和最小值 
    			if(min>score)
    			{
    				min=score;
    			}
    			if(max<score)
    			{
    				max=score;
    			}
    			if(j==n)
    			break; //当j=n时,跳出循环,不然会多输一个值 
    			scanf("%lf",&score);
    		}
    		score=(sum-max-min)/(n-2);//算出平均分 
    		printf("score:%.2f
    ",score);
    	}
    

    3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。
    泽彬的代码存在一些问题,下面是改进

    他的代码总的来说思路还算清晰,虽然有些错误但是方向是对的,只是应该适当的加一些注释,这样可读性会更高一些。
    他的代码中是先给min,max一个初值,而我是把输入的一个值给min,max,虽然我这样做比较麻烦但是通用性更高,而他的代码只适用本题的条件

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

    PTA排名

    四、本周学习总结

    1.你学会了什么?

    • 用do-while语句构成的循环,在while后的表达式为零时结束循环
    • 嵌套循环时是先执行最里面的循环,然后一层一层退出来,所以这样计算量很大,我们应该要压缩循环次数,比如课本上的搬砖那题
    • 学会了用变量来累积次数,从而实现满足某个条件后跳出循环

    2.本周的内容,你还不会什么?
    打印空心菱形那题真的很难,字母的递增不是很理解,看题目时经常完全没有思路,我觉得还是要多练,练得多了就熟练了。

  • 相关阅读:
    我来教你用AWS IoT.Part1--配置和接入
    Netty进行文件传输
    Spring Security-利用URL地址进行权限控制
    Java开发工作中常见问题
    java进阶学习计划
    spring cloud常用注解及关键类
    系统设计-电商排名
    java实现十大经典算法
    JDK8如何写出优雅代码
    Java实现迷宫和八皇后
  • 原文地址:https://www.cnblogs.com/hbw985609191/p/7780493.html
Copyright © 2020-2023  润新知