C语言结构体指针问题求救
用指向二维数组第0行第0列元素的指针作为函数参数,编写一个能计算任意m行n列的二维数组中的最大值,并指出其所在的行、列下标值的函数,利用该函数计算三个班学生(假设每班40人)的某门成绩的最高分,并指出具有最高分成绩的学生是第几班第几个学生。这是我写的代码:
#include <stdio.h>
#include <stdlib.h>
#define S 1
int M,N;
typedef struct student
{
long long num;
float score;
}stu;
void Input(stu (*p))
{
int i,j;
for(i=0;i<M;i++){
for(j=0;j<N;){
printf("输入学号 : ");
scanf("%I64u",&(*p).num);
if((*p).num){
printf("输入成绩 : ");
scanf("%f",(*p).score);
j++;
}
}}
}
void maxfun(stu (*p))
{
stu max;
int m,n,i,j;
max=(*p);
m=0;
n=0;
for(i=0;i<M;i++){
for(j=0;j<N;j++){
if(max.score<(*p).score){
max=(*p);
m=i;
n=j;
}
}
}
printf("最高分:%.1f\n",max.score);
printf("拥有该最高分的学生是第%d班的第%d个学生",m+1,n+1);
}
int main()
{
stu a;
stu *p=a;
M=3;
N=S;
Input(p);
maxfun(p);
return 0;
}
求高手指教究竟是哪里错了 本帖最后由 风过无痕1989 于 2020-12-26 20:19 编辑
又不是求助帖? #include <stdio.h>
void input(float (* p) , int * m)
{
int i , j, n ;
printf("请输人班级数量 : ") ;
scanf("%d" , m) ;
for(i = 0 ; i < * m ; i ++) {
printf("请输入第 %d 班学生数量 : " , i + 1) ;
scanf("%d" , & n) ;
p = n ;
printf("请输入第 %d 班学生成绩 : " , i + 1) ;
for(j = 1 ; j <= n ; j ++) scanf("%f" , & p) ;
}
}
void maxfun(float (* p) , int m)
{
int i , j, n , imax , jmax ;
float max ;
for(max = p , i = imax = jmax = 0 ; i < m ; i ++) {
for(j = 1 ; j <= p ; j ++) {
if(p > max) {
imax = i ;
jmax = j ;
max = p ;
}
}
}
printf("第 %d 班的第 %d 个学生成绩最好,是 %.2f 分\n" , imax + 1 , jmax , max) ;
}
int main(void)
{
float d , (* p) = d ;
int m ;
input(p , & m) ;
maxfun(p , m) ;
}
编译、运行实况
D:\00.Excise\C>g++ -o x x.c
D:\00.Excise\C>x
请输人班级数量 : 3
请输入第 1 班学生数量 : 5
请输入第 1 班学生成绩 : 56 67 65 69 63
请输入第 2 班学生数量 : 5
请输入第 2 班学生成绩 : 72 77 75 73 71
请输入第 3 班学生数量 : 5
请输入第 3 班学生成绩 : 89 88 92 55 23
第 3 班的第 3 个学生成绩最好,是 92.00 分
D:\00.Excise\C> 风过无痕1989 发表于 2020-12-26 20:18
又不是求助帖?
不好意思,选错了 jackz007 发表于 2020-12-26 21:09
编译、运行实况
老哥强,醍醐灌顶!
页:
[1]