c语言关于数组的问题
int main()
{
char name[4][4],ja[4];
int t[4],j,i,o;
for(i=0;i<4;i++)
{
printf("请输入学生姓名:\n");
scanf("%s",name[i]);
printf("请输入学生成绩:\n");
scanf("%d",&t[i]);
}
for(i=0;i<4;i++)
for(j=0;j<3;j++)
if(t[j]<t[j+1])
{
o=t[j];
t[j]=t[j+1];
t[j+1]=o;
strcpy(ja,name[j]);
strcpy(name[j],name[j+1]);
strcpy(name[j+1],ja);
}
printf("学生的成绩单\n");
for(i=0;i<4;i++)
printf("%s %d\n",name[i],t[i]);
return 0;
}
为什么会这样的;;求解!!! 展开
帮你格式化一下
#include <stdio.h>
#include <string.h>
int main()
{
char name[4][10],ja[10]={0};//name名字太短,最多只以存放4个字符,加大,ja同理也增大
int t[4],j,i,o;
for(i=0;i<4;i++)
{
printf("请输入学生姓名:\n");
scanf("%s",name[i]);
printf("请输入学生成绩:\n");
scanf("%d",&t[i]);
}
for(i=0;i<4;i++)
{//外层循环
for(j=0;j<3;j++)
{//内层循环
if(t[j]<t[j+1])
{
o=t[j];
t[j]=t[j+1];
t[j+1]=o;
strcpy(ja,name[j]);
strcpy(name[j],name[j+1]);
strcpy(name[j+1],ja);
memset(ja, 0 , 10);//用完之后将ja清零
}
}//内层循环结束
}//外层循环结束
printf("学生的成绩单\n");
for(i=0;i<4;i++)
printf("%s %d\n",name[i],t[i]);
return 0;
}