这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | C语言I作业10 |
我在这个课程的目标是 | 熟练的使用C语言 |
这个作业在那个具体方面帮助我实现目标 | 写PTA作业并掌握好循环结构 |
参考文献 | 百度文库 |
一.PTA实验作业
1.输出三角形字符阵列
题目内容描述:本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。
输入格式:
输入在一行中给出一个正整数n(1≤n<7)。
输出格式:
输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例,其中每个字母后面都有一个空格。
输入样例:
4
输出样例:
A B C D
E F G
H I
J
1.1.1数据处理
1.定义了整形变量i,n,j,其中i,j用于控制循环,而n为行数。
2.定义了字符变量ch。
数据处理:
伪代码
#include<stdio.h>
int main()
{
int i, n, j; //定义了整形变量i,n,j
char ch;
scanf("%d", &n);
ch = 'A'; //将'A'的值赋给ch
for (i = 1; i <= n; i++) //确定第几行
{
for (j = i; j <= n; j++)//确定这一行中输出几个字符
{
printf("%c ", ch);//输出字符ch
ch++; //ch自增
}
printf("
"); //输出换行
}
return 0;
}
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
1 | A | 输出1行由大写字母A开始构成的三角形字符阵列 |
4 | A B C D E F GH I J | 输出4行由大写字母A开始构成的三角形字符阵列 |
5 | A B C D E F G H I J K L M N O | 输出5行由大写字母A开始构成的三角形字符阵列 |
1.1.4 PTA提交列表及说明
提交列表说明:
1.把&给打成8了。
2.%c后面忘记打空格了。
1.2 梅森数
形如2n−1的素数称为梅森数(Mersenne Number)。例如22−1=3、23−1=7都是梅森数。1722年,双目失明的瑞士数学大师欧拉证明了231−1=2147483647是一个素数,堪称当时世界上“已知最大素数”的一个记录。
本题要求编写程序,对任一正整数n(n<20),输出所有不超过2n−1的梅森数。
输入格式:
输入在一行中给出正整数n(n<20)。
输出格式:
按从小到大的顺序输出所有不超过2n−1的梅森数,每行一个。如果完全没有,则输出“None”。
输入样例:
6
输出样例:
3
7
31
1.2.1数据处理
数据表达:定义整型变量b,c,flag,n,i;其中flag是表示判断的变量,当做标志,来判断梅森数,n为输入的数,c为输出的梅森数,b,i用来控制循环。
数据处理:伪代码
#include<stdio.h>
#include<math.h>
int main()
{
int b, c = 0, flag = 0, n, i; //定义整形变量b,c,flag,n,i;
scanf("%d", &n);
if (n == 1) //当n=1时
printf("None"); //输出"None"
for (b = 2; b <= n; b++) //从2^2-1开始
{
c = pow(2, b) - 1; //c=2^b-1
for (i = 2; i < c; i++) //判断是否为素数
{
if (c % i == 0) //取余为0,可整除
{
flag = 1;
break; //跳出循环
}
}
if (flag == 0) //如果flag=0,则代表i没有被2至i-1之间的任意数整除,即i为素数.
printf("%d
", c); //输出c
flag = 0;
}
return 0;
}
1.2.2实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
3 | 3 7 | 在这个范围内总共有2个梅森数 |
8 | 3 7 31 127 | 在这个范围内总共有4个梅森数 |
6 | 3 7 31 | 在这个范围内总共有3个梅森数 |
1.2.4 PTA提交列表及说明
编译错误:“==”成了“=”。
1.3同构数
一个数恰好出现在它的平方数的右端,这个数就称为同构数。找出1~1000之间的全部同构数。
输出格式:
在一行中输出所有满足条件的同构数,每个数输出占6列。没有其它任何附加格式和字符。
输出样例:
1 5 6 25 76 376 625
1.3.1数据处理
数据表达:定义整型变量i,判断i为输入的数。
数据处理:伪代码
#include <stdio.h>
int main()
{
int i; // 定义整形变量i,i为输入的数
for (i = 1; i < 1000; i++) // 1~1000之间的同构数
if (i < 10 && i * i % 10 == i) //处理10以下的数
printf("%6d", i); //输出i
else if (i >= 10 && i < 100 && i * i % 100 == i) //处理100以下的数
printf("%6d", i); //输出i
else if (i * i % 1000 == i) //处理1000以下的数
printf("%6d", i); //输出i
printf("
"); //输出换行
return 0;
}
1.3.2实验代码截图
1.3.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
无 | 1 5 6 25 76 376 625 | 1~1000内的所有同构数。 |
1.3.4 PTA提交列表及说明
提交列表说明:
1.编译错误:刚开始时把&&写的是||
2.编译错误:输出没有写成%6d
二.代码互评
同学代码:
自己代码截图
1.他是用的for循环来递减的,而我是用for循环来递增的。
2.我是一开始直接定义整形变量的,而他则是在for循环里面声明整形变量的。他的声明周期就是for循环内部,每次进入都是新的变量,占用栈上空间,在for里面定义的局部变量只有在for语句块里是有效的可见的而已,到外面就撤销了、不存在了。
同学代码:
自己代码截图
1.我是用多分支结构else-if语句来处理1~1000内的所有同构数,他是自定义函数求平方,他用for来计算求余除的数,但都是用的计算位数的方法求余,
2.我是直接定义整形变量,为全局变量,而他在for循环语句中定义了局部变量
3.学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第四周 | 10 | 140 | 如何用 MinGW-w64 来编译C程序 | 无 |
第五周 | 20 | 160 | 学会了输入 | 无 |
第六周 | 8 | 220 | 学会了if-else | 无 |
第七周 | 16 | 378 | 运用if,else语句 | 无 |
第八周 | 20 | 341 | 运用for循环语句 | 对for的用法还不怎么会 |
第九周 | 21 | 345 | 学习了如何使用自定义函数 | 自定义函数还不太会 |
第十周 | 23 | 425 | 熟悉并掌握多分支结构、字符型数据类型和逻辑运算符结构 | 无 |
第十一周 | 20 | 456 | 熟悉并掌握分支结构switch语句 | 无 |
第十二周 | 25 | 430 | 学会使用while和do-while结构解决问题 | 各个运算符的意思还不太理解 |
第十三周 | 27 | 340 | 嵌套循环,一.二维数组 | 多层嵌套还不太熟练 |
第十四周 | 34 | 530 | 学习了指针和一维字符数组 | 有了一个初步的了解,但指针还不太会使用 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
这周的作业我感觉难度越来越高,比上周难多了,第一题就搞了好久的时间,这周我学习了一维字符数组,其实这和一维数组差不多,但还是有所不同,我也学习了指针变量,即类型名指针变量名1,指针变量名2,... *指针变量名n ;基本的怎样定义也知道了,但实际应用还不太行,不过我学到的指针好像是搞游戏外挂的基本原理,还有乱用会造成系统崩溃,下周得继续学习指针的实际应用,加油!