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学习体会

在本周的学习过程中我去阅读了一下其他几位助教的积累情况,我发现他们的代码行已经是我的好多倍了,他们在平时肯定已经做过了很多的练习,所以我也争取不能落后,临近复习时间了,可能后面几周时间会大量的有自己安排,所以自己应该利用这段时间去多做一些题来提升自己。

posted @ 2019-11-28 15:12  blackman6  阅读(276)  评论(0)    收藏  举报