原题:
输入N个学生的C语言程序设计课程成绩,请你设计一个函数来编程找出这些学生的最高分、并列第一的学生数。
函数原型:int search(int x[], int n, int *count);
输入
输入包含两行:
第一行是N(0 < N < 1000)。
第二行是N个整数,代表N个学生的C语言程序设计课程成绩,邻近两数之间用一个空格隔开。
输出
按照题目要求输出最高分和取得最高分的学生数,用一个空格隔开。
输入示例
10
52 95 87 69 78 84 82 95 90 95
输出示例
95 3
数据范围
输入和输出均为int范围的整数,对于100%的数据,0 < N < 1000
我的:
#include
int x[1000];
int *count=0;
int search(int x[], int n, int *count)
{int i,j,temp;
for(i=0;i<n;i++)
{for(j=0;j<n-i;j++)
if(x[j]1])
{
temp=x[j];
x[j]=x[j+1];
x[j+1]=temp;}
}
for(i=0;i<n;i++)
if(x[i]==x[0]){
*count+=1;}
return *count;
}
int main(){
int N,i;
scanf("%d",&N);
for(i=0;i<N;i++)
{
scanf("%d",x[i]);
search(x,N,count);}
printf("%d %d",x[0],*count);
return 0;
}
输出不了结果,求看看哪里出问题
修改如下, 供参考:
#include <stdio.h>
int x[1000];
int count = 0; //int* count = 0; 修改
int search(int x[], int n, int* count)
{
int i, j, max; //temp;修改
max = x[0];
for (i = 0; i < n; i++)
{
//for (j = 0; j < n - i; j++) 修改
if (max < x[i])
{
max = x[i];
//temp = x[j]; 修改
//x[j] = x[j + 1];
//x[j + 1] = temp;
}
}
for (i = 0; i < n; i++)
if (x[i] == max) {
(*count) += 1; //修改
}
return max; //return *count;修改
}
int main() {
int N, i, max;
scanf("%d", &N);
for (i = 0; i < N; i++)
//{ 修改
scanf("%d", &x[i]); //scanf("%d", x[i]);修改
max = search(x, N, &count); //(x, N, *count);修改
//} 修改
printf("%d %d", max, count);
//printf("%d %d", x[0], *count);修改
return 0;
}
主函数里的search函数应该这样传参:search(x,N,&count);因为在定义search函数时,count变量是指针,所以应该把地址给它