C语言问题求高手解答

#include<stdio.h>#include<conio.h>#include<string.h>main(void){intd[1000];intb[1000];... #include<stdio.h>
#include<conio.h>
#include <string.h>
main(void) {
int d[1000];
int b[1000];
int c[1000][20];
int i=0,m,v=0,sum,n,k=0,j,t,z;
char *a[1000];
char x;
double f[1000];
printf("请输入学生人数n\n");
scanf("%d",&n);
printf("请输入科目总数m\n");
scanf("%d",&m);
do{
sum=0;
printf("请输入第%d个学生的姓名\n",i+1);
scanf("%s",&a[i]);
printf("请输入第%d个学生的学号\n",i+1);
scanf("%d",&b[i]);
do{
printf("请输入第%d个学生的第%d科成绩\n",i+1,k+1);
scanf("%d",&c[i][k]);
sum=sum+c[i][k];
k++;
}while(k<m);
d[i]=sum;
i++;
k=0;
}while(i<n);
printf("\n成绩录入完成!\n");

for(i=0;i<n;i++){
f[i]=d[i]/m;
};
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(d[j]<d[i]){
t=d[j];
d[j]=d[i];
d[i]=t;
t=b[j];
b[j]=b[i];
b[i]=t;
strcpy(x,a[j]);
a[j]=a[i];
a[i]=x;
for(k=0;k<m+1;k++
){
t=c[j][k];
c[j][k]=c[i][k];
c[i][k]=t;
};

};
};
};
printf("\n 名次表 \n"); //当学生人数为2时可以打印表格 但当人数为3时 就会弹出unhandled exception 不知道为什么求大神解答
printf("-----------------------------------------------------\n");
printf("学生姓名 学号 总分 平均分");
for(i=1;i<m+1;i++){
printf(" 科目%d ",i);
};
printf("\n");
for(i=0;i<n;i++){
printf(" %s %-8d %-3d %.2f" ,&a[i],b[i],d[i],f[i]);
for(k=0;k<m;k++){
printf(" %d " ,c[i][k]);
};
printf("\n");
};
getch();
}
展开
 我来答
joychen_
2015-07-01 · TA获得超过1747个赞
知道大有可为答主
回答量:1617
采纳率:100%
帮助的人:1806万
展开全部
//问题主要在于保存姓名的数组应该定义成数组,而不是只定义指针,而没有分配实际的存储空间
#include<stdio.h>
#include<conio.h>
#include <string.h>
main(void) {
int d[1000];
int b[1000];
int c[1000][20];
    int i=0,m,v=0,sum,n,k=0,j,t,z;
char a[1000][20];  //char *a[1000];
char x[20];      //char x;
double f[1000];
printf("请输入学生人数n\n");
scanf("%d",&n);
printf("请输入科目总数m\n");
scanf("%d",&m);
do{
sum=0;
printf("请输入第%d个学生的姓名\n",i+1);
scanf("%s",&a[i]);
printf("请输入第%d个学生的学号\n",i+1);
scanf("%d",&b[i]);
do{
printf("请输入第%d个学生的第%d科成绩\n",i+1,k+1);
scanf("%d",&c[i][k]);
sum=sum+c[i][k];
k++;
}while(k<m);
d[i]=sum;
i++;
k=0;
}while(i<n);
printf("\n成绩录入完成!\n");

for(i=0;i<n;i++){
f[i]=d[i]/m;
};
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(d[j]<d[i]){
t=d[j];
d[j]=d[i];
d[i]=t;
t=b[j];
b[j]=b[i];
b[i]=t;
strcpy(x,a[j]);
strcpy(a[j],a[i]); //a[j]=a[i];
strcpy(a[i],x);    //a[i]=x;
for(k=0;k<m+1;k++
){
t=c[j][k];
c[j][k]=c[i][k];
c[i][k]=t;
};

};
};
};
printf("\n                  名次表                          \n");         //当学生人数为2时可以打印表格  但当人数为3时 就会弹出unhandled  exception   不知道为什么求大神解答
printf("-----------------------------------------------------\n");
printf("学生姓名    学号     总分   平均分");
    for(i=1;i<m+1;i++){
printf("    科目%d   ",i);
};
printf("\n");
for(i=0;i<n;i++){
printf("  %s       %-8d       %-3d      %.2f" ,&a[i],b[i],d[i],f[i]);
for(k=0;k<m;k++){
printf("    %d   " ,c[i][k]);
};
printf("\n");
};
getch();
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式