我写的这个代码能运行,就是不执行命令,还有输出的是乱码。有没有哪位大佬能帮忙看一下怎么改才可以正常运行?
这是题目:用C语言代码实现对一份成绩单的排序(成绩单包过姓名,成绩,年龄,学号4个内容)要求能根据用户的需要(选择),提供4种排序模式:
1,成绩由大到小。
2,姓名首字母由A到Z
3,年龄由小到大
4,学号由小到大
备注:
1,在能力范围内使代码更加简洁,代码执行更快。(程序优化)
2,合理备注(可读性)
3,可能用到的知识:动态数组定义(课本8.8)网络资料https://blog.:
这是我写的代码:
#include <stdio.h>
#include <stdlib.h>
struct student
{
char name[20];
float score;
int age;
int num;
};
void mode1( struct student stu[],int n)//参考书上307页(比较模式一)
{ n=4;
struct student temp;//定义变量temp,排序时交换以便使用
int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++ )
if(stu[j].score>stu[k].score)//两两比较成绩,由高到低排列
k=j;
temp=stu[k];stu[k]=stu[i];stu[i]=temp;//进行交换比较
}
}
void mode2(struct student stu[],int n)//(比较模式二)
{ n=4;
struct student temp;//定义变量temp,排序时交换以便使用
int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++ )
if(stu[j].name<stu[k].name)//两两比较姓名首字母,由A到Z排列
k=j;
temp=stu[k];stu[k]=stu[i];stu[i]=temp;//进行交换比较
}
}
void mode3(struct student stu[],int n)//(比较模式三)
{ n=4;
struct student temp;//定义变量temp,排序时交换以便使用
int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++ )
if(stu[j].age<stu[k].age)//两两比较年龄,由小到大排列
k=j;
temp=stu[k];stu[k]=stu[i];stu[i]=temp;//进行交换比较
}
}
void mode4(struct student stu[],int n)//(比较模式四), int n=4;//定义变量n为学生人数4
{ n=4;
struct student temp;//定义变量temp,排序时交换以便使用
int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++ )
if(stu[j].num<stu[k].num)//两两比较学号数字大小,由小到大排列
k=j;
temp=stu[k];stu[k]=stu[i];stu[i]=temp;//进行交换比较
}
}
int main()
{
struct student stu[4]={{"zhangsan",65,18,211301},
{"qiqi",89.5,17,211302},
{"wanger",75.3,15,211303},
{"sazi",93.7,19,211304}};//定义结构体数组,我理解为填写学生信息
int m,i,n;
n=4;
scanf("%d",&m);
for(i=0;i<n;i++)
{printf("%8s %6.2f %d %dn",stu[i].name,stu[i].score,stu[i].age,stu[i].num);}
printf("n");
if(m==1)
mode1;
else if(m==2)
mode2;
else if(m==3)
mode3;
else if(m==4)
mode4;
for(i=0;i<n;i++)
{printf("%8s %6.2f %d %dn",stu[i].name,stu[i].score,stu[i].age,stu[i].num);}
return 0;
}