这个作业属于那个课程
C语言程序设计II
我在这个课程的目标是
熟练掌握C语言
这个作业在哪个具体方面帮助我实现目标
熟练掌握了各种循环结构
一.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
#include
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
{
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
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
{
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
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语言知识,现在编代码时没有以前那么吃力了,但是仍然不太熟练,而且题目也越来越难了,我还欠缺很多的锻炼,也欠缺很多知识,我以后还需要更努力的去练习,花更多的时间在这里,朝着我的目标前进