这个作业要求在哪里 |
C语言I作业10 |
我在这个课程的目标是 |
熟练运用循环嵌套语句与if-else语句的结合 |
这个作业在那个具体方面帮助我实现目标 |
在PTA的练习中逐渐熟练语句用法,和对知识的自我总结上 |
参考文献 |
集美大学林丽老师、百度文库、C语言程序设计 |
1.PTA实验作业

1.1 题目名1
输出三角形字符阵列
本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。
输入格式:
输入在一行中给出一个正整数n(1≤n<7)。
输出格式:
输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格。
输入样例:
4
输出样例:
A B C D
E F G
H I
J
;
1.1.1数据处理
数据表达:
n代表输入的数,i,j用于循环累加,都为整型变量;字符op用于输入字符从字符A开始;
数据处理:
int n,i,j; 定义n,i,j变量的类型
char op='A'; 定义字符,并赋值
scanf("%d",&n); 输入范围
for(i=1;i<=n;i++) 进入循环,直到i的值大于n时,停止循环
{
for(j=i;j<=n;j++) 进入循环,直到j的值大于n时,停止循环
{
printf("%c ",op); 每循环一次就输出一次op
op++; op的累加
}
printf("\n"); 循环完第二次循环后,输出换行
}
return 0; 结束
}
1.1.2实验代码截图

1.1.3 造测试数据
3 |
 |
输入的是3,组成的是三行三列的三角形 |
5 |
 |
输入的是5,组成的为五行五列的三角形 |
7 |
 |
输入7,组成七行七列的三角型,不过字母不够 |
1.1.4 PTA提交列表及说明

* 答案错误:换行的位置不对,通过调式,找到了错误并改正了
* 答案错误:循环的范围不对,通过调试运行,找到了问题,并改正了
1.2题目名2
梅森数
形如2
2^n−1的素数称为梅森数(Mersenne Number)。例如2^2−1=3、2^3-1=7都是梅森数。1722年,双目失明的瑞士数学大师欧拉证明了2^31−1=2147483647是一个素数,堪称当时世界上“已知最大素数”的一个记录。本题要求编写程序,对任一正整数n(n<20),输出所有不超过2^n−1的梅森数。
输入格式:
输入在一行中给出正整数n(n<20)。
输出格式:
按从小到大的顺序输出所有不超过2^n−1的梅森数,每行一个。如果完全没有,则输出“None”。
输入样例:
6
输出样例:
3
7
31
1.2.1数据处理
*数据表达*:
n,i用来统计循环次数,a代表输入数,b用来判断素数,num用来存放数据,它们都为整型变量
*数据处理*:
int n,a,b=0,i=0,num=0,c=0; 定义变量
scanf("%d",&a); 输入a的值
if(a==1) 如果a等于1
printf("None"); 输出None
for(n=2;n<=a;n++) 进行循环,直到n大于a时为止
{
num=pow(2,n)-1; 计算num的值
for(i=2;i<=num-1;i++) 对被除数进行循环
{
if(num%i==0) 如果num除以i没有余数时
{
b=1; b等于1
break; 跳出循环
}
}
if(b!=1) 如果b不等于1
printf("%d\n",num); 输出num的值
b=0;
}
return 0; 结束
}
1.2.2实验代码截图

1.2.3 造测试数据
7 |
 |
在2^7-1内的素数只有3,7,31,127,8191 |
20 |
 |
在2^20-1内的素数只有3,7,31,127,131071,524287 |
50 |
 |
在2^50-1内的素数只有3,7,31,127,131071,524287,2147483647 |
1.2.4 PTA提交列表及说明

