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的时候数学能力也很重要,需要加强数学能力,才能够写出更好的算法算式,在使用嵌套循环是也是觉得要思考太久,有时需要做一两个小时才能做出来,我觉得需要多打代码,加强编程,将会见到效果的。