C语言I博客作业10

这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 C语言I作业10
我在这个课程的目标是 多挑战自己,增加解题手段
这个作业在那个具体方面帮助我实现目标 在作业中不断总结错误,更好地理解循环结构
参考文献 C语言

1.PTA实验作业

1.1 题目名1:7-8 输出三角形字符阵列

  • 题目内容描述:本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。
    输入格式:
输入在一行中给出一个正整数n(1≤n<7)。

输出格式:

输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格。

输入样例:

4

输出样例:

A B C D 
E F G 
H I 
J 

1.1.1数据处理

  • 数据表达:先定义了变量n,根据题意用于表示输入的正整数,然后这个题的本质就是输出:第一行输出n个字母,第二行输出n-1个字母,以此推类。所以又在后面的for语句中定义了变量i,j用来判断条件辅助循环。
  • 数据处理:伪代码
变量n表示输入,count用来记数,另外引进一个变量进行字母的变化,另外题目保证字母在26个之内。
开始
{
    int 定义变量,定义计数变量;
    scanf(显示输入);
    for循环语句 (定义变量i; i需满足的条件;满足条件减1) 
    {
        for循环语句 (定义变量j;j满足的条件;满足条件加1) 
        {
            printf(显示输出);
            累加;
        }
        printf显示输出;
    }
    结束;
}

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
2 用英文字母打出2行三角形
3 用英文字母打出3行三角形
4 用英文字母打出4行三角形

1.1.4 PTA提交列表及说明

  • 答案错误:第6行for循环语句中,变量i的条件打错,打成了i>=0。
  • 编译错误:第6行i应该是累减,我打成了累加。
  • 编译错误:第10行的输出显示printf("%c ", 'A' + count)我没打“+”号。

1.2 题目2:7-3 梅森数

  • 题目内容描述:
    题目内容描述:形如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数据处理

  • 数据表达:定义了变量num,n,i,j,f用于计数,n表示输入,i,j用于for语句条件判断进行累加,num用于计算。
  • 数据处理:伪代码
for循环语句嵌套if语句,再利用变量i,j进行条件判断累加,再用break跳出语句的特性将条件罗列求出梅森数。
开始 
{
	int定义变量,定义累加变量并赋值为0;
	scanf(输入显示);
	for(将变量i赋值,i满足的条件,i累加)
    {
		num=2的i次方-1;
		for(将变量j赋值;j满足的条件;j累加)
			if(判断num除以j余数是否为0) 跳出循环该循环语句体 break;
		if(j大于num开平方)
        {
			printf(输出显示num);
			f累加;
		}	
	}
	if(f为0) printf(输出显示None);
	结束;
} 



1.2.2实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
1 NONE 不超过(2^3)-1的梅森数有0个
18 不超过(2^3)-1的梅森数有6个
10 不超过(2^3)-1的梅森数有4个

1.2.4 PTA提交列表及说明

  • 编译错误:第8行语句num=pow(2,i)-1,没有“-1”。
  • 部分正确:将14行printf("%d\n",num)中输出打成f,导致输出错误。
  • 编译错误:第18行if语句条件判断打错,打成num=0。导致语句出错。

2.代码互评

  • 同学代码(黄浩东)
  • 自己代码

比较

  • 1.我的代码虽然运用了数学知识但却并没有打#include<math.h>。而他的很规范打了上去。
  • 2.对于输出None,我设置的判定条件是if(f0)且在代码最后面,而他是if(n1)且设置在代码前端
  • 3.在我的第1条if语句后直接用break跳出语句的特性将条件罗列求出梅森数,而他先判断c=1,然后再利用break语法。
  • 4.对比两分代码,我认为他的代码还可以再缩进一点,对于代码的格式可以更加工整简洁,比如for语句后的“{”可以打在下一行而不是直接打在后面。
  • 同学代码(湛占东)
  • 自己代码

比较

  • 1.虽然我们变量定义的一样,但是用法不一样,其中我的变量i,j是在后面for语句要用的时候在定义的,说明在打代码之前他的思路很清晰,而我虽然有大致思路,但是却是走一步看一步,要用了在定义。
  • 2.他运用了粗存字符变量char辅助输出,而我是直接输出 printf("%c ", 'A' + count)。
  • 3.对比两份代码,他用了我还不怎么会的知识,但是我也有我的方法,我觉得双方都有可以相互学习的地方。

3.学习总结

3.1 学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第四周 8小时 50行 简单输出
第五周 10小时 70行 学习输入
第六周 20小时 150行 用WinGW-w64来编译C程序
第七周 24小时 150行 运用if,else语句 对符号的意思不太理解
第八周 18小时 200行 运用for循环语句
第九周/10.25 8小时 200行 学习了自定义函数 符号容易弄混
第十周/11.1 26小时 250行 熟悉并掌握了多分支结构 各个运算符的意思还不太理解
第十一周/11.8 24小时 300行 熟悉唱我多分支结构switch语句 对空格的使用还比较疑惑
第十二周/11.15 20小时 300行 熟悉whlie和do-whlie结构
第十三周/11.21 16小时 280行 学会了break、continue的使用和循环的嵌套解决问题 对循环的嵌套还不怎么懂
第十四周/11.28 24小时 350行 对pow函数有了更深的理解,对循环嵌套语句的不懂得地方都弄懂了 不会将自己的语句用C语言表达出来

3.2 累积代码行和博客字数

时间 博客字数 代码行数
第四周 450 70
第五周 450 140
第六周 1200 290
第七周 2400 490
第八周 3600 740
第九周 4800 990
第十周 6000 1240
第十一周 7300 1740
第十二周 8700 2120
第十三周 10800 2800
第十四周 12500 3200

3.3 学习内容总结和感悟

3.3.1 学习内容总结

3.3.2 学习体会

  • 本周将上周循环的嵌套不懂问题给弄懂了,心里还是很有成就感的。
  • 对于pow函数的运用还不是很熟练,需要多加练习。
  • 对于难题要有耐心,这是将自己语句转化成C语言语句的很好机会和练习,对于难题好多自己思考,而不是想了一下就跑去问同学。
posted @ 2019-11-28 17:14  谢广森  阅读(231)  评论(6编辑  收藏  举报