1.PTA实验作业

1.1 题目名1
下面是一个完整的下三角九九口诀表:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
本题要求对任意给定的一位正整数N,输出从1*1到N*N的部分口诀表。
输入格式:
输入在一行中给出一个正整数N(1≤N≤9)。
输出格式:
输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。
输入样例:4
输出样例:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1.1.1数据处理
数据表达:用了n,j,i三个变量,i,j的值是通过不断循环得到,n的值是输入的,都是整型变量。
数据处理:
伪代码:
int i,j,n; /*定义三个整型变量,i,j,n*/
scanf ("%d", &n); /*调用scanf()函数输入范围1-9内的任意一位正整数n*/
for i←1 to n /*嵌套循环,外层循环执行n次,求累加和*/
do for j←1 to i /*内层循环重复i次,算出结果*/
do printf ("%d*%d←%-4d",j,i,j*i); /*其中“%-4d”表示等号右边数字占4位、左对齐*/
printf ("
"); /*输出下三角n*n部分口诀表*/
1.1.2实验代码截图

1.1.3 造测试数据
输入数据 |
输出数据 |
说明 |
4 |
 |
与题目样例一样正确 |
5 |
 |
随机取1-9之间的数检验代码是否运行正确 |
1.1.4 PTA提交列表及说明

1.编译错误:j=1后面多了一个/,去掉后部分正确;
2-3.部分正确:第十行中代码里面是“i,j,i*j”,其顺序不合题意,将i,j位置换了之后,答案正确;
4.答案正确。
1.2 题目2
将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?
输入格式:输入在一行中给出待换的零钱数额x∈(8,100)。
输出格式:要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数
量,fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。
输入样例:13
输出样例:
fen5:2, fen2:1, fen1:1, total:4
fen5:1, fen2:3, fen1:2, total:6
fen5:1, fen2:2, fen1:4, total:7
fen5:1, fen2:1, fen1:6, total:8
count = 4
1.2.1 数据处理
数据表达:用了x,count,i,j,a个变量,i,j,a,count的值通过不断循环得出,x的值是输入的,都是整型变量。
数据处理:
伪代码:
int x,count,i,j,a; /*定义五个整型变量,i,j,x,count,a*/
count←0 /*变量初始化*/
scanf ("%d",&x); /*调用scanf()函数输入(8,100)的任意一位零钱数额x*/
for i←x/5 downto 0 /*循环嵌套,开始循环*/
do for j←x/2 downto
do for a←x downto 0
do IF 5*i + 2*j + a= x THEN /*若符合该条件,则进行以下程序*/
do printf("fen5:%d, fen2:%d, fen1:%d, total:%d
",i,j,a,i+j+a);
count←count+1
END IF
printf("count ← %d",count);
1.2.2 实验代码截图

1.2.3 造测试数据
输入数据 |
输出数据 |
说明 |
13 |
 |
与题目样例一样正确 |
20 |
 |
随机取(8,100)之间的正整数检验代码是否运行正确 |
30 |
 |
随机取(8,100)之间的正整数检验代码是否运行正确 |
1.2.4 PTA提交列表及说明

1.编译错误,12行没有打换行符"
",加上后编译错误
2.编译错误,发现等于符号用成了=,没有用==,改正后编译错误
3.编译错误,for语句后面都没有打{},加上去后还是编译错误
4.编译错误,把错误信息翻译了一下,说i,j,a没有声明,我不太懂是什么意思,就把它们都变量初始化,赋值为0,可是还是编译错误
5.编译错误,感觉可能是空格的错误,改了一下,不过还是编译错误
6.编译错误,感觉有时候for语句中的i,j,a可以不用int,就把它们删了,可是还是错的
7.编译错误,重新把i,j,a加上去后,还有一些空格去掉后,答案错误
8.答案错误,发现最后printf()里是"%d", count的格式不合题意,改成"count = %d",count后正确了
9.答案正确。
2.代码互评
同学代码截图1 |
自己代码截图 |
 |
 |
同学1和我的代码里面都用了循环嵌套,不过同学1在for循环里面用了if语句,其实我没太看懂!感觉这个其实麻烦一点!用一个“%-4d”就直接ok了。
同学代码截图2 |
自己代码截图 |
 |
 |
他只用了两个for语句,没有用if语句,感觉同学2写的代码比较麻烦,我看的不太懂,x=x-8不知道这个是什么意思,自己的代码比较明了一点!
3.学习总结
3.1 学习进度条
周/日期 |
这周所花的时间 |
代码行 |
学到的知识点简介 |
目前比较迷惑的问题 |
第13周/11.22 |
两天 |
99 |
循环嵌套,break语句,continue语句 |
伪代码的正确示范?打代码时什么时候要空格,什么时候不要 |
第12周/11.14 |
两天 |
107 |
whlie语句,do-whlie语句的使用方法,伪代码 |
不太清楚字符型的使用方法 |
第11周/11.9 |
一天 |
137 |
switch语句 |
scanf语句在int后面和在for或其他语句后面有什么区别吗 |
第10周/11.4 |
一天 |
112 |
if语句的嵌套,字符型,逻辑运算符 |
怎么活用已学知识点做PTA |
第9周/10.25 |
一天半 |
88 |
函数的定义,调用 |
“/=”是什么意思 |
第8周/10.18 |
两天左右 |
84 |
循环结构,for语句 |
在Dev-C++里面正确的代码到PTA上是答案错误怎么解决 |
第7周/10.8-10.12 |
两天左右 |
49 |
scanf()函数,if-else语句,常用的数学函数,关系运算符... |
PTA作业怎么能好好的做完! |
3.2 累积代码行和博客字数

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



3.3.2 学习体会
这周写代码学到了一些新知识,“%-4d”是数字占4位、左对齐的意思;“for i←1 to n do”是伪代码中For循环的一种,表示for(i=1;i⇐n;i++){};“for i←n
downto 1 do”表示for(i=n;i>=1;i–){};还有就是伪代码中“==”用“=”表示。可是对于伪代码我还是不太清楚,正确的格式到底是怎样的?我发现每周打代码
出现的错误都会有因为空格多或少错,不太理解为什么?上周我翻了翻以前写的博客,第一次博客作业里我的大一规划写着“每天花2小时编程,代码量达到每天15
行;每天记25个单词,为4级英语做准备”,现在好像没有做到过,哈哈哈,有点搞笑。希望自己认真一点吧!