一、PTA实验作业
题目1:6-2 求出数组中最大数和次最大数
1. 本题PTA提交列表
2. 设计思路
定义函数int fun ( int *a, int n )
定义变量i,j表示下标,iindex=0表示最大值下标,max表示最大值,t表示交换中介
for i=0 to 1
for j=i to n-1
max←下标为index的数组元素*(a+index)
寻找数组中从下标为 j 开始的最大值
IF max<*(a+j)
index←j 把最大值的下标赋给index
交换a[i]和a[index]
end for
返回*a
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
开始时认为只是类似于冒泡排序于是把所有数组元素进行了排序,发现c++上答案和pta不一样后发现只需要做冒泡排序的前两次即可
题目2:6-3 统计大于等于平均分人数
1. 本题PTA提交列表
2. 设计思路
定义函数int fun ( float *s, int n, float *aver )
定义整型变量i,浮点型变量sum=0表示成绩之和,result表示大于等于平均分的同学个数
for i=0 to n-1
将所有输入的成绩求和
end for
计算平均分 *aver=sum/n
for i=0 to n-1
IF(输入的数组元素*(s+i)大于等于平均分*aver)
result++
end for
返回result
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
未给sum和result赋初值,输出结果异常。但如果只给sum赋初值,答案仍正确。
题目3:6-4 找最大值及其下标
1. 本题PTA提交列表
2. 设计思路
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
在赋值max=(a+k)过程中忘记加括号,而取地址符‘’优先级大于‘+’导致结果出错
二、截图本周题目集的PTA最后排名
三、阅读代码
#include"stdio.h"
#define nmax 50
main()
{
int i,k,m,n,num[nmax],*p;
printf("please input the total of numbers:");
scanf("%d",&n);
p=num;
for(i=0;i<n;i++)
*(p+i)=i+1;
i=0;
k=0;
m=0;
while(m<n-1)
{
if(*(p+i)!=0) k++;
if(k==3)
{ *(p+i)=0;
k=0;
m++;
}
功能:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,求出最后留下的是原来第几号的那位。
优点:利用数组和指针的方式将指针变量p所指向的变量赋值为0然后再在源地址上+1来跳过该数组元素。
四、本周学习总结
1.自己总结本周学习内容。
- 学会了一些常见的字符串操作函数
- 学会了数组名作为参数传递给指针变量
- 学会了一些基本的结构定义
2.罗列本周一些错题