结构体作业
1.定义一个acmer结构体,包括以下信息:姓名,学号,手机号,做题数,出生日期,其中出生日期date也是一个结构体,包括年、月、日
2.建立结构体数组,实现对多个同学的信息输入,输出
3.实现简单的统计功能,比如统计做题数大于150的同学并输出其完整信息
4.实现查找功能,包括按姓名、学号查找
5.实现信息修改功能
6.按做题数目进行排序(选作)
7.其他功能可以自由扩展,多多益善 ^_^
8.程序一个函数实现一个功能
9.代码测试成功后贴在论坛上,大家互相学习借鉴
2.建立结构体数组,实现对多个同学的信息输入,输出
3.实现简单的统计功能,比如统计做题数大于150的同学并输出其完整信息
4.实现查找功能,包括按姓名、学号查找
5.实现信息修改功能
6.按做题数目进行排序(选作)
7.其他功能可以自由扩展,多多益善 ^_^
8.程序一个函数实现一个功能
9.代码测试成功后贴在论坛上,大家互相学习借鉴
#include <stdio.h> #include <string.h> #include <stdlib.h> int input();//实现学生信息的输入 int output();//实现学生信息的输出 int find();//实现学生信息的查找 int correct();//实现学生信息的修改 int sort();//实现学生成绩的排序并输出做题数超过150的学生的具体信息 int d = 0;//用于统计学生的人数,便于输出学生的信息 int find_num();//用于学号查找 int find_name();//用于姓名查找 struct date { int year; int month; int day; }; struct acmer { char name[20]; char number[20]; char sex[2]; char phonenumber[11]; int sloved; struct date birthday; }stu[100]; struct acmer *p=stu; main() { int n; printf("请按键选择功能:\n"); printf("1、输入同学们的信息\t\t\t\t\t2、输出同学们的信息\n"); printf("3、查找某同学的信息\t\t\t\t\t4、修改某同学的信息\n"); printf("5、统计做出150道题的同学并输出其具体信息\t\t6、清屏\n"); scanf("%d",&n); switch(n) { case 1: input();break; case 2: output();break; case 3: find();break; case 4: correct();break; case 5: sort();break; case 6: system("cls");return main(); } return 0; } int input() { *p = stu[0]; printf("请输入学生的学号:"); scanf("%s",p->number); printf("请输入学生的姓名:"); scanf("%s",p->name); printf("请输入学生的性别(男/女):"); scanf("%s",p->sex); printf("请输入学生的做题数:"); scanf("%d",&p->sloved); printf("请输出学生的出生日期(年月日):"); scanf("%d %d %d",&p->birthday.year,&p->birthday.month,&p->birthday.day); printf("请输入学生的手机号:"); scanf("%s",p->phonenumber); printf("是否需要继续输入(1/0):"); int c; scanf("%d",&c); switch(c) { case 1: d++;p++;return input(); case 0: d++;return main(); } } int output() { printf("学生 学号\t姓 名\t性别\t做题数\t出生年月日\t手 机 号\n"); printf("----------\t----------\t--\t----\t---- -- --\t-----------\n"); for(int i = 0;i<d;i++) { printf("%s\t%s\t\t%s\t%d\t%d\t%d %d\t%s\n",stu[i].number,stu[i].name,stu[i].sex,stu[i].sloved,stu[i].birthday.year,stu[i].birthday.month,stu[i].birthday.day,stu[i].phonenumber); } printf("是否需要返回主菜单(1/0):"); int c; scanf("%d",&c); switch(c) { case 1: printf("\n");return main(); case 0: break; } } int find() { printf("请按需要查找\n1、学号\t\t\t2、姓名"); int n; scanf("%d",&n); switch(n) { case 1:find_num(); case 2:find_name(); } return 0; } int find_num()//用于学号查找 { int f; char str[20]; printf("请输入学生学号:"); scanf("%s",&str); for(int i =0;i<d;i++) { if(strcmp(stu[i].number,str)==0) {*p=stu[i];f = 0; printf("学生 学号\t姓 名\t性别\t做题数\t出生年月日\t手 机 号\n"); printf("----------\t----------\t--\t----\t---- -- --\t-----------\n"); printf("%s\t%s\t\t%s\t%d\t%d\t%d %d\t%s\n",p->number,p->name,p->sex,p->sloved,p->birthday.year,p->birthday.month,p->birthday.day,p->phonenumber);break;} } if(f) printf("查找出错!未找到相关同学信息!"); printf("是否需要返回主菜单(1/0):"); int c; scanf("%d",&c); switch(c) { case 1: printf("\n");return main(); case 0: break; } } int find_name()//用于姓名查找 { int f; char str[20]; printf("请输入学生姓名:"); scanf("%s",&str); for(int i =0;i<d;i++) { if(strcmp(stu[i].name,str)==0) {*p=stu[i];f = 0; printf("学生 学号\t姓 名\t性别\t做题数\t出生年月日\t手 机 号\n"); printf("----------\t----------\t--\t----\t---- -- --\t-----------\n"); printf("%s\t%s\t\t%s\t%d\t%d\t%d %d\t%s\n",p->number,p->name,p->sex,p->sloved,p->birthday.year,p->birthday.month,p->birthday.day,p->phonenumber);break;} } if(f) printf("查找出错!"); printf("是否需要返回主菜单(1/0):"); int c; scanf("%d",&c); switch(c) { case 1: printf("\n");return main(); case 0: break; } } int correct() { int f; char str[20]; printf("请输入要修改信息的学生的学号:"); scanf("%s",&str); for(int i =0;i<d;i++) { if(strcmp(stu[i].number,str)==0) { *p=stu[i];f = 0; printf("请输入学生的学号:"); scanf("%s",p->number); printf("请输入学生的姓名:"); scanf("%s",p->name); printf("请输入学生的性别(男/女):"); scanf("%s",p->sex); printf("请输入学生的做题数:"); scanf("%d",&p->sloved); printf("请输出学生的出生日期(年月日):"); scanf("%d %d %d",&p->birthday.year,&p->birthday.month,&p->birthday.day); printf("请输入学生的手机号:"); scanf("%s",p->phonenumber); printf("修改成功!"); break; } }if(f) printf("未找到相关同学信息!"); printf("是否需要返回主菜单(1/0):"); int c; scanf("%d",&c); switch(c) { case 1: printf("\n");return main(); case 0: break; } } int sort() { int f,n,i; printf("想要查看超过多少分的人"); scanf("%d",&n); for(i = 0;i<d;i++) { if(stu[i].sloved>n) { f = 0; printf("%s\t%s\t\t%s\t%d\t%d\t%d %d\t%s\n",stu[i].number,stu[i].name,stu[i].sex,stu[i].sloved,stu[i].birthday.year,stu[i].birthday.month,stu[i].birthday.day,stu[i].phonenumber); } } if(f) printf("很可惜哎!没有人做题超过%d",n); printf("是否需要返回主菜单(1/0):"); int c; scanf("%d",&c); switch(c) { case 1: printf("\n");return main(); case 0: break; } }