第一周作业2:求最大值及其下标
7-2 求最大值及其下标 (20 分)本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。
输入格式:
输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。
输出格式:
在一行中输出最大值及最大值的最小下标,中间用一个空格分开。
输入样例:
6
2 8 10 1 9 10
输出样例:
10 2
1.实验代码:
#include<stdio.h>
# define N 10 //宏定义
int main()
{
int a[N];
int n, i, m, q=0; //注意q要赋初始值,考虑特殊情况
scanf("%d", &n);
for(i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
m = a[0];
for(i = 0; i < n; i++)
{
if(a[i] > m)
{
m = a[i];
q = i; //注意题目要求c输出的是【最小下标】
}
}
printf("%d %d", m, q);
return 0;
}
2.设计思路:
3.本题调试过程碰到的问题级解决办法
问题1:没有给q赋初始值,后来看了其他人代码依旧不能理解
解决方案:付出是之后调试,询问得知需考虑特殊情况,若为给q赋初始值,当数组中的第一个数大于其他数字时,if语句不满足会直接输出一个随机的q值,所以必须给q赋初始值
问题2:错误截图2中我将第二个for循环写成i=1而不是i=0
解决方案:这也是一种忽略了会存在数组中第一个数会大于下一个数字的情况,这是后面改过来才发现自己忽略思考的地方,这种思考不周全实我经常会犯的错误,所以说我们要养成习惯,即使这个题已经完成了依旧要思考为什么是这样的而不是另一种写法
4.运行截图
PTA正确截图
PTA错误截图