Linux C 指针数组 数组指针 函数指针 的使用实例
来源:互联网 发布:riverside歌曲知乎 编辑:程序博客网 时间:2024/05/16 10:45
实现功能:
1.用二维数组Sorce【6】【4】保存学生的数学、英语、C和总成绩;
2.用一维数组存放姓名并和二维下标一一对应
3.输入各科成绩,自动求出总分并存入数组
4.输出各门功课的分数及总分,最高分,最低分和平均值
5.分数最高和分数最低学生的姓名及各科成绩
实现要求:
使用Makefile、函数指针、数组指针、指针数组传参
</pre><p></p><p></p><p><span style="font-size:18px;">一.通用的头文件</span></p><pre name="code" class="cpp"><span style="font-size:18px;">#ifndef _SETMSG_H#define _SEGMSG_H#include <stdio.h>#include <stdlib.h>#include <string.h>#define STUS 6 //学生总数#define CLASS 4 //总科目数#define M 0 //数学标记#define E 1 //英语标记#define C 2 //C语言标记#define S 3 //总分标记void SetMsg(float (*Sor)[CLASS],char *Sname[STUS]);void EverClass(float (*Sor)[CLASS],char *Sname[STUS]);void FirstOne(float (*Sor)[CLASS],char *Sname[STUS]);#endif</span>
二、主函数C文件Main.c
<span style="font-size:18px;">#include "Main.h"int main(){float Sorce[STUS][CLASS] = {{0,0,0,0}};char *Sname[STUS];void (* Common)(float (*)[CLASS],char **); //函数指针Common = SetMsg; //函数指针指向SetMsg函数Common(Sorce,Sname); //调用SetMsg函数Common = EverClass; //函数指针指向EverClass函数</span><pre name="code" class="html"><span style="font-size:18px;">Common(Sorce,Sname); //调用EverClass函数</span>Common = FirstOne; //函数指针指向FirstOne函数
Common(Sorce,Sname); //调用FirstOne函数
return 0;
}
三、实现输入成绩自动求和并存入数组的函数 SetMsg
<span style="font-size:18px;">#include "Main.h"void SetMsg(float (*sor)[CLASS],char *Sname[STUS]){int i;float sum;char *Name[STUS] = {"Stu1","Stu2","Stu3","Stu4","Stu5","Stu6"};//printf("Please Input Students Name!\n");for(i=0;i<STUS;i++){//printf("Student Name %d:\t",i+1);//scanf("%s",Name);*(Sname+i) = *(Name+i);}for(i=0;i<STUS;i++){printf("Please input %s Sorce :\n",*(Sname+i));printf("Math :\t");scanf("%f",(*(sor+i)+M));printf("English :\t");scanf("%f",(*(sor+i)+E));printf("C :\t");scanf("%f",(*(sor+i)+C));*(*(sor+i)+S) = *(*(sor+i)+M) + *(*(sor+i)+E) + *(*(sor+i)+C);}}</span>四、.输出各门功课的分数及总分,最高分,最低分和平均值函数 DoMsg.c
<span style="font-size:18px;">#include "Main.h"void DoMsg(float (*Sor)[CLASS],float *Sum,float *Max,float *Min,int s ){int i;*Sum = *Max = *Min = 0;for(i=0;i<STUS;i++){if( *(*(Sor+i)+s) < *Min)*Min = *(*(Sor+i)+s);else if ( *(*(Sor+i)+s) > *Min)*Max = *(*(Sor+i)+s);*Sum += *(*(Sor+i)+s);}}void EverClass(float (*Sor)[CLASS],char *Sname[STUS]){float Sum=0;float Max=0;float Min=0;float Ave=0;int i=0;for( i=0 ; i<CLASS-1 ; i++ ){switch(i){case 0:printf("This About Math:\n");break;case 1:printf("This About English:\n");break;case 2:printf("This About C:\n");break;}DoMsg(Sor,&Sum,&Max,&Min,i);printf("Account : %6.2f\nMax : %6.2f\nMin : %6.2f\nAve : %6.2f\n",Sum,Max,Min,Sum/STUS);}}</span>五、.分数最高和分数最低学生的姓名及各科成绩SleMsg.c
<span style="font-size:18px;">#include "Main.h"void FirstOne(float (*Sor)[CLASS],char *Sname[STUS]){int first=0,last=0;int i=0;for(;i<STUS;i++){if( *(*(Sor+i)+S) > *(*(Sor+first)+S) )first = i;if( *(*(Sor+i)+S) < last)last = i;}printf("The First One Is %s :\t",*(Sname+first));printf("Math : %6.2f\tEnglish : %6.2f\tC : %6.2f\tSum : %6.2f \n",*(*(Sor + first)+M),*(*(Sor + first)+E),*(*(Sor +first)+C),*(*(Sor+first)+S));printf("The Last One Is %s :\t",*(Sname+first));printf("Math : %6.2f\tEnglish : %6.2f\tC : %6.2f\tSum : %6.2f \n",*(*(Sor + last)+M),*(*(Sor + last)+E),*(*(Sor + last)+C),*(*(Sor+last)+S));}</span>
六、Makefile文件
a.o:Main.cgcc -c Main.c -o a.ob.o:SetMsg.cgcc -c SetMsg.c -o b.oc.o:DoMsg.cgcc -c DoMsg.c -o c.od.o:SleMsg.cgcc -c SleMsg.c -o d.orun:a.o b.o c.o d.ogcc a.o b.o c.o d.o -o runclean:rm -rf *.o run
0 0
- Linux C 指针数组 数组指针 函数指针 的使用实例
- 指针, 指针的指针, 数组, 指针数组, 数组指针, 指针函数, 函数指针 C/C++中函数指针的含义
- C语言中的指针(指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针)
- 指针实例:指针的指针,数组指针,指针数组
- c语言:数组指针,指针数组,函数指针,函数指针数组,指向函数指针数组的指针
- C语言:浅析指针数组、数组指针、函数指针、函数指针数组、指向函数指针数组的指针
- 【C】理解指针数组、数组指针、函数指针、函数指针数组、指向函数指针数组的指针
- c语言学习,指针函数、函数指针、指针的指针、指向指针数组的指针
- c语言学习,指针函数、函数指针、指针的指针、指向指针数组的指针
- C语言 复杂指针的申明问题 数组指针 指针数组 函数指针 指针函数
- 函数指针,函数指针数组,函数指针数组的指针
- 函数指针,函数指针数组,函数指针数组的指针
- 函数指针,函数指针数组,函数指针数组的指针
- 函数指针、函数指针数组,函数指针数组的指针
- C语言:数组指针、指针数组、指针的指针、函数指针
- 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
- 理解 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
- 指针数组,数组指针,函数指针,函数指针数组,指向函数指针数组的指针
- 从js向Action传中文参数出现乱码问题的解决方法
- 算法竞赛——快速排序
- JAVA 数组的排序方法冒泡、选择、快速、数组递增
- JAVA面向对象基础 对象 类 方法学习笔记
- Idea中 Module is not specified错误解决
- Linux C 指针数组 数组指针 函数指针 的使用实例
- 新闻列表制作小技巧
- 图的应用
- Android:自定义DialogFragment
- angularjs上传文件+jfinal接收上传文件
- Webx系列之Ajax请求的四种方式
- 线程的五大状态
- 三种数据库key
- 三层架构