一、PTA实验作业
题目一、7-3 将数组中的数逆序存放
本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。
输入格式:
输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。
输出格式:
在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。
输入样例:
4
10 8 1 2
输出样例:
2 1 8 10
1、本题PTA提交列表
2、设计思路
先定义一个整数n
定义i, //用于循环输入和输出
再定义一个数组a[50]
将输进去的n个数全部输进数组内
for n-1 到 0
printf a[i]
结构图
代码截图
3、调试过程
注意一下最后输出的数后面不跟空格,所以要将最后一个输出的数和之前输出的数分开
题目二、7-10 矩阵运算
给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。
输入格式:
输入第一行给出正整数n(1);随后n行,每行给出n个整数,其间以空格分隔。
输出格式:
在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。
输入样例:
4
2 3 4 1
5 6 1 1
7 1 8 1
1 1 1 1
输出样例:
35
1、本题PTA提交列表
2、设计思路
定义n,i,j,sum //n为矩阵的阶层,i、j用于循环,sum求和
定于二维数组a[10][10] //用于存放输入的数
for i=0到i
forj=0到j
循环嵌套输入数
for i=0到i
forj=0到j
当条件满足(!(i+j==n-1||j==n-1||i==n-1)时循环输出数组
代码截图
3、调试过程
错用了中文的符号
判断条件错误,写成!(i+j!=n-1||j!=n-1||i!=n-1),条件不明确,此时该矩阵的数都不满足该条件,循环后答案为0;
题目三、7-12 选择法排序(20 分)
本题要求将给定的n个整数从大到小排序后输出。
输入格式:
输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。
输出格式:
在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。
输入样例:
4
5 1 7 6
输出样例:
7 6 5 1
1、本题pta的提交列表
2、设计思路
主函数:
定义i,,k,n,a[10]; //i,k用来循环,n为所用判断的数,a[10]用来存放需要排序的数
用循环 for i=0 到 i
定义子函数px对该数组进行排序
用循环 for i=0 到 i
子函数:
定义 i,k,temp // i,k用于循环,temp用于实现两个数之间的交换
用循环嵌套for k=0到k
若满足,将a[i]与a[k]的值进行交换,并进行下轮比较
若不满足,则直接进行下一轮的比较
直至循环结束
结构图:
代码截图
3、调试过程
若是使用交换下标的方式来交换值的时候要注意看此时要交换的的是否是最小下标,如果不是,就要将该数与最小下标的值交换,否则在替换后会出现答案错误
二、同学作业互评
我的代码用了主函数调用子函数的方式,而芷逸的代码直接在主函数中完成。
直接写在主函数的话主函数比较冗长,若写在子函数的话,可以大大减少主函数的长度,也能比较清楚的看到程序的重点
三.本周题目集的PTA最后排名
四、学习总结
1、通过这次数组的学习,我学会了一维数组和二维数组的调用,
通过定义数组类型 数组名称 长度来构成,
这大大减少了定义的变量的数量,在内存的占用上相对比较集中
学习了几个新的函数,
strcopy(拷贝)strcat(连接)strcmp(判断)strlen(计算字符的长度)
但要记得调用这些函数时需用上
2、不会的地方
在PTA上的关于身份证的加权算法不太理解
在PTA上对错误代码的调试不太熟练