一、实验的目的、要求及内容1、通过实验掌握指针的概念,学会定义和使用指针变量。2、能正确使用数组的指针和指向数组的指针变量。3、能正确使用字符串指针和指向字符串的指针变量。4、掌握结构体类型变量的定义和使用。二、算法设计思想及内容本实验主要完成指针和结构体的应用训练,总共要求完成三个问题的源代码的编辑、编译、连接与运行,最终产生相关的运行结果,按规定要求提交相应的实验报告。具体要求完成的问题如下:1、采用指针方式编写程序输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:(1)输入10个数;(2)进行处理;(3)输出处理后的10个数。2、采用指针方式在主函数中输入字符串,在函数中求出字符串的长度,然后输出求出的长度。3、有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个学生的数据,要求输出3门课程的总平均成绩,以及最高分数的学生的数据(包括学号、姓名、3门课的成绩、平均分)。三、所使用的软硬件平台软件平台:MicrosoftWindowsXP专业版SP3,MicrosoftVisualC++6.0。硬件平台:联想系列,Intel(R)Core(TM)i3,CPU3.20Ghz,2.99GB内存,550GB硬盘。四、源程序代码1.#includestdio.hintmain(){inta[10];voidshuru(inta[10]);voidchuli(inta[10]);voidshuchu(inta[10]);printf(请输入10个数:);shuru(a);chuli(a);printf(输出处理后的10个数为:);shuchu(a);printf(\n);return0;}voidshuru(inta[10]){inti;for(i=0;i10;i++)scanf(%d,&a[i]);}voidchuli(inta[10]){inti,*max,*min,t1,t2;max=min=a;for(i=0;i10;i++){if(*maxa[i])max=&a[i];if(*mina[i])min=&a[i];}t1=*max;*max=a[9];a[9]=t1;t2=*min;*min=a[0];a[0]=t2;}voidshuchu(inta[10]){inti;for(i=0;i10;i++)printf(%d,a[i]);}2.#includestdio.hch(char*a){intcount=0;char*p=a;while(*p++)count++;returncount;}intmain(){chara[32767];printf(请输入一个字符串:\n);gets(a);printf(该字符串的长度为:%d\n,ch(a));return0;}3.#includestdio.h#defineN5structstudent{charnumber[6];charname[8];intscore[3];intaverage;}student[N];intmain(){inti,j,sum=0,maxi=0,max=0,average=0;for(i=0;iN;i++){printf(输入第%d个学生以下相关信息:\n,i+1);printf(学号:);scanf(%s,student[i].number);printf(姓名:);scanf(%s,student[i].name);for(j=0;j3;j++){printf(第%d门课程的成绩:,j+1);scanf(%d,&student[i].score[j]);}}for(i=0;iN;i++){for(j=0;j3;j++)sum+=student[i].score[j];student[i].average=sum/3;average=average+student[i].average;if(summax){max=sum;maxi=i;}sum=1;}average/=N;printf(学号姓名科目1科目2科目3平均成绩\n);for(i=0;iN;i++){printf(%2s%5s,student[i].number,student[i].name);for(j=0;j3;j++)printf(%6d,student[i].score[j]);printf(%8d\n,student[i].average);}printf(3门课程的总平均成绩为:%d\n,average);printf(最高分学生的号数:%s,姓名:%s\n,student[maxi].number,student[maxi].name);printf(这个学生3门课程的成绩分别为:%d,%d,%d,平均成绩为:d\n,student[maxi].score[0],student[maxi].score[1],student[maxi].score[2],student[maxi].average);return0;}五、运行结果及分析1.2.3.六、结论与体会(在上机程序调试中遇到的问题、采用的解决办法、得到的收获)通过对指针和结构体的学习,我体会到了指针是C程序中广泛使用的一种数据类型。运用指针进行编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构;能很方便地使用数组和字符串;并能编写出高校的程序。指针极大地丰富了C语言的功能,学习指针是C语言学习中重要的一个环节,能否正确理解和掌握指针的使用时我们是否真正掌握C语言精华的一个标志。同时,指针也是C语言中很困难的一部分,在学习中除了要真正理解基本概念,还需要多多编程上机实践。当一个C程序中变量过多,各个数据之间难以联系,没有整体概念的时候,结构体的作用大大凸显,定义一个结构体类型,可以在一个结构中声明不同的数据类型,相同结构的结构体变量是可以相互赋值的。使用结构体不仅节省了内存空间,而且使得编程效率大大提高。仅供学习交流参考