C语言1博客作业10
这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | C语言I博客作业10 |
我在这个课程的目标是 | 熟练掌握C语言 |
这个作业在哪个具体方面帮助我实现目标 | 熟练掌握了各种循环结构 |
参考文献 | Markdown基本语法 集美大学林丽老师 |
一.PTA实验作业
1. 梅森数
题目内容描述:形如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)数据处理
数据表达:
用了整形变量,t=0作为变量标记
当n=1时,输出None
外层循环,从2开始,b=pow(2,a)-1
内层循环,从2开始,如果b%i=0,t=1,跳出循环
如果t=0,输出b
t要重置为0
返回主函数
数据处理:伪代码
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,a,b=0,t=0;//输入整形变量n,i,a,b,t
scanf("%d",&n);
if(n==1)//当n=1时
printf("None");//输出None
for(a=2;a<=n;a++)//从2开始循环n次
{
b=pow(2,a)-1;
for(i=2;i<b;i++)//从2开始循环b次
{
if(b%i==0)//如果b%i=0
{
t=1;
break;//跳出循环
}
}
if(t==0)//如果t=0
printf("%d\n",b);//输出b
t=0;//t重置为0
}
return 0;
}
(2)实验代码截图
(3)造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
4 | 3 7 | 从小到大的顺序输出所有不超过2的n次方−1的梅森数,每行一个有2个 |
5 | 3 7 31 | 从小到大的顺序输出所有不超过2的n次方−1的梅森数,每行一个有3个 |
6 | 3 7 31 | 从小到大的顺序输出所有不超过2的n次方−1的梅森数,每行一个有3个 |
(4)PTA提交列表及说明
提交列表说明
答案正确:在编译器中提前编译,其中有一次答案错误是因为没有考虑到b%i=0的情况
2.输出三角形字符阵列
题目内容描述:本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。
输入格式:
输入在一行中给出一个正整数n(1≤n<7)。
输出格式:
输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格。
输入样例:
4
输出样例:
A B C D
E F G
H I
J
(1)数据处理
数据表达:用了整型变量n,i,a,b,c
表达式: b=n-1;c=(1+n)*n/2;循环c次输出字符
如果如果i==n-1,则输出换行n+=b; b--;
数据表达:伪代码
#include <stdio.h>
int main()
{
int n,i,a,b,c;//输入整形变量n,i,a,b,c
scanf("%d",&n);
b=n-1;//下一行的数目=上一行的数目-1
c=(1+n)*n/2;//数目的规律
for(i=0;i<c;i++)//循环c次
{
printf("%c ",'A'+i);//输出'A'+i
if(i==n-1)//如果i==n-1
{
printf("\n");//输出换行
n+=b;
b--;
}
}
}
(2)实验代码截图
(3)造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
1 | A | 输出1行由大写字母A开始构成的三角形字符阵列 |
2 | A B C | 输出2行由大写字母A开始构成的三角形字符阵列 |
3 | A B C D E F | 输出3行由大写字母A开始构成的三角形字符阵列 |
(4)PTA提交列表及说明
提交列表说明
1.格式错误:第13行中没有输出换行
2.答案正确:在第13行中输出换行
3.同构数
题目内容描述:一个数恰好出现在它的平方数的右端,这个数就称为同构数。找出1~1000之间的全部同构数。
####### 输出格式:
在一行中输出所有满足条件的同构数,每个数输出占6列。没有其它任何附加格式和字符。
输出样例:
1 5 6 25 76 376 625
(1)数据处理
数据表达:
用了定义函数fun,用了整形变量
用了if结构选择循环,后用了for结构循环
数据处理:伪代码
#include<stdio.h>
int fun(int x)//定义fun函数
{
int k;//输入整形变量k
k=x*x;
if((k%10==x)||(k%100==x)||k%1000==x)//如果k满足(k%10==x)(k%100==x)(k%1000==x)其中一个或者多个
return 1;//返回值为1
else//否则
return 0;//返回值为0
}
int main(){
int i=0;//输入整形变量i
for(i=1;i<=1000;i++)//从1开始,循环1000次
{
if(fun(i)){//如果fun函数i为真函数
printf("%6d",i);//输出i
}
}
return 0;
}
(2)实验代码截图
(3)造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
无 | 1 5 6 25 76 376 625 | 1~1000之间的全部同构数。 |
(4)PTA提交列表及说明
提交列表说明
1.答案错误:第5行中少了k%1000==x
2.编译错误:第13行中写成了i<1000
3.答案正确:第5行中加上k%1000==x,在第13行中写出i<=1000
二.代码互评
同学代码:
自己代码:
比较
(1)第一份代码用了char op字符型变量,结构上该同学的更加整洁美观,也更容易懂。
(2)我的代码直接定义整形变量,后面变为字符型输出
(3)这位同学的比我的更简单,更容易懂
同学代码:
自己代码:
比较
(1)第一份代码用了自定义函数,然后先进行了for循环然后进行while结构,最后进行if判断,结构上该同学的整洁美观。
(2)我的代码用了定义fun函数,先进行了if选择,后进行for循环,最后输出i
1.学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第四周 | 7小时 | 100行 | 在屏幕上显示Hello World! | 无 |
第五周 | 8小时 | 100行 | 求华氏温度对应的摄氏温度 | 无 |
第六周 | 21小时 | 400行 | 如何用 MinGW-w64 来编译C程序 | 无 |
第七周 | 24小时 | 478行 | 运用if语句完成各种数学程序 | 对于&&的用法不了解,现在操作不熟练 |
第八周 | 20小时 | 349行 | 掌握使用for循环语句实现指定次数的循环程序设计 | 无 |
第九周 | 23小时 | 264行 | 学会使用自定义函数 | 目前不太熟练 |
第十周 | 22小时 | 167行 | 熟悉多分支结构、字符型数据类型和逻辑运算符 | 还没有完全熟悉 |
第十一周 | 18小时 | 150行 | 熟悉多分支结构switch语句的使用 | 无 |
第十二周 | 16小时 | 130行 | 熟悉使用while和do-while结构解决问题 | 目前还不太熟练 |
第十三周 | 15小时 | 120行 | 熟悉使用for结构,了解并掌握了break语句和continue语句 | 目前还不太熟练continue语句 |
第十四周 | 15小时 | 180行 | 熟悉使用循环结构 | 目前还不太熟练 |
2. 累积代码行和博客字数
时间 | 博客字数 | 代码行数 |
---|---|---|
第四周 | 525 | 50 |
第五周 | 645 | 100 |
第六周 | 645 | 400 |
第七周 | 2659 | 478 |
第八周 | 3586 | 597 |
第九周 | 4769 | 698 |
第十周 | 5897 | 787 |
第十一周 | 6289 | 897 |
第十二周 | 7594 | 1056 |
第十三周 | 8679 | 1170 |
第十四周 | 9879 | 1278 |
3 .学习内容总结和感悟
(1)学习内容总结
(2) 学习体会
学习c语言有一段时间了,越是学到后面越难,上周学习了break语句和continue语句,这周总结了循环结构,并且知道了这两个语句的区别,又增加了一项编码技巧,又学到了新的C语言知识,现在编代码时没有以前那么吃力了,但是仍然不太熟练,而且题目也越来越难了,我还欠缺很多的锻炼,也欠缺很多知识,我以后还需要更努力的去练习,花更多的时间在这里,朝着我的目标前进