C语言I博客作业10
问题 | 回答 |
---|---|
这个作业属于哪个课程 | C语言程序设计II |
这个作业要求在哪里 | 作业要求 |
我在这个课程的目标是 | 能够自主开发出一个软件,拥有用户并能够维护程序运行 |
这个作业在那个具体方面帮助我实现目标 | 让我了解更多的数学知识,提高解题,编写程序的能力 |
参考文献 | 百度百科,CSDN技术社区 |
PTA实验作业
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,定义为整型,变量a,定义为字符型,并赋值'A'
数据处理:
Begin
输入行数
while(判断n是否为零)
{
for(用变量i来进行循环)
{
让字符累加输出
}
if(判断每一行字符是否大于行数)
{
是则换行
}
n--;
}
End
1.1.2实验代码贴图
1.1.3造测试数据
数据输入 | 数据输出 | 说明 |
---|---|---|
3 | A B C D E F |
只输出三行 |
2 | A B C |
只输出两行 |
1.1.4PTA提交列表及说明
说明:
解决该题需知道怎样去控制每行字符数
1.2梅森数
形如2n−1的素数称为梅森数(Mersenne Number)。例如22−1=3、23−1=7都是梅森数。1722年,双目失明的瑞士数学大师欧拉证明了231−1=2147483647是一个素数,堪称当时世界上“已知最大素数”的一个记录。
本题要求编写程序,对任一正整数n(n<20),输出所有不超过2n−1的梅森数。
输入格式:
输入在一行中给出正整数n(n<20)。
输出格式:
按从小到大的顺序输出所有不超过2n−1的梅森数,每行一个。如果完全没有,则输出“None”。
输入样例:
6
输出样例:
3
7
31
1.2.1数据处理
数据表达:
使用了变量n,i,j,sum,rn,flag,都定义为整型
数据处理:
Begin
输入n
计算出输入n的梅森数,并用变量rn表示
if(n<2)
{
输出None
}
for(i用于循环表示几次方)
{
计算每个i的梅森数,并用sum表示
for(用j循环来判断sum是否为素数)
{
用标志flag辅助判断
是素数则输出,不是则计算下一个数
}
}
End
1.2.2实验代码贴图
1.2.3造测试数据
数据输入 | 数据输出 | 说明 |
---|---|---|
19 | 3 7 31 127 8191 131071 524287 |
取规定最大整数 |
1 | None | 完全没有 |
1.2.4PTA提交列表及说明
说明:
部分正确:第一个for语句内的条件应为i<=n
前期想法是用i来表示数,不断累加,条件为小于所给梅森数,后觉得这样数据太大,会影响运行时间
1.3同构数
一个数恰好出现在它的平方数的右端,这个数就称为同构数。找出1~1000之间的全部同构数。
输出格式:
在一行中输出所有满足条件的同构数,每个数输出占6列。没有其它任何附加格式和字符。
输出样例:
1 5 6 25 76 376 625
1.3.1数据处理
数据表达:
使用了i,j,k三个变量,都定义为整形
数据处理:
k用于判断同构数位数
Begin
k=10;
for(用i来表示同构数进行循环)
{
if(i==k判断i的位数)
{
相等则进一
}
j=i*i;表示为同构数的平方
if(判断平方数右边是否相等)
{
是则按格式输出;
}
}
End
1.3.2实验代码贴图
1.3.3造测试数据
数据输入 | 数据输出 | 说明 |
---|---|---|
无 | 1 5 6 25 76 376 625 | 只输出1000以内同构数 |
1.3.4PTA提交列表及说明
说明:
格式错误:没有理解每个数字占六列的意思,直接在输出数字前加了五个空格
答案正确:将输出改为printf("%6d");
代码互评
c1
c2
myself
- 1.我与c1代码不同的是,他定义了一个函数去判断梅森数,然后再将这个数返回到主函数去输出,我认为学会经常去定义函数,会对自己写代码有很好的锻炼作用
- 2.我与c2代码的不同是,他用于辅助判断的方法与我的不同,他是在循环中去改变用于辅助的变量,然后去判断,而我是在初始给定了辅助变量一个值,然后在循环中去改变,虽然作用都一样,但我比较习惯用自己的
学习总结
3.1学习进度条
周 | 这周所花时间 | 代码行 | 学到的知识简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第五周 | 8h | 56行 | 常量,变量和数据类型 | 无 |
第六周 | 12h | 89行 | 格式化输入函数scanf(),for循环 | 无 |
第七周 | 19h | 286行 | 分支结构 | 无 |
第八周 | 15h | 238行 | 函数的定义和调用 | 函数的定义和调用的基本用法 |
第九周 | 10h | 173行 | while语句,函数的定义和调用强化 | 被调函数返回值 |
第十周 | 20h | 312行 | 逻辑运算符优先级,定义和访问数组 | 逻辑表达式的运算 |
第十一周 | 11h | 189行 | switch语句,ASCⅡ码的了解 | 进制转换 |
第十二周 | 9h | 279行 | continue语句,循环结构的嵌套,do-while语句,条件运算符 | break语句与continue语句的区别 |
第十三周 | 9h | 201行 | break语句与continue语句的区别,循环结构嵌套的执行顺序 | 无 |
第十四周 | 10h | 224行 | 穷举法的了解,局部变量和全局变量 | 关于各种新接触的数学知识 |
3.2累积代码行和博客字数
3.3学习内容总结和感悟
3.3.1学习内容总结
3.3.2学习体会
在本周的学习过程中我去阅读了一下其他几位助教的积累情况,我发现他们的代码行已经是我的好多倍了,他们在平时肯定已经做过了很多的练习,所以我也争取不能落后,临近复习时间了,可能后面几周时间会大量的有自己安排,所以自己应该利用这段时间去多做一些题来提升自己。