C语言博客作业嵌套循环

一、PTA实验作业

题目一: 打印九九口诀表

本题要求对任意给定的一位正整数N,输出从11到NN的部分口诀表。

1. 本题PTA提交列表

2. 设计思路

  • 第一步:定义整数型变量N为用户输入数,k为乘法式第一个数,i为乘法式第二个数,result为算式每一个结果
  • 第二步:输入N
  • 第三步:i=1
  • 第四步:for(k=1;k<=i;k++)
    result=i*k;
  • 第五步:当i<=N时,i++,返回第三步

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

结果和算式虽然正确,但在本题中忘记换行,导致所有的都是一排排完整才会换行

题目二:梅森数

1. 本题PTA提交列表

2. 设计思路

  • 第一步:定义整数型变量i,n为用户输入数,num为梅森数,k
  • 第二步:输入n
  • 第三步:当n=1时,可知没有梅森数,即输出None
  • 第四步:当n>1时,i=2,求出num=pow(2,i)-1
  • 第五步:k=2;k<=sqrt(num);k++
    通过num%k是否为0,判断num是否为素数。
  • 第六步:如果是则输出num,否则进行下一步
  • 第七步:当i<=n时,i++,返回第三步

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

一开始吧所有的num=pow(2,i)-1都输出来了,后面发现我是在条件不成立是忘记加大括号导致条件即使不符,也会往下走,不会跳出来

题目三:

1. 本题PTA提交列表

2. 设计思路

  • 第一步:定义整数型变量repeat为重复输入次数,n为评委个数,max为最高分,min为最低分,all为总分数,num为分数,i,k,l,begin;定义浮点型变量score为最后得分
  • 第二步:输入repeat
  • 第三步:begin=1;当begin<=repeat时进行下一步
  • 第四步:输入n
  • 第五步:将all初始化为0
  • 第六步:输入分数num,all=all+num
  • 第七步:将max和min初始化为num
  • 第八步:i=1,当i<=n-1时进行下一步
  • 第九步:输入num,all=all+num
  • 第十步:比较max与num的大小,如果num大于max,则max=num
    否则比较min和num的大小,如果num小于min,则min=num
  • 第十一步:i++,返回第八步
  • 第十二步:all=all-max-min
  • 第十三步:score=all/(n-2)
  • 第十三步:输出score
  • 第十四步:begin++,返回第三步

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

当第一次all=all+num时all=4.4,这让我很迷惑,现在也是不懂,是在后面重新编程一个代码才将这一题过了,至于为什么all=all+num时all=4.4现在依然不懂

二、同学代码结对互评

#include <stdio.h>
int main()
{
	double apple,pear,orange,grape,exit,other,price;
	int i,it;
	printf("[1] apple\n[2] pear\n[3] orange\n[4] grape\n[0] exit\n");
	apple=3.00;
	pear=2.50;
	orange=4.10;
	grape=10.20;
	other=0.00;
	for(i=1;i<=5;i++){
		scanf("%d",&it);
		if(it==1)
		{printf("price = %.2f\n",apple);}
		else if(it==2)
		{printf("price = %.2f\n",pear);}
		else if(it==3)	
		{printf("price = %.2f\n",orange);}
	    else if(it==4)
		{printf("price = %.2f\n",grape);}
		else if(it==0)
		{i=6;}
		else
		{printf("price = %.2f\n",other);}
	}
	return 0;
}
#include<stdio.h>//周炳辉同学
int main()
{
	int i,number;
	double price;
	printf("[1] apple\n[2] pear\n[3] orange\n[4] grape\n[0] exit\n");
    for(i=1;i<=5;i++){
		scanf("%d",&number); 
		if(number==0) break;
		else 
		 switch(number){
			case 1:
				price=3.00;
				break;
			case 2:
				price=2.50;
				break;
			case 3:
				price=4.10;
				break;
			case 4:
				price=10.20;
				break;
			case 0:
				break;
			default:
				price=0;
			}
			printf("price = %.2f\n",price);
		}
		return 0;
 } 

这一题我采用的是if-else-if的连环式,而周炳辉同学则采用switch语句,我的方案较为繁琐,如果当有九个选项时,我的毛病就凸现出来了,所以炳辉同学的代码比我好多了
我现在感觉他的挺完美的

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

四、本周总结

1.你学会了什么?

在本周中学会了break和continue语句,break语句是强制循环结束,执行break语句,循环会提前结束,不在执行循环体中位于其后的语句,而continue语句则是跳过continue紧跟的语句,接下去执行下一语句
在本周学习嵌套循环,可以使用for、while、do-while三种循环语句。

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

就像我之前粘连的pta第三题中所说情况就搞不懂为什么会那样,可能说是定义类型不同吧,发现在做pta的时候数学能力也很重要,需要加强数学能力,才能够写出更好的算法算式,在使用嵌套循环是也是觉得要思考太久,有时需要做一两个小时才能做出来,我觉得需要多打代码,加强编程,将会见到效果的。

原文地址:https://www.cnblogs.com/gongshunde/p/7814794.html