#include<stdio.h>
#include<stdlib.h>
int main()
{int *p=NULL,n,m,i,j,max=0,maxclass,maxstudent;
printf("Input array size m,n:");
scanf("%d,%d",&m,&n);
p=(int*)calloc(m*n,sizeof(int));
for(i=0;i<m;i++)
{printf("输入第%d班的成绩\n",i+1);
for(j=0;j<n;j++)
{scanf("%d",&p[i*n+j]);
}
}
for(i=0;i<m;i++)
{for(j=0;j<n;j++)
{if(p[i*n+j]>max)
{max=p[i*n+j];
maxclass=i+1;
maxstudent=j+1;
}
}
}
printf("%d班%d号最高:%d",maxclass,maxstudent,max);
}
scanf中间不要加,不然你这里n没有写入值,相当于n没有被初始化
scanf("%d,%d",&m,&n);
改成
scanf("%d%d",&m,&n);
【以下回答由 GPT 生成】
这个问题的原因是代码中没有合适的提示用户输入数据的语句,所以在运行程序时会直接执行后续的计算和输出操作。解决方案是在需要输入数据的位置添加适当的提示语句,以确保在输入数据之前打印提示并等待用户输入。以下是修改后的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *p = NULL, n, m, i, j, max = 0, maxclass, maxstudent;
printf("请输入数组的大小 m, n:");
scanf("%d,%d", &m, &n);
p = (int *)calloc(m * n, sizeof(int));
for (i = 0; i < m; i++)
{
printf("请输入第%d班的成绩\n", i + 1);
for (j = 0; j < n; j++)
{
printf("请输入第%d班第%d个学生的成绩:", i + 1, j + 1);
scanf("%d", &p[i * n + j]);
}
}
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
if (p[i * n + j] > max)
{
max = p[i * n + j];
maxclass = i + 1;
maxstudent = j + 1;
}
}
}
printf("%d班%d号最高:%d\n", maxclass, maxstudent, max);
}
现在,当你运行该代码时,它会在每次需要输入数据时都给出相应的提示,并等待你输入数据后再进行后续的计算和输出操作。
【相关推荐】
第7行:scanf("%d,%d",&m,&n); 输入语句里,两个数值间以 ',' 英文半角逗号间隔,所以输入时如:3,5