如何把下面图片五个代码放在一起编序号,然后输入对应数字运行对应代码,还可以返回重输
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
printf("1.成绩求平均数\n");
printf("2.判断输入的正整数能否被5整除\n");
printf("3.用循环求解,输入一个正整数n,输出n的阶乘\n");
printf("4.输入两个整数,求平方和输出\n");
printf("5.要求输出100-200之间的不能被3整除的数\n");
printf("Please input choice<1-5>:");
int cho;
scanf("%d",&cho);
switch (cho)
{
case 1:
float average(float array[10]);//函数声明
float score[10],aver;
printf("input 10 scores:\n");
for(int i=0;i<10;i++)
scanf("%f",&score[i]);
printf("\n");
aver=average(score);
printf("%5.2f\n",aver);
break;
case 2:
int b;
scanf("%d", &b);
if (b % 5 == 0)
printf("YES\n");
else
printf("NO\n");
break;
case 3:
int i=2,n;
float fac=1;
printf("请输入一个正整数:\n");
scanf("%d",&n);
if(n==0||n==1)
{
printf("%d的阶乘是1\n",n);
}
while(i<=n)
{
fac=fac*i;
i++;
}
printf("%d的阶乘是:%.2f\n",n,fac);
break;
case 4:
int c;
scanf("%d",&c);
if(c%5==0)
printf("YES\n");
else
printf("NO\n");
break;
case 5:
int count=0;
for(int i=108;i<=208;i++)
{
if(i%3==0)
continue;
printf("%d",i);
count++;
if(count%5==0)
printf("IN");
}
break;
default:
printf("输入的选择不对,请重新输入");
break;
}
return a.exec();
}
//1
float average(float array[10])
{
float aver,sum=array[0];
for(int i=1;1<10;i++)
sum=sum+array[i];
aver=sum/10;
return aver;
}
我搞了一个学生管理系统,先定义各种功能函数,在显示功能菜单,
再写一个循环,每个数字对应着各个功能
和你这差不多,你看看,每一步都有介绍
如有帮助,望采纳
// 定义各种功能函数
// 显示功能菜单
void showMenu();
//读取存档
void readStudent(struct node *head);
// 录入信息
void addStudent(struct node *head);
// 删除信息
void deleteStudent(struct node *head);
// 查询信息
void queryStudent(struct node *head);
// 修改信息
void modifyStudent(struct node *head);
// 成绩排序
void sortStudent(struct node *head);
// 显示所有
void showStudent(struct node *head);
// 保存信息
void saveStudent(struct node *head);
// 退出
void exitProgram(struct node *head);
//进度条
void proc();
// 定义链表基本操作函数
struct node *readStudentmessage(struct node *head);
struct node *createStudentNode(struct student *stu);
struct node *insertStudentNode(struct node *head, struct student *stu);
struct node *createStudentList();
void freeStudentList(struct node* head);
struct node *queryStudentListByNum(struct node* head, int num);
struct node *queryStudentListByName(struct node* head, char *name);
int deleteStudentListByNum(struct node* head, int num);
int getStudentListLength(struct node* head);
struct node *sortStudentListByTotal(struct node *head);
struct node *sortStudentListByAverage(struct node *head);
void printStudentListInfo(struct node* head);
void saveStudentListToFile(struct node* head);
void error(const char* err);
struct node *readStudentmessage(struct node *head);
#include "student.h"
int main()
{
// 创建学生成绩空链表保存信息
struct node* list = createStudentList();
// 显示功能主菜单
showMenu();
char a[10];
while (1) {
printf("\n请输出0-9,回车结束!\n");
if (fgets(a, 10, stdin) != NULL)
{
switch (a[0])
{
case '0':
exitProgram(list);
break;
case '1':
addStudent(list);
break;
case '2':
deleteStudent(list);
break;
case '3':
queryStudent(list);
break;
case '4':
modifyStudent(list);
break;
case '5':
sortStudent(list);
break;
case '6':
showStudent(list);
break;
case '7':
saveStudent(list);
break;
case '8':
showMenu();
break;
case '9':
readStudent(list);
break;
default:
printf("请重新输入正确的功能数字0-9!\n");
}
}
showMenu();
}
return 0;
}
// 创建学生成绩结点
struct node *createStudentNode(struct student *stu)
{
struct node* p = (struct node*)calloc(1,sizeof(struct node));
if(stu != NULL)
{
struct student *s = &(p->stu);
if(p != NULL)
{
//存放信息
s->num = stu->num;
strcpy(s->name, stu->name);
strcpy(s->sex, stu->sex);
s->age = stu ->age;
s->chinese = stu->chinese;
s->math = stu->math;
s->english = stu->english;
s->pe = stu->pe;
// 计算总成绩
s->total = s->chinese + s->math + \
s->english + s->pe;
s->average = s->total*1.0/4;
p->next = NULL;
}
}
return p;
}
// 表尾增加学生成绩
struct node *insertStudentNode(struct node *head, struct student *stu)
{
struct node *node = NULL;
if(head != NULL)
{
node = createStudentNode(stu);
// struct student *s = &(node->stu);
if(node != NULL)
{
struct node* p = head;
while(p->next != NULL) // 循环找到链表最后的结点
p = p->next;
p->next = node;
}
}
return node;
}
// 创建带头结点的学生成绩空链表
struct node *createStudentList()
{
// 创建头结点
return createStudentNode(NULL);
}
// 释放学生成绩链表内存空间
void freeStudentList(struct node* head)
{
struct node* p = head;
while(p != NULL)
{
head = p->next;
free(p);
p = head;
}
}
// 根据学号查找学生成绩
struct node *queryStudentListByNum(struct node* head, int num)
{
struct node *p = NULL;
if(head != NULL)
{
p = head->next;
while(p != NULL)
{
if(p->stu.num == num) //找到则返回指针地址
break;
p = p->next;
}
}
return p;
}
// 根据姓名查找学生成绩
struct node *queryStudentListByName(struct node* head, char *name)
{
struct node *p = NULL;
if(head != NULL)
{
p = head->next;
while(p != NULL)
{
if(strcmp(p->stu.name, name) == 0)
break;
p = p->next;
}
}
return p;
}
// 根据学号删除学生成绩
int deleteStudentListByNum(struct node* head, int num)
{
// p保存当前结点,pre保存前一个结点
struct node *p = NULL, *pre = NULL;
// 返回结果0或1
int status = 0;
if(head != NULL)
{
pre = head;
p = head->next;
while(p != NULL)
{
if(p->stu.num == num)
{
pre->next = p->next;
p->next = NULL;
free(p);
status = 1;
break;
}
p = p->next;
}
}
return status;
}
// 获取学生成绩链表的长度
int getStudentListLength(struct node* head)
{
int n = 0;
struct node *p = NULL;
if(head != NULL)
{
p = head->next;
while(p != NULL)
{
n++;
p = p->next;
}
}
return n;
}
// 按总分从高到低排序学生成绩
struct node *sortStudentListByTotal(struct node *head)
{
if(head != NULL)
{
struct node *p1, *p2, *max;
struct student s;
p1 = head;
// 简单选择排序
// 直接交换信息,不改变结点
while((p1=p1->next) != NULL)
{
max = p1;
p2 = p1;
while((p2=p2->next) != NULL)
{
if((p2->stu).total > (max->stu).total)
max = p2;
}
if(max != p1)
{
s = p1->stu;
p1->stu = max->stu;
max->stu = s;
}
}
}
return head;
}
// 按平均分从小到大排序学生成绩
struct node *sortStudentListByAverage(struct node *head)
{
if(head != NULL)
{
struct node *p1, *p2, *min;
struct student s;
p1 = head;
// 简单选择排序
// 直接交换信息,不改变结点
while((p1=p1->next) != NULL)
{
min = p1;
p2 = p1;
while((p2=p2->next) != NULL)
{
if((p2->stu).average < (min->stu).average)
min = p2;
}
if(min != p1)
{
s = p1->stu;
p1->stu = min->stu;
min->stu = s;
}
}
}
return head;
}
// 打印出链表所有结点保存的学生信息
void printStudentListInfo(struct node* head)
{
struct node* p = head->next;
printf(HEAD_INFO);
struct student *s;
while(p != NULL)
{
s = &(p->stu);
printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\t%.2lf\n", s->num, s->name, s->sex,\
s->age, s->chinese, s->math, s->english, s->pe, \
s->total,s->average);
p = p->next;
}
printf("\n");
}
// 文件保存学生成绩链表所有信息
void saveStudentListToFile(struct node* head)
{
if(head != NULL)
{
struct node *p = head->next;
FILE* fp = fopen("students.txt", "w+");
if(fp != NULL)
{
struct student *s;
while(p != NULL)
{
s = &(p->stu);
fprintf(fp,"%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\t%.2lf\n", s->num, s->name, s->sex, \
s->age, s->chinese, s->math, s->english, s->pe, \
s->total,s->average);
p = p->next;
}
fclose(fp);
}else {
error("打开students文件失败,请检查!\n");
}
}
}
//文件读取txt中所有信息
struct node *readStudentmessage(struct node *head)
{
struct student stu;
FILE* fp ;
if((fp=fopen("students.txt","r"))==NULL)
{
perror("open failed");
printf("没有存档的信息\n");
return NULL;
}
int ret;
while(1)
{
ret=fscanf(fp,"%d%s%s%d%d%d%d%d%d%lf", &stu.num, stu.name, stu.sex, \
&stu.age,&stu.chinese, &stu.math,\
&stu.english,&stu.pe,&stu.total,&stu.average);
if(ret==-1)
break;
insertStudentNode(head,&stu);
}
// return &new_node->stu;
fclose(fp);
}
void showMenu() //主菜单界面
{
printf("\t*************欢迎使用学生成绩管理系统*************\t\n");
printf("\t* 1:录入成绩 2:删除成绩 *\t\n");
printf("\t* 3:查询成绩 4:修改成绩 *\t\n");
printf("\t* 5:成绩排序 6:显示所有 *\t\n");
printf("\t* 7:保存成绩 8:显示菜单 *\t\n");
printf("\t* 9:读取存档 0:退出系统 *\t\n");
printf("\t**************************************************\t\n");
printf("\n");
}
// 录入信息
void addStudent(struct node *head)
{
printf("请您按提示依次输入图书信息(以空格分隔):\n");
printf(HEAD_INFO2);
char a[1024];
struct student stu;
if (fgets(a, 1024, stdin) != NULL && sscanf(a, "%d%s%s%d%d%d%d%d", &stu.num, stu.name, stu.sex, \
&stu.age,&stu.chinese, &stu.math,\
&stu.english,&stu.pe) >= 8)
{
if (queryStudentListByNum(head, stu.num) != NULL)
printf("该学生成绩信息已经存在,无法增加!\n");
else
{
insertStudentNode(head, &stu);
printf("学生【%d\t%s】的信息添加成功!\n", stu.num, stu.name);
}
}
else
{
printf("输入格式有误,请重新输入!\n");
}
}
// 删除信息
void deleteStudent(struct node *head)
{
printf("请输入要删除的学生学号:");
char a[1024];
int num;
if (fgets(a, 1024, stdin) != NULL && sscanf(a, "%d", &num) != EOF) //EOP表示读取到最后
{
if (deleteStudentListByNum(head, num))
{
printf("学号%d对应的学生信息删除成功!\n", num);
}
else
{
printf("学号%d对应的学生信息不存在!\n", num);
}
}
else {
printf("输入格式有误,请重新输入!\n");
}
}
// 查询信息
void queryStudent(struct node *head)
{
printf("请选择查询方式:1.学号查询 2.姓名查询 \n");
char a[1024];
if (fgets(a, 1024, stdin) != NULL)
{
if(a[0] == '1')
{
printf("请输入学生学号:");
int num;
if (fgets(a, 1024, stdin) != NULL && \
sscanf(a, "%d", &num) != EOF) {
struct node *p = queryStudentListByNum(head, num);
if(p == NULL)
{
printf("未查到学号%d对应的学生信息!\n", num);
}
else
{
struct student *s = &(p->stu);
printf(HEAD_INFO);
printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\t%.2lf\n", s->num, s->name, s->sex, s->age,\
s->chinese, s->math, s->english, s->pe, \
s->total,s->average);
}
}else
{
printf("输入格式有误,请重新输入!\n");
}
}else if(a[0] == '2')
{
printf("请输入学生姓名:");
char name[20];
if (fgets(a, 1024, stdin) != NULL && sscanf(a, "%s", name) != EOF)
{
struct node *p = queryStudentListByName(head, name);
if(p == NULL)
{
printf("未查到姓名%s对应的学生信息!\n", name);
}
else
{
struct student *s = &(p->stu);
printf(HEAD_INFO);
printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%.2lf\n", s->num, s->name, s->sex, \
s->chinese, s->math, s->english, s->pe, \
s->total,s->average);
}
}
else
{
printf("输入格式有误,请重新输入!\n");
}
}
else
{
printf("输入格式有误,请重新输入!\n");
}
}
}
// 修改信息
void modifyStudent(struct node *head)
{
printf("请输入要修改的学生学号:");
char a[1024];
int num;
if (fgets(a, 1024, stdin) != NULL && \
sscanf(a, "%d", &num) != EOF)
{
struct node *p = queryStudentListByNum(head, num);
if (p == NULL)
{
printf("学号%d对应的学生信息不存在!\n", num);
}else
{
struct student *s = &(p->stu);
printf("学号%d对应的学生信息如下:\n", num);
printf(HEAD_INFO);
printf("%d\t%s\t%d\t%d\t%d\t%d\t%d\t%.2lf\n", s->num, s->name, \
s->chinese, s->math, s->english, s->pe, \
s->total,s->average);
printf("请依次输入修改后信息,不变的信息请同样输入:\n");
printf("姓名\t语文\t数学\t英语\t体育\n");
struct student stu;
if (fgets(a, 1024, stdin) != NULL && \
sscanf(a, "%s%d%d%d%d", stu.name, &stu.chinese, \
&stu.math, &stu.english, &stu.pe) >= 5)
{
strcpy(s->name, stu.name);
s->chinese = stu.chinese;
s->math = stu.math;
s->english = stu.english;
s->pe = stu.pe;
// 计算成绩
s->total = stu.chinese + stu.math + \
stu.english + stu.pe;
s->average = s->total*1.0/4;
printf("修改成功,修改后信息如下:\n");
printf(HEAD_INFO);
printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%.2lf\n", s->num, s->name, s->sex, \
s->chinese, s->math, s->english, s->pe, \
s->total,s->average);
}else
{
printf("输入格式有误,请重新输入!\n");
}
}
}else
{
printf("输入格式有误,请重新输入!\n");
}
}
// 成绩排序
void sortStudent(struct node *head)
{
printf("请选择排序方式:1.总分从高到低排序 2.平均分从低到高排序 \n");
char a[1024];
if (fgets(a, 1024, stdin) != NULL)
{
if(a[0] == '1')
{
sortStudentListByTotal(head);
printStudentListInfo(head);
}else if(a[0] == '2')
{
sortStudentListByAverage(head);
printStudentListInfo(head);
}else
{
printf("输入格式有误,请重新输入!\n");
}
}else
{
printf("输入格式有误,请重新输入!\n");
}
}
// 显示所有
void showStudent(struct node *head)
{
printStudentListInfo(head);
printf("当前系统总共有%d条学生成绩记录!\n", getStudentListLength(head));
printf("\n");
}
// 保存信息
void saveStudent(struct node *head)
{
saveStudentListToFile(head);
printf("保存成功,信息存放在students.txt文件!\n");
}
// 读取信息
void readStudent(struct node *head)
{
readStudentmessage(head);
printf("正在读取存档中........\n");
proc();
printf("读取成功\n");
usleep(1000*50);
printf("------------------------------------\n");
}
//进度条
void proc()
{
int i;
printf(">>");
for(i=1;i<=100;i++)
{
if(i<11)
printf(">");
printf("\b\b\b%d%%",i);
fflush(stdout);
usleep(1000*30);
}
printf("\n");
}
// 退出
void exitProgram(struct node *head)
{
freeStudentList(head);
printf("ByeBye....~~\n");
exit(0);
}