1.本章学习总结
1.1 思维导图
1.2 本章学习体会及代码量学习体会
1.2.1 学习体会
1.本章学习了数组,学习了如何定义数组,数组的输入与输出,一维数组和二维数组的运用等。
2.运用数组可以使一些数字或者字符在存放时可以有序号,以便于解决一些复杂问题。
3.但是运用数组要注意数组下标不能越界,定义数组时数组长度不能用变量表示以及字符型数用%s输出时要注意该字符型数组中需要含有‘ ’。
1.2.2 代码量累计
2.PTA总分
2.1 截图PTA三次题目集:一维数组、二维数组和字符数组共3次题目集的排名得分
2.2 我的总分:455
3.PTA实验作业
3.1 PTA题目1
除法运算
给定两个整数a,b,计算a/b
要求:
若能除尽,则直接输出,若为循环小数,将循环节用括号括起来
如输入1 3,则输出0.(3)
如输入12 5,则输出2.4
3.1.1 算法分析
定义两个变量供输入的变量a,b
输入a,b
定义一个数组c[100]用于存放小数部分100位
WholeNumber=a/b //求出a/b的整数部分
Remainder=a%b //求出a/b的余数
for i=1 to i=99
if i=1&&Remainder=0 then 跳出循环 then 输出 //说明a/b是整数
if i!=1&&Remainder=0 then 跳出循环 then 输出 //说明a/b是有限小数
c[i]=(Remainder*10)/b //将小数的每一位依次存放到c[i]中
end for
if i==100 //说明小数部分存取了100位
for y=0 to y=20 //检测小数从第几位开始循环,这里先定个20,不够可以再加
for j=1 to j=50 //这里检测循环的跨度,即几个数字一个循环,这里先定个50,不够再加
for o=y to o<100-j //从第y+1位开始判断,因为前面的y位已经不在循环节里面
if c[o]=c[o+j] count++
//表示第o+1位小数和第o+j+1位小数相等 并用count累计满足条件的次数,若count最后和循环次数相等,则说明j个数一个循环
最后输出无限循环小数
printf (WholeNumber) //先输出整数部分
printf(.)
for p=0 to p=y-1 //因为小数点后面的y位不再循环节内,先输出
printf(c[p])
end for
printf("(") //这里开始按格式要求输出循环节
for q=0 to q=j-1 //输出循环节中的j个数字
printf(c[y+q])
end for
printf(")")
然后就非常的perfect!!
3.1.2 代码截图
3.1.3 PTA提交列表及说明
忘记考虑无限循环小数从第几位开始循环
3.2 PTA题目2
螺旋方阵
所谓“螺旋方阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。
输入格式:
输入在一行中给出一个正整数N(<10)。
输出格式:
输出N×N的螺旋方阵。每行N个数字,每个数字占3位。
3.2.1 算法分析
定义供题目输入的变量n,循环层数Pile,输入的递增的数字Num
确定循环的层数(n奇数就为(n+1)/2层(后面再输入最中间一层的单独数字),偶数就为n/2层)
for i=0 to i=Pile-1 \设置循环层数
for j=0 to j=n-1 and j++//输入每层循环第一行的n-1个数字(从左到右)
do a[i][j]=Num and Num++
end for
for j=0 to j=n-1 and j++//输入每层循环最后一列的n-1个数字(从上到下)
do a[j][n-1]=Num and Num++
end for
for j=n-i-1 to i+1 and j-- //输入每层循最后一行的n-1个数字(从右到左)
do a[n-i-1][j]=Num and Num++
end for
for j=n-i-1 to i+1 and j-- //输入每层循第一列的n-1个数字(从下到上)
do a[j][i]=Num and Num++
end for
end for
if n%2!=0 then a[Plie-1][Plie-1]=Num //若n是奇数,最后一层循(也是最中间一层)环必定只有1个数字
输出数组a[n][n]
完美结束
3.2.2 代码截图
3.1.3 PTA提交列表及说明
1.忽略了n为奇数时,最中间的数字只有一个,忘记将其存进数组
2.就是对输入的顺序不时很明确
3.3 PTA题目3
jmu-c-大数加法
输入2个大数,每个数的最高位数可达1000位,求2数的和。
3.2.1 算法分析
定义两个字符型数组a,b 再定义一个整型数组c
利用循环输入a,b并计算出输入后a,b数组的元素个数i,j
计算a,b元素差t
if i>=j do
for p=i-1 to p>=0 and p-- //将b数组的元素向后移动直到个位和a数组对齐(这里要注意从最后一位开始处理)
do b[p+t]=b[p]
end for
for q=0 to q=t-1 //将b数组前面的数组都赋予0
do b[q]=0
end for
for o=0 to o=i-1 //计算每位之和,并且结果存入c数组中
c[o]=(a[o]-'0')+(b[o]-'0')
end for
for y=i-1 to y=0 //实现满十进一
do if c[y]>=10
then c[y]=c[y]-10 and c[y-1]++
end for
最后输出数组c判断c[0]是否为0,是的话不输出,不是的话输出
3.3.2 代码截图
3.3.3 PTA提交列表及说明
不小心让数组下标越界,经过调试后改正
4.代码互评
4.1 代码截图
我的代码
同学代码
4.2 二者的不同
1.首先我的代码就比较长,而这位同学代码更显得简洁
2.对最高位进位的处理方式不同