*编译错误:忘记打分号,看错误提示发现并且改正了
*部分正确:没讨论a=1时的情况,看了错误信息发现的,然后添上这个情况就对了
1.3 题目名3
同构数
一个数恰好出现在它的平方数的右端,这个数就称为同构数。找出1~1000之间的全部同构数。
输出格式:
在一行中输出所有满足条件的同构数,每个数输出占6列。没有其它任何附加格式和字符。
输出样例:
1 5 6 25 76 376 625
1.3.1数据处理
*数据表达*:
n代表范围,i用来判断同构数,sum用来输出1000以内的同构数,它们都是整型变量
*数据处理*:
int n=1000,i,sum; 定义n,i,sum变量的类型
for(sum=1;sum<=n;sum++) 进行循环,直到sum大于n为止
{
i=sum*sum; 令i等于sum的平方
if(sum==i%10||sum==i%100||sum==i%1000) 当sum的值满足i除以10的余数为sum或者i除以100的余数为sum或者除以1000的余数为sum时
printf("%6d",sum); 输出sum
}
continue; 继续循环
}
return 0; 结束
1.3.2实验代码截图

1.3.3 造测试数据
-------- |
1 5 6 25 76 376 625 |
1000以内的同构数为1,5,6,25,76,376,625 |
1.3.4 PTA提交列表及说明

* 运行超时:输出的数据打错了,本该输出sum不小心打成了i,问了同学后改正的
* 运行超时:将循环中的sum打成了i,通过devc++试调发现错误,并改正的
2.代码互评
自己代码:


同学代码:


* 该同学设置的变量与我的不一样,并且变量比我的要多
* 该同学在使用for循环的同时,还使用了while循环
* 该同学在循环上比我简单些,但是在内容上比我复杂很多
自己代码:

同学代码

* 该同学定义的变量与我的不同,他刚开始定义的变量比我的少
* 该同学使用了自定义函数来判断素数,而我用的常规方法,在for循环中判断素数
* 该同学的代码不需要单独考虑输入值等于1的情况,而我的需要单独考虑
3.学习总结
3.1 学习进度条
第六周 |
4天 |
20 |
用 MinGW-w64 来编译C程序,学习编程计算温度的转化 |
无 |
第七周 |
3天 |
99 |
学习用if,else等语句编译程序 |
无 |
第八周 |
2天 |
75 |
学习使用循环语句,用for来编译程序 |
无 |
第九周 |
3天 |
94 |
学习各种使用函数eg:fact(i) |
for循环与while循环的区别 |
第十周 |
2天 |
213 |
学习使用多种分支结构 |
对分支结构中for循环有点迷糊不太能理解 |
第十一周 |
1天 |
135 |
学习使用switch语句 |
无 |
第十二周 |
1天 |
96 |
学习使用while语句 |
无 |
第十三周 |
1天 |
83 |
学习使用循环嵌套,continue语句 |
循环嵌套的顺序 |
第十四周 |
1天 |
115 |
练习循环嵌套与if-else语句的结合 |
循环嵌套的顺序 |
3.2 累积代码行和博客字数
第四周 |
557 |
28 |
第六周 |
1437 |
20 |
第七周 |
1434 |
99 |
第八周 |
2367 |
75 |
第九周 |
2681 |
94 |
第十周 |
2741 |
113 |
第十一周 |
2772 |
135 |
第十二周 |
2874 |
96 |
第十三周 |
4398 |
77 |
第十四周 |
1898 |
115 |

3.3 学习内容总结和感悟
3.3.1 学习内容总结

3.3.2 学习体会
本周老师没有上新课而是讲了题目,在老师和同学讲解题目的过程中,我渐渐的明白了一些我之前没看得太懂的代码,在本周的学习中我感觉循环这个问题有所深入。在PTA的不断练习中逐渐熟悉,随着PTA难度的增加,我们都可以发现以前觉得很难的题已经没那么难了,因为我们时刻都在面临新的题型,在不断的充实自己的知识点的同时,提高了我们的解题能力。希望在以后的学习也能这样得心应手。随着PTA的难度、行数也在逐渐提高,代表着我需要更加努力!
