今年的湖北省专升本考试已经在5月7日结束了,有许多学弟学妹想看看今年的考题究竟难不难,学长找到知情朋友打听了一些题目,为大家每期分享一题。
题目:
找出数组的最大值及其下标。(这一道题来自湖北省一所公办院校)我们一起来看看这道题如何解。
假设数组元素为:23,12,9,88,67,101,66,10,90,34
#include<stdio.h>
int main(){
int max(int,int); //函数声明,其他函数写在主函数的下面则需要在主函数的开头对其进行声明,因为C语言是自上而下顺序执行的
//函数声明并不在乎形参变量名是什么,它只在乎形参的类型,因此声明的时候可以不注明形参名。
int arr[] = {23,12,9,88,67,101,66,10,90,34};
//计算这个数组有多少个元素
int len = sizeof(arr)/sizeof(int);
int temp = 0; //用来存储两者中较大的那个值
int tag = 0; //用来记录最大值的数组下标
for(int i=0;i<len;i++){ //用for循环遍历数组每一个元素
temp = max(arr[i],temp); //调用max函数用来比较两者之中较大的那一个数,并把较大的那个数重新赋值给变量temp
//下一次比较时就是数组中下一个数和上一次比较结束后的较大的那个数了
if(temp == arr[i]){ //用if条件语句来控制,因为只有当temp的值发生变化时,才说明程序找到了一个更大的数
//而这个变化是可以通过比较temp和当前下标的元素值是否相等来判断的,因此如果temp发生了变化
//就修改变量tag的值,记录当前最大值数组元素的下标
tag = i;
}
}
printf("最大的数是:%d,其下标为:%d",temp,tag);
return 0;
}
int max(int x,int y){ //函数定义,他有两个形参都是int类型
int num; //用来作为返回值返回两者中最大的那个数
if(x != y){ //先判断一下这两个数是不是相等,如果相等,其实际上让num等于哪一个都可以,这里我们让他等于第一个
num = x > y ? x : y; //三元表达式,就是如果x>y那么num就等于x,否则num就等于y
}else num = x;
return num; //将num最为返回值返回
}