这个作业要求在哪里 |
C语言I作业10 |
我在这个课程的目标是 |
学会编程,运用编程制作有趣的东西 |
这个作业在那个具体方面帮助我实现目标 |
多了解c语言的一些知识 |
参考文献 |
C语言程序设计I,百度 |
1.PTA作业
1.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数据处理
**数据表达:定义整形变量i,j,n,定义字符变量ch,令ch=‘A’,i,j为循环条件,n为输入的数。**
**数据处理:伪代码**
定义整形变量和字符变量
输入n
for(i=0;i
1.1.2实验代码截图

1.1.3造测试数据
2 |
 |
1-7之间 |
3 |
 |
1-7之间 |
4 |
 |
1-7之间 |
6 |
 |
1-7之间 |
1.1.4PTA提交列表及说明

###提交列表说明:
**1.答案错误:我没有使用循环嵌套,输出不了多个行,字母没有出来,后经改正运用循环嵌套**
**2.答案错误:我写的是“i=1;i<=n和j=1;j<=n-i"显示答案错误后改为i=0;i
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数据处理
**数据表达:定义整形变量i,j,sum,n,count=0 ,n为输入的数 ,sum为输出梅森数,i,j为循环条件 **
**数据处理:伪代码**
输入n
if n>=2&&n<20 then
for i=2 to n
把2的m次方减1赋值给sum
for j=2 to i-1
if i%j==0 then
count累加
if x==0 then
输出i和换行
count=0;
else输出None
1.2.2实验代码截图


1.2.3造测试数据
0 |
 |
没有素数 |
8 |
 |
范围内的随机数 |
12 |
 |
范围内的随机数 |
19 |
 |
最大的数 |
1.2.4PTA提交列表及说明

**提交列表说明:**
**1.部分正确:在0的那种情况,答案错误,询问大佬后,在23行中添加count=0**
**2.编译错误是自己在devc++上出现的“;”忘记打,或者是将“;”输入为“,”**
**3.不知道怎样一个顺序,后询问同学,借鉴后完成**
1.3同构数
**内容:**一个数恰好出现在它的平方数的右端,这个数就称为同构数。找出1~1000之间的全部同构数。
输出格式:
在一行中输出所有满足条件的同构数,每个数输出占6列。没有其它任何附加格式和字符。
输出样例:
1 5 6 25 76 376 625
1.3.1数据处理
**数据表达:定义一个变量i,为循环条件。**
**数据处理:伪代码**
定义变量
for i<-1;i<=1000;i++)
位数有个,十,百。
if(0<=i&&i<=9)个位数,即一位数
if(i==(i*i)%10)表示这些位数
输出i
if(10<=i&&i<=99)十位数,即两位数
if(i==(i*i)%100)
输出i
if(100<=i&&i<=999)百位数,即三位数
if(i==(i*i)%1000)
输出i
if(i==1000)
当i为1000时,显然不是同构数,故不作判定
1.3.2实验代码截图

1.3.3造测试数据
|
 |
同构数 |
1.3.4PTA提交列表及说明

**提交列表说明:**
**1.格式错误:我将%d后面加了6个空格,在devc++上运行是正确的,比较懵,就将空格打在%d前面**
**2.格式错误:询问同学,最终将%d改为了%6d,答案正确**
2.代码互评
同学的代码

自己的代码

**1.1.她定义了整形变量n,i,a,b,c b=n-1;c=(1+n)*n/2;循环c次输出字符 ,如果i==n-1,则输出换行n+=b; b--;**
**1.2.我的定义整形变量i,j,n,定义字符变量ch,令ch=‘A’,i,j为循环条件,n为输入的数。**
**2.1.她在for循环中输入字符‘A’循环嵌套中为for与if两种语句**
**2.2.我运用char ch字符变量,运用两个for语句,对字符进行输出**
同学的代码

自己的代码

