这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | C语言I博客作业10 |
我在这个课程的目标是 | 理解运用现有的C语言知识 |
这个作业在那个具体方面帮助我实现目标 | 通过PTA作业和阅读教材并练习 |
参考文献 | 《C语言程序设计》 |
一、PTA作业
1.1输出三角形字符阵列
本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。
输入格式:
输入在一行中给出一个正整数n(1≤n<7)。
输出格式:
输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格。
输入样例:
输出样例:
1.1.1数据处理
数据表达:定义了整型int变量i,N,n,j;以及字符char变量letter;
数据处理:运用for循环嵌套;第一个for循环输出指定的行次数以及第二个for循环相应的字符。
伪代码:
int main()
{
定义整型变量 i,N,n,j;
定义字符型变量 letter;
字符型变量初始为letter='A';
输入整数scanf("%d",&n);
令N=n;
for(循环n次)
{
for(循环n次)
{
printf("%c ",letter);
letter++;字符跳到下一个
}
printf("\n");换行
n--;每循环一次n要减少一次
}
return 0;
}
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
2 | 输出2行由大写字母A开始构成的三角形字符阵列。 | |
5 | 输出5行由大写字母A开始构成的三角形字符阵列。 | |
6 | 输出6行由大写字母A开始构成的三角形字符阵列。 |
1.1.4 PTA提交列表及说明
提交列表说明:
格式错误:多循环了一次,输出多换行了一格;通过对比输出数据对比出来的。
1.2梅森数
输入格式:
输入在一行中给出正整数n(n<20)。
输出格式:
输入样例:
输出样例:
1.2.1数据处理
数据表达:定义整型int变量i,j,m,n,mumber;
数据处理:for循环嵌套if语句,再利用break跳出语句的特性将条件罗列求出梅森数。
伪代码:
int main()
{
定义整形变量int i,j,m,n,number;
令m=0;
scanf("%d",&n);输入n
for(循环n-1次)
{
number=2的i次方-1;
for(j=2;j不大于number开平方;j++)
{
如果(判定number除以j余数是否为0) 跳出循环该循环语句体break;
}
如果(j大于number开平方)
{
printf("%d\n",number);
m++;用来计数
}
}
if(m==0)即计数为0,为没有梅森数时
{
printf("None");
}
return 0;
}
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
1 | NONE | 不超过(2^3)-1的梅森数有0个 |
12 | 不超过(2^3)-1的梅森数有4个 | |
666 | 不超过(2^3)-1的梅森数有8个 |
1.2.4 PTA提交列表及说明
1.3同构数
一个数恰好出现在它的平方数的右端,这个数就称为同构数。找出1~1000之间的全部同构数。
输出格式:
在一行中输出所有满足条件的同构数,每个数输出占6列。没有其它任何附加格式和字符。
输出样例:
1.3.1数据处理
数据表达:定义整型int变量i,N;
数据处理:利用for循环嵌套if判断再利用韩信点兵取余思想,筛选出1-1000的同构数。
伪代码:
int main()
{
定义整型变量int i,N;
for(从1-1000循环并筛选)
{
N = i²
if(十位数取余==i||百位数取余==i||千位数取余==i)
{
printf("%6d根据输出格式对齐",i);
}
}
return 0;
}
1.3.2实验代码截图
1.3.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
无 | 1~1000之间的全部同构数。 |
1.3.4 PTA提交列表及说明
提交列表说明:
格式错误:少了空格,后来直接修改“ %d”为“%6d”,就解决了。
二、代码互评
同学(乐树文)代码
我的代码
不同点:
1.他的代码相比较我的而言,更加简洁,我多写很多步骤,比如我多定义一个N为了让它与n区分,然后还要比n大一次,所以在循环条件那加了个n--;他直接在第二个for循环里用j 2.我的主for循环框架是递增的,他的主for循环框架是递减的;
3.他的整型变量是直接在for循环临时用的时候临时定义的,既然对了,证明可行,下次我也试试。
同学(柏朝晖)代码
我的代码
不同点:
1.他的代码是用自定义函数写的,使用条件以及返回判断i的值是不是同构数,不是则返回0;我则普通方法直接判断,不是同构数则继续循环,是则记录输出下来;
2.我定义的较为简洁,通俗易懂,他的代码高深一些,再者加上我发现我对函数的运用不是很了解其运行步骤,就只看出这么多了。
三、学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
第七周 | 10小时 | 132行 | 常用的数学函数,if-else语句 | 函数的运算问题 |
第八周 | 13小时 | 156行 | 学会运用for循环语句和知晓DevcC++调试 | 对于DevcC++还是不大会用 |
第九周 | 12小时 | 145行 | 学会了函数定义和调用函数 | 对于函数的返回,不是很理解 |
第十周 | 12小时 | 150行 | 了解了逻辑运算符和ASCII代码 | 记不住逻辑运算符的意思以及ASCII代码 |
第十一周 | 5小时 | 70行 | 理解并运用switch语句,对数组有些了解 | 对于数组的使用还是不熟练 |
第十二周 | 8小时 | 121行 | 加深了while循环语句的理解,以及理解了数组的定义,还有对于do-while的使用 | 突然发现自己并不会使用函数写代码,有点迷 |
第十三周 | 10小时 | 145行 | 严谨了对于break的运用,以及初步了解了continue的使用 | continue的使用不熟练,也不会灵活使用,容易被绕晕 |
第十四周 | 12小时 | 163行 | 开始慢慢挖掘字符型代码写法了,之前对字符型数据一无所知 | 对于字符型的运用不是很灵活,比较呆滞和僵硬 |
3.2 累积代码行和博客字数
时间 | 博客字数 | 代码行数 |
---|---|---|
第五周 | 464 | 0 |
第六周 | 1017 | 50 |
第七周 | 1638 | 182 |
第八周 | 2533 | 288 |
第九周 | 3421 | 433 |
第十周 | 4399 | 583 |
第十一周 | 5051 | 653 |
第十二周 | 5789 | 774 |
第十三周 | 6686 | 919 |
第十四周 | 7985 | 1082 |
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
不知不觉,就要到期末考试了,我总结了一下自己所学的知识,和对于以往题目的经验,我觉得C语言这门课程,理解题意是一个方面,翻译题意是另一个方面;我们不断做题,各方面能力都会逐步提升,但是由于我的平常不怎么刷题,对于题目的理解还是太差劲了,还有翻译题意的能力,不足归不足,用功不到位才是大问题。