这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | C语言I作业10 |
我在这个课程的目标是 | 希望能够在学完后能够自己做出一个C语言的小游戏 |
这个作业在那个具体方面帮助我实现目标 | 循环结构 |
参考文献 | C语言程序设计 |
1.PTA实验作业(20分/题)
1.1(7-8) 输出三角形字符阵列 (15 分)
本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。
输入格式:
输入在一行中给出一个正整数n(1≤n<7)。
输出格式:
输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格。
输入样例:
4
输出样例:
A B C D
E F G
H I
J
1.1.1数据处理
-
数据表达:此题我定义了两个整型变量n, i;n是输入的行数;i是对于下一行的列数进行递减处理;此外我还定义了一个char类型的字符型变量op;代表输入的字符;
-
数据处理:
begin 定义变量n,i,op; op←@; while(n等于0) { i←n; while(i等于0) { 输出字符; op+1; 如果(i等于0) { 换行; } } n自减; } end
1.1.2实验代码截图
1.1.3 造测试数据
输入 | 输出 | 说明 |
---|---|---|
4 | 同示例 | |
5 | 5行 | |
6 | 6行 |
1.1.4 PTA提交列表及说明
说明:此题难度系数不高,只要注意字符型变量的初始化就好了
1.2(7-3) 梅森数 (20 分)
形如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, num, count;其中n为输入值,是2的次方数;num是形如2n−1的数;count作为计数器,对数据中的梅森数进行计数
-
数据处理:
begin 声明fact函数; 定义变量n, num, count; count←0; for(定义i并i←0;i小于等于n;i自增) { num←pow(2, i) - 1; 如果(num是梅森数) { 输出num并对count进行累加; } } 如果没有梅森数 { 输出None; } fact函数 { 判断num是否为素数; } end
1.2.2实验代码截图
1.2.3 造测试数据
输入 | 输出 | 说明 |
---|---|---|
6 | 同示例 | |
7 | n=7 | |
1 | n=1 |
1.2.4 PTA提交列表及说明
说明:此题主要是判断形如2n−1的数num为素数;对于判断素数之前我们的作业已经写过了
1.3(7-3) 同构数 (10 分)
一个数恰好出现在它的平方数的右端,这个数就称为同构数。找出1~1000之间的全部同构数。
输出格式:
在一行中输出所有满足条件的同构数,每个数输出占6列。没有其它任何附加格式和字符。
输出样例:
1 5 6 25 76 376 625
1.3.1数据处理
-
数据表达:此题我定义了四个整型变量num, a, b, x;其中num确定是否跳出循环;x用作记录输入数的位数;a为输入数的平方数;b为10的x次方;
-
数据处理:
begin for(i从1开始到1000结束) { 定义num, a, b, x; x←0; num←i; while(num等与0) { num减少右边的一位数; 记录num的位数; } a为i的平方数; b为10的x次方; 如果i恰好出现在它的平方数的右端 { 输出i并且i占6列; } } end
1.3.2实验代码截图
1.3.3 造测试数据
输入 | 输出 | 说明 |
---|---|---|
无 | 1 5 6 25 76 376 625 | 同示例 |
1.3.4 PTA提交列表及说明
编译错误:我直接在if的判断条件中用的是i==pow(i, 2)%pow(10, x);结果报错说%两边不能用double类型的值;刚开始我是懵的,百度后知道pow函数会将int类型的数升级成double类型的值;后来我是将%两边的只拆开处理的
2.代码互评
同学1代码:
同学2代码:
我的代码:
不同点:
同学一:他的i的平方数的用函数求得的,我是直接在主函数中用式子表示的,而且他的b时for循环不断累乘计算的,我是直接在之前就判断了输入数的位数,后用pow函数计算b的值;
同学二:他的同构数判断是在函数中进行的,他用了一个if(result%10x||result%100x||result%1000==x)判断确定输入的数是不是同构数;
3.学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第六周 | 20小时 | 372 | if-else语句和数学函数 | 暂无 |
第七周 | 10小时 | 226 | 分支结构 | 暂无 |
第八周 | 12小时 | 110 | for循环结构 | 暂无 |
第九周 | 16小时 | 200 | 函数的声明,定义和调用 | 暂无 |
第十周 | 20小时 | 323 | 分支结构,字符型数据类型,ASCII码,逻辑运算符 | 对于字符型数据类型的运用还是不熟练,需要多加练习 |
第十一周 | 18小时 | 788 | 分支结构,switch语句,简单的数组的使用 | 对于数组的了解还是不够,下周还是要多加学习 |
第十二周 | 22小时 | 346 | 循环结构,while循环和do-while循环 | 数组和结构体的知识有待加强 |
第十三周 | 20小时 | 463 | 熟悉break、continue的使用;熟悉使用循环的嵌套解决问题。 | 最近自学的进度有点落下来了,有必要调整下自己的时间安排 |
第十四周 | 23小时 | 564 | 学了一点最基础的Linux系统的命令行操作,会查看日历,当前日期等操作 | 对于C语言指针方面有点懵 |
3.2 累积代码行和博客字数
3.3学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
这周开始学习了Linux系统的命令行cal,date,cd,ls等最基础的几个操作;同时也还在学习python,但是相对其他的大佬我的进度还是有点慢了