哪位大佬能幫忙分析一下這個程式,運用的知識點,實作的相關功能什么的

#include <stdio.h>
#include <stdlib.h>
struct Stu{
int no;
int number;
char sex[6];
char name[20];
int math;
int eng;
int score;
}a[30]={0};
int Score(){
struct Stu t;
struct Stu b[30];
for(int k=1;k<=20;k++){
b[k]=a[k];
}
int i,j;
for(i=1;i<=20;i++){
if(b[i].score!=0){
for(j=i+1;j<=20;j++){
if(b[j].score!=0){
if(b[i].score>b[j].score){
t=b[i];
b[i]=b[j];
b[j]=t;
}
}
}
}
}
for(i=1;i<=20;i++){
if(b[i].number!=0) {printf("序號:%d 學號:%d 姓名:%s 數學:%d 英語:%d 總成績:%d 性別:%s\n",b[i].no,b[i].number,b[i].name,b[i].math,b[i].eng,b[i].score,b[i].sex);
}
}
}
int English(){
struct Stu t;
struct Stu b[30];
for(int k=1;k<=20;k++){
b[k]=a[k];
}
int i,j;
for(i=1;i<=20;i++){
if(b[i].eng!=0){
for(j=i+1;j<=20;j++){
if(b[j].eng!=0){
if(b[i].eng>b[j].eng){
t=b[i];
b[i]=b[j];
b[j]=t;
}
}
}
}
}
for(i=1;i<=20;i++){
if(b[i].number!=0) {printf("序號:%d 學號:%d 姓名:%s 數學:%d 英語:%d 總成績:%d 性別:%s\n",b[i].no,b[i].number,b[i].name,b[i].math,b[i].eng,b[i].score,b[i].sex);
}
}
}
int Math(){
struct Stu t;
struct Stu b[30];
for(int k=1;k<=20;k++){
b[k]=a[k];
}
int i,j;
for(i=1;i<=20;i++){
if(b[i].math!=0){
for(j=i+1;j<=20;j++){
if(b[j].math!=0){
if(b[i].math>b[j].math){
t=b[i];
b[i]=b[j];
b[j]=t;
}
}
}
}
}
for(i=1;i<=20;i++){
if(b[i].number!=0) {printf("序號:%d 學號:%d 姓名:%s 數學:%d 英語:%d 總成績:%d 性別:%s\n",b[i].no,b[i].number,b[i].name,b[i].math,b[i].eng,b[i].score,b[i].sex);
}
}
}
int Sort(){
int t;
printf("1.按數學成績排序\n2.按英語成績排序\n3.按總成績排序\n");
scanf("%d",&t);
switch(t){
case 1:
Math();
break;
case 2:
English();
break;
case 3:
Score();
break;
default:printf("輸入錯誤\n");
}
}
int Output(){//輸出全部存在資料
for(int i=1;i<=20;i++){
if(a[i].number!=0) {printf("序號:%d 學號:%d 姓名:%s 數學:%d 英語:%d 總成績:%d 性別:%s\n",a[i].no,a[i].number,a[i].name,a[i].math,a[i].eng,a[i].score,a[i].sex);
}
}
}
int Menu(){
printf(" 1.add\n 2.delete\n 3.refer\n 4.output\n 5.sort\n 6.end\n");
}
int Refer(){//輸入序號,輸出學號,姓名,成績和性別
int n;
printf("輸入查詢序號\n");
scanf("%d",&n);
for(int i=1;i<=20;i++){
if(a[i].no==n&&a[i].number!=0){
printf("學號:%d 姓名:%s 數學:%d 英語:%d 總成績:%d 性別:%s\n",a[n].number,a[n].name,a[n].math,a[n].eng,a[n].score,a[n].sex);
}
}
if(a[n].number==0){
printf("資料不存在\n");
}
}
int Delete(){//輸入序號,洗掉學號,姓名,成績和性別
int de;
printf("輸入洗掉序號\n");
scanf("%d",&de);
if(a[de].number!=0){
a[de].number=0;
a[de].score=0;
a[de].math=0;
a[de].eng=0;
printf("洗掉成功\n");
}
else printf("資料不存在\n");
}
int Add(){//輸入序號,學號,姓名,成績和性別,當序號小于等于0時停止輸入。
printf("input number.(number<20)\n輸入序號,學號,姓名,數學成績,英語成績和性別,當序號小于等于0時停止輸入。\n");
int i;
do{
scanf("%d",&i);
if(i>0&&a[i].number==0&&i<=20){
a[i].no=i;
printf("number:");
scanf("%d",&a[i].number);
printf("name:");
scanf("%s",&a[i].name);
printf("Math:");
scanf("%d",&a[i].math);
printf("English:");
scanf("%d",&a[i].eng);
printf("sex:");
scanf("%s",&a[i].sex);
a[i].score=a[i].math+a[i].eng;
printf("輸入成功\n");
}
else if(a[i].number!=0){
printf("資料存在\n");
}
else break;
}
while(i>=1);
}
int main(){
int nu;
do{
Menu();
scanf("%d",&nu);
if(nu>0&&nu<7){
switch(nu){
case 1:Add();
break;
case 2:Delete();
break;
case 3:Refer();
break;
case 4:Output();
break;
case 5:Sort();
break;
case 6:
break;
default:printf("輸入錯誤\n");
}
}
else printf("輸入錯誤\n");
getchar();
}
while(nu!=6);
}
uj5u.com熱心網友回復:
主要用到的是結構體、陣列、排序這些知識點,你看選單選項對應呼叫的函式就知道用到哪些知識點了轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/239351.html
標籤:C語言
上一篇:C,求大佬教教!
下一篇:萌新求助
