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\n",score);
	}

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

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

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

PTA排名

四、本周学习总结

1.你学会了什么?

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

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

posted @ 2017-11-10 15:03  夜雨生虹  阅读(399)  评论(7编辑  收藏  举报