**1.1.她用了整形变量i,y,digit,sum; i用来控制循环次数,即用户给出的找同构数的范围, y和n,digit用来判断数i的位数,sum用来保存i的平方。**
**1.2.我只定义一个变量i,为循环条件。**
**2.1. 她运用for循环语句对digit初始化为0 ,将i的平方赋值给sum ,将i赋值给n , 将整形变量n/10赋值给y ,将整形变量n/10赋值给n ,digit累加,用 switch语句,分别判断位数不同的数是否符合同构数的条件,如果符合则输出该数,然后跳出循环。**
**2.2.我是对1000以内的数字进行分段求,有百位数,个位数等,整体感觉我的要简洁些**
3.学习总结
3.1学习进度条
第四周 |
8h |
20 |
简单输出 |
无 |
第五周 |
10h |
40 |
学习输入 |
无 |
第六周 |
20h |
60 |
用WinGW-w64来编译C程序 |
文档真的打不开,可能是电脑原因 |
第七周 |
10h |
90 |
关系运算,if-else语句,格式化输入语句scanf() |
有的数学逻辑问题不太懂 |
第八周 |
8.5h |
80 |
for的循环语句,指定次数的循环程序设计 |
不太会文字与数学的转换 |
第九周 |
8h |
100 |
函数的调用和定义的初步认识 |
自定义函数不熟悉 |
第十周 |
10h |
170 |
多分支结构、字符型数据类型和逻辑运算符 |
多个数据输出不熟练 |
第十一周 |
11h |
110 |
熟悉多分支结构switch语句的使用 |
逻辑思维能力差 |
第十二周 |
9h |
200 |
熟悉whlie和do-whlie结构 |
字符那方面不熟 |
第十三周 |
8h |
180 |
熟悉嵌套循环,break和continue的用法 |
当运用到真题方面还是会不太会 |
第十四周 |
8h |
110 |
选择合适的算法、合理的循环结构,熟练的编写程序 |
最大的问题是不懂题意 |
3.2累积代码行和博客字数
第四周 |
441 |
20 |
第五周 |
441 |
20 |
第六周 |
1112 |
150 |
第七周 |
1800 |
190 |
第八周 |
2300 |
220 |
第九周 |
3100 |
220 |
第十周 |
4000 |
400 |
第十二周 |
4900 |
620 |
第十三周 |
6700 |
910 |
第十四周 |
7600 |
1020 |

3.3学习内容总结和感悟
3.3.1学习内容总结

3.3.2学习体会
1.感觉还是挺难得,刚开始题目都看不懂
2.学习之旅长路漫漫,还得慢慢来,不会的就要搞懂
3.期末也快要到了,努力复习,抓紧时间
4.有空就多多练习练习
**补充:**
一、输入数字可以用scanf输入。
如果输入的是整型数据,可以用
int a;
scanf("%d",&a);
实现把输入的数字赋值给a的效果。
类似的,如果是float, double,short,long等类型的数据,那么就要把变量定义成对应的类型,然后使用各自的格式字符%f,%lf,%hd,%ld等进行输入。
二、输入单个字符。
输入单个字符可以用以下两种函数。
定义char c;
1 scanf("%c", &c);
这种方法和输入数字是类似的,%c仅读入一个字符,并赋值给c。
2 c = getchar();
getchar函数的功能就是读入一个字符,并以返回值形式返回。
三、输入一串字符(以空白字符分隔)。
可以用scanf的%s格式。
char str[100];//空间要定义足够大
scanf("%s", str);//将字符串读入并存在str中
四,读入一行数据。
可以用gets函数。gets的功能就是读入一整行数据,以换行符为结束。
char str[100];//同样要足够大的空间
gets(str);
补充,无论哪种形式的输入,都可以用getchar逐个输入到字符串中,然后判断结束符以结束输入,再对字符串做处理。这种方法对编程水平要求比前几种略高,代码量也更大,但好处是完全自己控制,更加灵活。、输入数字可以用scanf输入。
如果输入的是整型数据,可以用
int a;
scanf("%d",&a);
实现把输入的数字赋值给a的效果。
类似的,如果是float, double,short,long等类型的数据,那么就要把变量定义成对应的类型,然后使用各自的格式字符%f,%lf,%hd,%ld等进行输入。
二、输入单个字符。
输入单个字符可以用以下两种函数。
定义char c;
1 scanf("%c", &c);
这种方法和输入数字是类似的,%c仅读入一个字符,并赋值给c。
2 c = getchar();
getchar函数的功能就是读入一个字符,并以返回值形式返回。
三、输入一串字符(以空白字符分隔)。
可以用scanf的%s格式。
char str[100];//空间要定义足够大
scanf("%s", str);//将字符串读入并存在str中
四,读入一行数据。
可以用gets函数。gets的功能就是读入一整行数据,以换行符为结束。
char str[100];//同样要足够大的空间
gets(str);
补充,无论哪种形式的输入,都可以用getchar逐个输入到字符串中,然后判断结束符以结束输入,再对字符串做处理。这种方法对编程水平要求比前几种略高,代码量也更大,但好处是完全自己控制,更加灵活。