C语言编程实例:学生信息录入与成绩排序
编写程序,实现输入5个学生的学号、姓名及c语言课成绩。并输出。
#include用C语言编程:从键盘输入10个学生的成绩和学号,将其排序输出,并输出中要有相应的学生学号
#include输入全班同学的学号和某一门的成绩的c语言怎么编写,讲该课程的成绩按由高到低的顺序排序怎么编写
在编程中,冒泡排序算法可用于将输入的学生人数和给定科目的成绩从最高到最低进行排序。这里有一个具体的例子来帮助理解如何实现它。
代码如下:#include#includeStudent{intnum;floatscore;}stu[10];intmain(){inti,j,flag,k=1;floattemp;printf("输入10名学生的学号和成绩,使用空格分隔:\n");for(i=0;i<10 stu[i].num,&stu[i].score);for(i=0;i i++){flag=0;for(j j<=8-i;j++)if(stu[j].score>stu[j+1].score){temp=stu[j].score;stu[j].score=stu[j+1].score;stu[j+1].score=temp;flag=1;}if(flag==0&&i==0)break;elseif(flag==0){k=i;
然后使用冒泡排序算法对结果进行排序。
排序过程中,如果在某个遍历周期内没有发生交换,则认为链表乱序,排序提前结束。
最后,生成排名分数和比较次数。
该代码示例适合小类数据处理。
如果类大小很大,则需要更改数组的大小或使用动态内存分配。
希望这段代码可以帮助你了解如何使用C语言实现投票排序。
请注意,系统调用“system(”pause”);”代码中用于在Windows环境下暂停程序,等待用户按键查看输出结果。
在非Windows环境中,您可能需要手动编辑这部分代码。
通过学习和练习这段代码,你将更好地掌握C语言中数组、结构体和排序算法的应用。
如何用C语言实现根据学号查询学生成绩信息
概述它只是使用多个数组来管理学生成绩信息,而不使用结构体。
该程序的主要难点是根据学号或总成绩对学生信息进行排序,并使用临时数组来标记排序后的项目。
运行结果如下:
输入数据:
按总分排序:
根据学号删除学生信息:
粘贴代码(稍微多一点)
#include
#include
#include
#defineMAX_STUDENT30//最大学生数
//函数声明,这个程序一共有10个子函数,每个函数对应一个操作
voidstudent_scanf(intn);
voidsStudent_printf(intn);
intstudent_find_name(intn);
intstudent_find_num(intn);
voidstudent_sort_num(intn);
voidstudent_sort_sum(intn);
intStudent_alter_num(intn);
intstudent_alter_name(intn);
intstudent_delete_num(intn);
intstudent_delete_name(intn);
//全局数组变量,用于存储学生信息
char姓名[MAX_STUDENT][50];
IntMath[MAX_STUDENT];
IntEnglish[MAX_STUDENT];
IntComputer[MAX_STUDENT];
intsum[MAX_STUDEN];
intnum[MAX_STUDENT];
//以下变量用于将学生信息数组序列化为临时数组
inttemp_num[MAX_STUDENT];
chartemp_names[MAX_STUDENT][50];
inttemp_math[MAX_STUDENT];
inttemp_english[MAX_STUDENT];
inttemp_computer[MAX_STUDENT];
inttemp_sum[MAX_STUDENT];
//排序数组对学生号进行排序或存储名称下标
intsort[MAX_STUDENT];
//循环全局变量
inti,j;
//main主函数
intmain(void)
{
intchoice,n;
while(1)
{
printf('********************************************\n");
printf("欢迎使用学生成绩管理系统\n");
printf("[1]输入所有学生信息do\n");
printf("[2]输出所有学生成绩\n");
printtf("[3]按学号查找学生信息\n");
printf("[4]按姓名查找学生信息\n");
printf("[5]按学号排序\n");
printf("[6]按总分排序\n");
printf("[6]按总分排序\n");
printf("[7]按学号对学生信息进行排序按姓名修改\n");
printtf("[8]按姓名修改学生信息\n");
printf("[9]删除学生信息按学号\n");
printf(""[10]按姓名删除学生信息\n");
printf(""[0]退出程序\n");
printf("请输入您的选择do(0-9):");
scanf("%d",&choice);
printf("*****************************************)\n");
开关h(选择)
{
case1://entry;
printf('请输入输入的学生信息条数:');
scanf("%d",&n);
student_scanf(n);
break;
case2://output;
student_printf(n);
break;
case3://按学号搜索
student_find_num(n);
break;
case4://来自名字find
student_find_name(n);
break;
case5://按学号排序
p
Student_sort_num(n);
break;
case6://按名称排序
student_sort_sum(n);
break;
Case7://根据学号修改
student_alter_num(n);
break;
case8://按名称修改
break;
case9://根据学号删除
student_delete_num(n);
n--;
break;
case10://从名称中删除
student_delete_name(n);
n--;
break;
case0://退出程序
printf("退出程序\n");
printf("程序结束,感谢您使用!\n");
退出(0);
默认:
printf(''您输入的菜单不正确。
请重新输入!\n");
}
}
return0;
}
//1
voidstudent_scanf(intn)
{
for(i=0;i { printf('\n请输入%d条学生信息in:\n",i+1); printf("\n学习数字:"); scanf("%d",&num[i]); scanf("%d",&num[i]); printf("\n名:"); scanf("%s",name[i]); printf("\nmath分数:"); scanf("%d",&math[i]); printf("\n英语成绩:");
printf('\n计算机Score:');
scanf('%d'',&computer[i]);
//计算总分
sum[i]=数学[i]+英语[i]+计算机[i];
}
}
//2.打印信息
voidstudent_printf(intn)
{
printf('\n学号\t姓名\t数学成绩\t英语成绩\t电脑成绩\t总成绩\n');
printf("----------------------------------------------------------------------------\n");
for(i=0;i { printf("%d\t%s\t%d\t\t%d\t\t%d\t\t%d\n",num[i],names[i],math[i],english[i],computer[i],sum[i]); } printf("--------------------------------------------------------------------------\n"); } //3.按学生编号查找 intstudent_find_num(intn) { intnums; 干扰; printf('请输入要查找的学号:'); scanf('%d'',&nums); result=-1; for(i=0;i { if(nums==num[i]) { result=i; break; } } //确定最后的q值 if(result==-1) { printf('没有该学生的信息!\n"); return0; } 否则 { //先打印标题 printf('\n学号\t\t姓名\t\t数学成绩\t英语成绩\t电脑成绩\t总成绩\n"); //再次打印数据do printf('%d\t\t%s\t\t%d\t\t%d\t\t%d\t%d\n'',number[结果],姓名[结果],数学[结果T],英语[结果],计算机[结果],Sum[结果]); printf(''打印搜索结果do!\n'); } } //4.按名称查找成绩 intstudent_find_name(intn) { charname[200]; intresult; printf("请输入要见面的学生姓名:"); scanf("%s",name); 结果=-1; for(i=0;i { if(strcmp(name,names[i])==0) { result=i; break; } } if(result==-1) {//未找到结果 printf('该学生不知道!\n'); return0; } else//查找结果 { printf('\n学号\t姓名\t数学成绩\t英语成绩\t电脑成绩\t总计分数\n"); printf("%d\t%s\t%d\t\t%d\t\t%d\t\t%d\n",num[结果]、姓名[结果]、数学[结果],英语[结果],计算机[结果],瑜伽[结果]); printf('查找完成!\n'); } 返回1; } //5.按学号排序 voidstudent_sort_num(intn) { intmin,max; for(i=0;i { temp_num[i]=num[i]; } 最大=0;//找到要学习的数字,并将其索引存储在排序数组的最后一个值中 for(j=1;j { if(temp_num[max] max=j; } sort[n-1]=max;//对数组的最后一个数字进行排序 for(i=0;i { min=i;//求最少学生人数 for(j=0;j { min=j; } //排序数组记录排序后的学生信息的下标 sort[i]=分钟; temp_num[分钟]=temp_num[最大值];//使用临时数组,将搜索到的学生信息的学生数设置为最大值,以消除搜索干扰 } for(i=0;i { temp_num[i]=num[i]; strcpy(temp_names[i],names[i]); strcpy(temp_names[i],names[i]); temp_math[i]=math[i]; temp_english[i]=english[i]; temp_computer[i]=computer[i]; temp_sum[i]=sum[i]; } for(i=0;i { num[i]=temp_num[sort[i]]; strcpy(names[i],temp_names[sort[i]]); 数学[i]=temp_math[排序[i]]; english[i]=temp_english[sort[i]]; 计算机[i]=temp_computer[sort[i]]; } printf("排序完成,请按菜单键2查看排序结果!\n"); return; } //6.按总分排序 voidstudent_sort_sum(intn) { intmin,max; for(i=0;i { temp_sum[i]=sum[i]; } max=0;//求最大总分,并将其下标存储在排序数组的最后一个值中 for(j=1;j { if(temp_sum[max] max=j; } sort[n-1]=max//排序数组末尾A数字 for(i=0;i { min=i;//求最小总分 for(j=0;j { min=j; } //排序后的学生信息的数组下标记录 sort[i]=min; temp_sum[min]=temp_sum[max];//使用临时数组将搜索到的学生信息的总分设置为最大值,以消除搜索干扰 } for(i=0;i { temp_num[i]=num[i]; strcpy(temp_names[i],names[i]); temp_math[i]=math[i]; temp_english[i]=english[i]; temp_computer[i]=计算机[i]; temp_sum[i]=sum[i]; } 对于(我=0;i { num[i]=temp_num[sort[i]]; strcpy(names[i],temp_names[sort[i]]); 数学[i]=temp_math[排序[i]]; english[i]=temp_english[sort[i]]; 计算r[i]=temp_computer[sort[i]]; sum[i]=temp_sum[sort[i]]; } printf("排序后,请按菜单键查看排序结果.按2!\n"); 返回; } //7.根据学号修改学生信息 intstudent_alter_num(intn) { intnums; intresult; printf('请输入要修改的学号:'); 扫描f("%d",#nums); 结果=-1; for(i=0;i { if(nums==num[i]) { result=i; break; } } //最后设置q值 if(result==-1) { printf('没有该学生的信息!\n'); return0; } 否则//修改信息值 { printf('请重新输入学生信息:\n'); printf('学号:\n"); scanf("%d",&num[结果]); printf("名称:\n"); scanf("%s",names[结果]); printf('数学成绩:\n'); scanf('%d'',&math[result]); printf('英语得分:\n"); scanf('%d',&english[结果]); printf('电脑成绩:\n'); scanf('%d",&电脑[成绩]); 瑜伽[成绩]=数学[成绩]+英语[成绩]+电脑[成绩]]; } return1; } //8按姓名修改学生信息。 { charname[50]; intresult; printf('请输入学生姓名输入需要修改的内容:); scanf("%s",名称); 结果=-1; for(i=0;i { if(strcmp(name,names[i])==0) { result=i; break; } } //最后的q值set if(result==-1) { printf('没有该学生的信息!\n"); return0; } 否则//修改信息值 { printf('请重新输入学生信息:\n"); printf("学号:\n"); scanf("%d",&num[结果]); printf("名称:\n"); scanf("%s",名称[结果]) printf("数学);成绩:\n"); scanf("%d",&math[结果]); printf("英语成绩:\n"); scanf("%d",&english[结果]); printf('计算机成绩:\n'); scanf('%d'',&计算机[结果]); sum[结果]=数学[结果]+英语[结果]+计算机[结果]; } return1; } //9.根据学号删除学生信息 intstudent_delete_num(intn) { intnums; intresult; printf("请输入要删除的学号。 scanf("%d",&nums); 结果=-1; for(i=0;i { if(nums==num[i]) { 结果=i; break; } } //最后设置q值do if(result==-1) { printf('没有该学生的信息!\n'); return0; } 否则//删除当前学生信息就是用结果位置替换数组依次向前移动一个位置 { for(i=结果;i { num[i]=num[i+1]; strcpy(名称[i],名称[i+1]); 数学[i]=数学[i+1]; 英语[i]=英语[i+1]; 计算机[i]=计算机[i+1]; sum[i]=sum[i+1]; } } return1; } //10.按姓名删除学生信息 intstudent_delete_name(intn) { charname[50]; intresult; printf("请输入要删除的学生姓名:"); scanf("%s",name); 结果=-1; for(i=0;i { if(strcmp(name,name[i])==0) { 结果=i; break; } } //最后设置q值do if(result==-1) printf('没有该学生的信息!\n'); return0; } 否则//移除当前学生信息意味着将数组移动到结果位置前面一位 { for(我=结果);i { num[i]=num[i+1]; 数学[i]=数学[i+1]; English[i]=enGlish[i+1]; 计算机[i]=计算机[i+1]; sum[i]=sum[i+1]; } } return1; }
do:");