前言
由于本身学校实验室考核C语言要求写一份学生信息管理系统,固然是简易的那种,话很少说先上题目
数组
提示:如下是本篇文章正文内容,下面案例可供参考函数
1、分析题目
要求有一个菜单栏,能够考虑建立一个menu函数。spa
到目前为止的要求都还挺容易的,根据要求,建立相应的Function函数就好了
指针
其实我认为注意事项1,2才是本程序的难点之处,一开始的想法是再建立一个函数来专门判断是否进行了程序录入,可是在却卡在了switch,因而我以为先给二维数组的第一个数赋值为101,经过判断它是否为101来判断是否录入code
grade[0][0]=101;
而二维数组在引用它时增长了必定难度,不过还好blog
2、解决步骤
1.菜单栏
代码以下:排序
void menu() { printf("\n*******************学生成绩综合管理系统***************\n"); printf(" 1 成绩录入\n"); printf(" 2 计算平均分\n"); printf(" 3 计算最高分\n"); printf(" 4 成绩排序\n"); printf(" 5 退出\n"); printf("*******************************************************\n"); }
2.功能1
这里我直接用for语句实现了数据的录入,用if实现判断是否为0~100代码以下:数学
int Function_One() { int a,b; grade_p=grade[0]; printf("Function_One....\n"); printf("直接按照顺序写下这20个成绩\n"); for(a=0;a<4;a++) for(b=0;b<5;b++) { scanf("%d",&grade[a][b]); /*判断成绩是否为0~100*/ if(*(grade_p+a*5+b)>100||*(grade_p+a*5+b)<0) { printf("成绩应为0~100之间的数值\n"); b--;//若是不是,从新输入并覆盖刚刚的成绩 if(b<0)/*这一步就是为了使指针可以从新指向上一个地址 其实若是直接用grade_p++这里就能直接写它--, 可是这样容易出错,我仍是选择了*(grade_p+a*5+b) 这种方式*/ { b=4; a--; if(a<0) { a=0; } } } } printf("成绩成功录入!\n"); }
3.功能2
代码以下:it
int Function_Two() { int a,b; float c,d; grade_p=grade[0]; c=0; printf("Function_Two....\n"); printf("正在计算平均数\n"); for(a=0;a<4;a++)/*这里也没什么难处,进行20次相加就直接除以20*/ for(b=0;b<5;b++) { c=c+*(grade_p+a*5+b); } d=c/20; printf("平均数为%.2f\n",d);/*对数进行修饰 %.2f 修饰成保留两位小数*/ }
4.功能3
代码以下:io
int Function_Three() { int m,a,b; grade_p=grade[0]; for(a=0;a<4;a++)/*一样的,进行20次判断,有更大的就赋值给m*/ for(b=0;b<5;b++) { if(m<*(grade_p+a*5+b)) { m=*(grade_p+a*5+b); } } printf("最大值为%d\n",m); }
5.功能4
代码以下:
/*这段代码我是改了又改,最后发现大循环得用20次,小循环得用 19次,数学很重要/doge哈哈*/ int Function_Four() { int grade1[20]; int *grade1_p=grade1; int m,a,b,n,x; grade_p=grade[0]; m=0; for(a=0;a<4;a++)/*二维数组实在是太难写了 这里将它从新改成一维数组进行运算*/ for(b=0;b<5;b++,m++) { *(grade1_p+m)=*(grade_p+a*5+b); } for(m=0;m<20;m++)/*就是这个地方,是将每一个数进行20次判断,才能获得 最终的排位顺序*/ { for(x=0;x<19;x++) { if (*(grade1_p+x)<*(grade1_p+x+1)) { n=*(grade1_p+x+1); *(grade1_p+x+1)=*(grade1_p+x); *(grade1_p+x)=n; } } } for(m=0;m<20;m++) { printf("%d\n",*(grade1_p+m)); } }
6.功能5
代码以下:
int Function_Five() { printf("正在退出系统……\n"); exit(0); }
7.主函数
代码以下:
int main() { int t,x; int *t_p=&t; grade[0][0]=101; grade_p=grade[0]; for(x=0;x<13;x++) printf("%c",*(a_p+x)); while(1) { menu(); printf("选择:"); scanf("%d",t_p); switch(*t_p) { case 1: Function_One(); break; case 2: if(grade[0][0]==101) { printf("请先输入成绩~\n"); } else Function_Two(); break; case 3: if(grade[0][0]==101) { printf("请先输入成绩~\n"); } else Function_Three(); break; case 4: if(grade[0][0]==101) { printf("请先输入成绩~\n"); } else Function_Four(); break; case 5: Function_Five(); break; default: printf("输入错误\n"); break; } } }
包涵的头文件为
#include "stdio.h" #include "stdlib.h"
使用的全局变量有
int grade[4][5]; int *grade_p=grade[0]; char a[13]={ 64,82,97,105,108,103,117,110,66,111,111,109,126}; char *a_p=a;
总结
以上就是今天要讲的内容,本文仅仅简单介绍了本题目该如何解决,你们能够触类旁通运用到其余地方。
欢迎你们进群交流:1033131250