一个c语言的题,求各位大佬帮帮忙

试题描述

输入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

第1个回答  2018-12-04
int search(int x[], int n, int *count)
{
int i,m=*x;
*count=1;
for(i=0;i<n;i++)
{
if(m<*(x+i))
{
m=*(x+i);
*count=1;
}
else if(m==*(x+i))(*count)++;
}
return m;
}
main()
{
int x[100],n,count,i;
scanf("%d",&n);
for(i=0;i<n;i++)scanf("%d",x+i);
printf("%d %d\n",search(x, n, *count),count);
}追问

你好请问*count为什么可以直接赋值呢

我听同学说指针变量不能直接赋值,除了0以外

追答

*count可以直接赋值。但需要有条件。

字符型指针先指向一个已经定义过的字符变量或字符数组。
数字型指针先指向一个已经定义过的字符变量或字符数组。

以上两种情况,必能用*count形式赋值。除此之外的情形就不一定了,大多不能赋值。

另外,你同学说的只能赋值0是错误的。

如果能赋值,包括0都能赋值;如果不能赋值,0也不例外。

追问

好的谢谢!

本回答被提问者和网友采纳