| 这个作业属于那个课程 | 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(N%10==i||N%100==i||N%1000==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<i表示出来了;
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语言这门课程,理解题意是一个方面,翻译题意是另一个方面;我们不断做题,各方面能力都会逐步提升,但是由于我的平常不怎么刷题,对于题目的理解还是太差劲了,还有翻译题意的能力,不足归不足,用功不到位才是大问题。





