输出三角形字符c语言pta,C语言1博客作业10 - osc_hyhwtzyu的个人空间 - OSCHINA - 中文开源技术交流社区...

这个作业属于那个课程

C语言程序设计II

我在这个课程的目标是

熟练掌握C语言

这个作业在哪个具体方面帮助我实现目标

熟练掌握了各种循环结构

一.PTA实验作业

b274fc2c8e94ee88ecf2297cbfbdfdd4.png

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)实验代码截图

5da155a6263db2a2149d82826f2c76b4.png

(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提交列表及说明

4b9371cb672823aa1872f47af52a642b.png

提交列表说明

答案正确:在编译器中提前编译,其中有一次答案错误是因为没有考虑到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)实验代码截图

c5aeb43d8d9244a31d0ea655a212c8c2.png

(3)造测试数据

输入数据

输出数据

说明

1

A

输出1行由大写字母A开始构成的三角形字符阵列

2

A B C

输出2行由大写字母A开始构成的三角形字符阵列

3

A B C D E F

输出3行由大写字母A开始构成的三角形字符阵列

(4)PTA提交列表及说明

5159e6fb2d32e3502521402910d98248.png

提交列表说明

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)实验代码截图

7237e06d941119185db4aba865aa3ff0.png

(3)造测试数据

输入数据

输出数据

说明

1 5 6 25 76 376 625

1~1000之间的全部同构数。

(4)PTA提交列表及说明

69a3e5ddd8750652a613bf22de53a293.png

提交列表说明

1.答案错误:第5行中少了k%1000==x

2.编译错误:第13行中写成了i<1000

3.答案正确:第5行中加上k%1000==x,在第13行中写出i<=1000

二.代码互评

同学代码:

0d577146dd8f5637e7d556a104114d24.png

自己代码:

fcc86267b35841c51eca832bf9361913.png

比较

(1)第一份代码用了char op字符型变量,结构上该同学的更加整洁美观,也更容易懂。

(2)我的代码直接定义整形变量,后面变为字符型输出

(3)这位同学的比我的更简单,更容易懂

同学代码:

7b1b50b0c35fd1ec9c0e6428923695fd.png

自己代码:

9d71111429bbeadcbfef1b95aa0da5c9.png

比较

(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

a77ec46e2543fcd5dc6fa8991d8d65fd.png

3 .学习内容总结和感悟

(1)学习内容总结

b31bdef489749e41a0fdacf3e396442d.png

(2) 学习体会

学习c语言有一段时间了,越是学到后面越难,上周学习了break语句和continue语句,这周总结了循环结构,并且知道了这两个语句的区别,又增加了一项编码技巧,又学到了新的C语言知识,现在编代码时没有以前那么吃力了,但是仍然不太熟练,而且题目也越来越难了,我还欠缺很多的锻炼,也欠缺很多知识,我以后还需要更努力的去练习,花更多的时间在这里,朝着我的目标前进

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值