c语言问题哦

来源:百度知道 编辑:UC知道 时间:2024/06/15 18:52:23
程序说明】
连续输入一批学生的成绩,直到输入成绩的数量超过50个或者输入的成绩不是有效成绩(有效成绩为0~100),将输入的有效成绩存入数组mark中,在数组中查找并输出最高分。函数getmax(array,n)在有n个元素的一维数组array中找出并返回最大值。
运行示例:
Enter marks: 90 80 77 65 -1
Max = 90
【程序】
#include <stdio.h>
#define MAXNUM 50
int getmax( (5) )
{ int k, max;
(6)
for(k = 1; k < n; k++)
if(max < array[k]) max = array[k];
return max;
}
void main( )
{ int k, x;
int mark[MAXNUM];
printf("Enter marks:");
k = 0;
scanf("%d", &x);
while( (7) ){
mark[k++] = x;
scanf("%d", &x);
}
if(k > 0) printf("Max = %d\n", getmax( (8) ));
else printf("No marks!\n");
}
【供选择的答案】
( 5) A、int n; int array[] B、void
C、int *array D、int array[],int n

5和8应该选d和a吧?

函数内使用了n,而本身并没有申请该局部变量,说明一定是通过参数传递进来的,所以一定是2个参数。a格式不合法,所以是d。作为形参,一维数组和指针是一样的,这一点根本不用考虑。

既然getmax是2个参数,那第一个参数一定是mark了,第二个一定是代表参与比较的数据个数,而从main函数的变量来看,只有参与了while循环并作为计数器的k可以准确表达这个变量。

第五个。由于array数组不是全局定义的数组导致你不能这么传进函数里。
int *array 的意思是将mark数组的头指针传进来,这样你才能用mark数组里的东西。
第八个。由于函数的声明是int getmax( int *array ) ,所以必须要传进去一个地址,而mark的意思除了表明数组名称还代表了数组的头地址,即mark等价于&(mark[0]).

不知道你明白了否?