《C语言实验报告实验.doc》由会员分享,可在线阅读,更多相关《C语言实验报告实验.doc(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、本科实验报告课程名称: C语言程序设计 实验项目: 实验七、八、九、十 实验地点: 中区ZSA303 专业班级: 软件11 学号: 学生姓名: 指导教师: 2011年 06 月 01 日实验七 指 针1.输入有一行字符,将字符串中的字符逆序后输出。运行结果:#include#includevoid main()char s8,*p=s;printf(input:n);gets(s);p = s + strlen(s) - 1;if(*p!=0)p+;for(;p=s;p-)printf(%c,*p);printf(n);2.输入有一行字符,编程序将每个单词的第一个字母改为大写。#include
2、 void main()运行结果:char a255,*s=&a0;printf(input a strings:);scanf(%n,s);if (*s=a) *s-=32;while(*(+s)if (*(s-1)= & *s=a)*s-=32;s=&a0;printf(%sn,s);实验八 函 数1. 编写一个计算n!的函数,用主函数调用它,使之输出7阶杨辉三角形. #include #define N 9void yanghui() int i,j,aNN=0; for(i=1;iN;i+) ai1=1; aii=1; for(i=3;iN;i+) for(j=2;ji;j+) aij
3、=ai-1j-1+ai-1j; for(i=1;iN;i+) for(j=1;j=i;j+) 运行结果: printf(%6d,aij); printf(n); void main()yanghui();2. 2定义一个函数,功能是计算n个学生的成绩中,高于平均成绩的人数,并作为函数返回值值。用主函数来调用它,统计50个学生成绩中,高于平均成绩的有多少人?#includeint fun(float *score,int n);void main()float score50;int i;for(i=0;i50;i+)scanf(%f,&scorei);printf(%d,fun(score,5
4、0);int fun(float *score,int n)float sum=0,mean=0;int num=0;int i;for(i=0;in;i+)sum=sum+scorei;mean=sum/n;for(i=0;imean) num+;return num;实验九 结构体和公用体1有5个学生,每个学生的数据包括学号、姓名、三门课的成绩。从键盘输入这5个学生的数据,要求输出三门课总平均成绩,以及最高分的学生的所有数据。要求用一个input函数输入5个学生的数据;用一个average函数求总平均成绩;用max函数找出最高分的学生;总平均成绩和最高分的学生的所有数据在主函数中输出。运行
5、结果:#include#define max 5/*设定要输入成绩的学生个数*/double zpj; /*总平均值*/struct student /*结构体*/ int num; char name10; int score1; int score2; int score3; double pj; ; struct student stumax,temp; void Input() /*输入函数*/ int i; for(i=0;imax;i+) printf(enter number);scanf(%d,&stui.num);printf(enter name);scanf(%s,&st
6、ui.name); printf(enter score1);scanf(%d,&stui.score1);printf(enter score2);scanf(%d,&stui.score2);printf(enter score3);scanf(%d,&stui.score3); average() /*求平均值函数*/int i;for(i=0;i5;i+) stui.pj=stui.score1+stui.score1+stui.score3;zpj+=stui.pj; for(i=0;i5;i+) stui.pj/=3; zpj/=max;MAX() /*找出最高平均值的学生的函数*
7、/ int i,j; temp=stu0; for(i=0;imax-1;i+) for(j=i+1;jmax;j+) if(stui.pjstuj.pj) temp=stuj; output() /*输出函数*/ int i; for(i=0;imax;i+) printf(num=%dn name=%sn score1=%dn score2=%dn score3=%dn aver=%fn, stui.num,stui.name,stui.score1,stui.score2,stui.score3,stui.pj); printf(总平均分=%fnn,zpj);printf(平均分最高的学
8、生nnum=%dn name=%sn score1=%dn score2=%dn score3=%dn aver=%fn, temp.num,temp.name,temp.score1,temp.score2,temp.score3,temp.pj); void main() /*主函数*/ Input(); average(); MAX(); output(); 实验十 文 件1. 有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud”中。2.将上题“stud”文件中的学生数据,按平均分进
9、行排序处理,将已排序的学生数据存入一个新文件“stu_sort”中。#includestdio.h#includestdlib.h#define M 5#define stu struct studentstuint num;char name20;float s1;float s2;float s3;float avg;main()stu stM,temp;FILE *fp,*fp1;int i,j;for(i=0;iM;i+)scanf(%d%s%f%f%f,&sti.num,sti.name,&sti.s1,&sti.s2,&sti.s3);sti.avg=(sti.s1+sti.s2+
10、sti.s3)/3;if(fp=fopen(stud,wb)=NULL)printf(cannot open filen);for(i=0;iM;i+)if(fwrite(&sti,sizeof(stu),1,fp)!=1)printf(file write errorn);fclose(fp);fp=fopen(stud,rb);printf(numtnametscore1tscore2tscore3taveragen);for(i=0;iM;i+)fread(&sti,sizeof(stu),1,fp);printf(%dt%st%ft%ft%ft%fn,sti.num,sti.name,sti.s1,sti.s2,sti.s3,sti.avg);printf(排序后的成绩n);for(i=0;iM;i+) for(j=i+1;jM;j+) if(sti.avgstj.avg) temp=sti; sti=stj; stj=temp; fp1=fopen(stu_sort,w); for(i=0;iM;i+)fwrite(&sti,sizeof(struct student),1,fp); printf(%dt%st%ft%ft%ft%fn,sti.num,sti.name,sti.s1,sti.s2,sti.s3,sti.avg);fclose(fp1);运行结果: