C语言I博客作业10
这个作业属于哪个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | C语言I博客作业10 |
我在这个课程的目标是 | 熟悉代码的编程,设计出一个小程序,能够正常运行并且能够拥有一定用户 |
这个作业在哪个地方具体方面帮助我实现目标 | 选择合适的算法、合理的循环结构,熟练的编写程序 |
参考文献 | 同构数 long函数 abs函数 时间复杂度和空间复杂度 |
1.PTA实验作业
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代表行,j代表列;用到了字符型变量c,c用来赋值字符
数据处理:伪代码
#include<stdio.h> //头文件
int main() //函数名
{
int n,i,j; //定义三个整型变量
char c; //定义字符型变量 c
c = 'A'; //给变量c赋值A
scanf("%d", &n);
for(i=1;i<=n;i++) //进行行的循环
{
for(j=i;j<=n;j++) //进行列的循环
{
printf("%c ", c); //打印字符
c++; //字符自增
}
printf("\n"); //输出换行
}
return 0;
}
1.1.2实验截图代码
1.1.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
4 | 能形成三角形 | |
3 | 能形成三角形 | |
5 | 能形成三角形 |
1.1.4 PTA提交列表及说明
说明:
Q1:多种错误
A1:编译代码错误,格式错误,改用了字符型变量编写代码
1.2题目名(梅森数)
形如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用来循环,count用来计数梅森数
数据处理:伪代码
#include<stdio.h> //头文件
#include<math.h> //该编程中用到了数学
int main() //函数名
{
int num,n,i,j,count=0; //定义四个整型变量
scanf("%d",&n);
for(i=2;i<=n;i++) //进行循环
{
num=pow(2,i)-1; //表示素数
for(j=2;j<=sqrt(num);j++) //进行循环
if(num % j==0) break; //如果为假,则跳出循环
if(j>sqrt(num)) // 判断是否为梅森数
{
printf("%d\n",num); //打印梅森数
count++; //梅森数自增
}
}
if(count==0) //没有梅森数
printf("None"); //输出 None
return 0;
}
1.2.2实验截图代码
1.2.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
4 | 梅森数为3,7 | |
5 | 梅森数为3,7,31 | |
6 | 梅森数为3,7,31 |
1.2.4PTA提交列表及说明
说明:Q1:编译错误
A1:代码书写不正确,循环的嵌套没有使用好,处理素数开始直接写的pow(2,i)-1,后来将pow(2,i)-1复制给了num
1.3题目名
一个数恰好出现在它的平方数的右端,这个数就称为同构数。找出1~1000之间的全部同构数。
输出格式:
在一行中输出所有满足条件的同构数,每个数输出占6列。没有其它任何附加格式和字符。
输出样例:
1 5 6 25 76 376 625
1.3.1数据处理
数据表达:用到了长整型变量a,b,for循环和if语句的嵌套
数据处理:伪代码
#include<stdio.h> //头文件
int main() //函数名
{
long a,b; //定义两个长整型变量
for(a=1,b=0;a<1000;a++) //进行循环
{
b=a*a; // 判断同构数(一个数恰好出现在它的平方数的右端)
if(b%10==a||b%100==a||b%1000==a) //找出1~1000中所有的同构数
printf("%6d",a); //打印所有的同构数并按照每个数输出占六个空格的形式
}
return 0;
}
1.3.2实验截图代码
1.3.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
1 5 6 25 76 376 625 |
1.3.4 PTA提交列表及说明
说明:Q:编译错误
A:没有注意每个数输出占6列,代码思路也没有弄清晰
2代码互评
1.同学代码截图
2.自己代码截图
说明:1.他是先定义了整型变量最后转换为字符型输出,而我是从一开始就直接定义了字符型变量,并用字符型变量直接赋值
2.我的代码比他的更加简单
3.同学代码截图
4.自己代码截图
说明:1.该同学先写出来当值为1时输出None,然后进行初始输入值为2的循环,而我是初始值赋为2进行循环判断有无梅森数
2.我和他用的的判断方法不同,他是用余数判断,而我的用到了根式判断
3.学习总结
3.1学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
4/2019.9.21 | 7个小时 | 50 | 编程“hello word” | 初次接触对代码很迷惘,不知道表示的是什么意思 |
5/2019.10.2 | 8个小时 | 100 | 安装gcc编译器,将代码建在自己的文件里 | 如何安装的程序不明白 |
7/2019.10.11 | 10个小时 | 200 | 三种表达式,printf流程和scanf流程,if-else语句 | scanf流程还是不太明白 |
8/2019.10.17 | 20个小时 | 350 | 使用for循环语句数的循环程序设计 | for循环语句的结构还是有点困惑 |
9/2019.10.25 | 25个小时 | 550 | 使用while语句循环,自定义函数,参数 | 自定义函数还是·不太明白 |
10/2019.11.1 | 20个小时 | 700 | 熟悉多分支结构、字符型数据类型和逻辑运算符 | 关于字符型的代码还是不太明白 |
11/2019.11.7 | 15个小时 | 1000 | 熟悉多分支结构switch语句的使用 | 对swith语句的使用还有一定的困惑 |
12/2019.11.15 | 14个小时 | 1200 | 熟悉使用while和do-while结构解决问题 | 对while语句的使用还有一定的疑惑 |
13/2019.11.21 | 15个小时 | 1450 | 熟悉break、continue的使用,熟悉使用循环的嵌套解决问题 | 对continue的使用不够熟练,还有很大疑惑 |
14/2019.11.28 | 20个小时 | 1660 | 选择合适的算法、合理的循环结构,熟练的编写程序 | 对字符型函数和abs函数还不是太懂 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
请用思维导图的形式将到目前为止所学的内容进行整理
3.3.2学习体会
代码越来越难了,这次通过写代码,查阅资料,接触到了新的函数,新的long函数和abs函数还需要自己多花点时间去琢磨琢磨,感觉代码的世界越来越奥妙了,自己还有很多要学的地方;
感觉时间很不够用,最近作业很多,事情也很多,有时候走在路上,脑子里面想的都是代码,走路时候手机看的也是代码,还是感觉自己的悟性还不够,还需要加大自学的力度,抓住空闲的时间