c程序设计实验指导与测试(第四版)所有示例代码
- 格式:doc
- 大小:1.58 MB
- 文档页数:53
本科生实验报告实验课程算法语言与程序设计学院名称管理科学学院专业名称信息与计算科学学生姓名学生学号************指导教师王玉兰实验地点数学应用与计算机仿真实验教学示范中心实验成绩二〇一五年三月二〇一五年六月填写说明1、适用于本科生所有的实验报告(印制实验报告册除外);2、专业填写为专业全称,有专业方向的用小括号标明;3、格式要求:①用A4纸双面打印(封面双面打印)或在A4大小纸上用蓝黑色水笔书写。
②打印排版:正文用宋体小四号,1.5倍行距,页边距采取默认形式(上下2.54cm,左右2.54cm,页眉1.5cm,页脚1.75cm)。
字符间距为默认值(缩放100%,间距:标准);页码用小五号字底端居中。
③具体要求:题目(二号黑体居中);摘要(“摘要”二字用小二号黑体居中,隔行书写摘要的文字部分,小4号宋体);关键词(隔行顶格书写“关键词”三字,提炼3-5个关键词,用分号隔开,小4号黑体);正文部分采用三级标题;第1章××(小二号黑体居中,段前0.5行)1.1 ×××××小三号黑体×××××(段前、段后0.5行)1.1.1小四号黑体(段前、段后0.5行)参考文献(黑体小二号居中,段前0.5行),参考文献用五号宋体,参照《参考文献著录规则(GB/T 7714-2005)》。
目录目录目录 (3)第一章程序调试 (4)1、修改程序 (4)2、实验项目 (5)3、测试 (5)第二章C语言基础 (6)1、修改程序 (6)2、实验项目 (6)3、测试 (8)第三章控制结构 (9)1、实验项目 (9)2、测试 (13)第四章数组 (15)1、实验项目 (15)2、测试 (20)第五章指针 (23)1、实验项目 (23)2、测试 (27)第六章函数 (29)1、实验项目 (29)2、测试 (36)第七章文件 (39)1、实验项目 (39)2、测试 (43)第八章结构体与共用体 (46)1、实验项目 (46)2、测试 (47)教师评阅 (53)第一章程序调试1、修改程序【实验1-1】源代码:#include <stdio.h>int main(void){int a, b, sum;a=40; b=50;sum=a+b;printf("Hello, C! \n");printf("Sum is %d \n", sum);return(0);}运行结果:【实验1-2】源代码:#include <stdio.h>int main(void){float aver;int n1=90,n2=85,n3=88,n4=79,n5=95;aver=(n1+n2+n3+n4+n5)/5;printf ("5aver = %0.2f \n", aver);return(0);}运行结果:2、实验项目无3、测试【ts1-1】源代码:#include <stdio.h>int main(void){int x, y, z;x=5, y=8;z=x+y;printf ("x=%d,y=%d,z=%d\n",x,y,z); return(0);}运行结果:【ts1-2】源代码:#include <stdio.h>int main(void){int a=2, b=3;float x=8.2, y=9.2, z;z=x/2 + y/b;printf ("z=%0.2f\n", z);return(0);}运行结果:第二章C语言基础1、修改程序【实验2-1】源代码:#include <stdio.h>int main(void){int x, y, sum;printf("input X:");scanf("%d",&x);printf("input Y:");scanf("%d",&y);sum=x+y;printf ("sum=%d\n", sum);return(0);}运行结果:2、实验项目【实验2-2】源代码:#include<stdio.h>void main(){int s1,s2,s3,s4,s5;float a;printf("请输入五门课的成绩:");scanf("%d%d%d%d%d",&s1,&s2,&s3,&s4,&s5);a=(s1+s2+s3+s4+s5)/5.0;printf("平均分:%0.2f \n",a);}运行结果:【实验2-3】源代码:#include<stdio.h>void main(){printf("-----------------------------\n");printf("1. Enter data\n");printf("2. Data processing\n");printf("3. End\n");printf("-----------------------------\n");}运行结果:【实验2-4】源代码:#include<stdio.h>int main(void){int a,b,c,d,e,w=1,x=2,y=3,z=4;a=b=c=1;d=++a||++b&&++c;e=w>x&&y>z;printf("a=%d,b=%d,c=%d,d=%d,e=%d\n",a,b,c,d,e); return(0);}运行结果:3、测试【2-1】源代码:#include<stdio.h>int main(void){char c1,c2;printf("\nEnter a character:");scanf("%c",&c1);c1=c1-32;c2=c1+1;printf("\nResult is\n %c %c", c1,c2); printf("\n%4d%4d",c1,c2);return(0);}运行结果:【2-2】源代码:#include <stdio.h>int main(void){double t=1.0;t+=1/2.0+1/3.0+1/4.0+1/5.0;printf("\nThe result is %f\n",t);return(0);}运行结果:第三章控制结构1、实验项目【实验3-1】源代码:#include<stdio.h>int main (){ int a;printf("----------------------------");printf(" \n 1. Enter data \n 2. Data processing \n 3. End \n");printf("----------------------------\n");printf(" selet your number: \n");scanf("%d",&a);switch(a){case 1: printf("Enter data \n");break;case 2: printf("Data processing \n");break;case 3: printf("End \n");break;default : printf("error!");}}运行结果:【实验3-2】源代码:#include<stdio.h>int main (){int i=0,a[5],b=0; float c;printf("输入五个分数:");for(i=0;i<5;i++){ scanf("%d",&a[i]); }for(i=0;i<5;i++){ b+=a[i]; }c=b/5.0;printf("平均分:%3.2f\n 大于平均成绩的:",c);for(i=0;i<5;i++){if(a[i]>c) printf("%3d ",a[i]);}}运行结果:【实验3-3】源代码:#include<stdio.h>int main (){int a,g,s,b;for(b=1;b<=9;b++){for(s=0;s<=9;s++){for(g=0;g<=9;g++){a=g*g*g+s*s*s+b*b*b;if(a==b*100+s*10+g) printf("%d\t",a);}}}printf("\n");}运行结果:【实验3-4】源代码:#include<stdio.h>int main (){int a, i,j;printf("*\t");for(a=1;a<=9;a++) {printf("%d\t",a);}printf("---------------------------------------------------------------------------\n");for(i=1;i<=9;i++){printf("%d\t",i);for(j=1;j<=i;j++){printf("%d\t",j*i);}printf("\n");}}运行结果:【实验3-5】源代码:#include<stdio.h>int main (){char ch;int ch_num=0,dig_num=0,oth_num=0;do {scanf("%c",&ch);if(ch<='z'&&ch>='a') ch_num+=1;else if (ch<='Z'&&ch>='A') ch_num+=1;else if (ch<='9'&&ch>='0') dig_num+=1;else oth_num++ ;} while (ch!='\n');printf("字母:%d\n 数字:%d\n其他:%d\n",ch_num,dig_num,oth_num-1);return(0);}运行结果:【实验3-6】源代码:#include<stdio.h>#include<math.h>void main(){float x1,x2,x0,f0,f1,f2;printf("输入X1 X2\n");scanf("%f%f",&x1,&x2);while(1){f1=2*x1*x1*x1-4*x1*x1+3*x1-6;f2=2*x2*x2*x2-4*x2*x2+3*x2-6;x0=(x1+x2)/2;f0=2*x0*x0*x0-4*x0*x0+3*x0-6;if(f0*f1<0)x2=x0;elsex1=x0;if(fabs(f0)<=1e-5)break;}printf("结果%f\n",x0);}运行结果:【实验3-7】源代码:#include<stdio.h>void main(){int i,j,k,n,m;scanf("%d",&n);m=0;for(i=1;i<n+1;i++){for(j=0;j<n-i;j++) printf(" ");for(k=1;k<=(2*i-1);k++){if(k<=i)printf(" %d",k);else{m++;printf(" %d",k-2*m);}}m=0;printf("\n");}}运行结果:2、测试【填空3-1】源代码:#include <stdio.h>#include <conio.h>int main(void){int num=0,g,s,b;printf("\nInput data :");scanf("%d",&num);printf("\nThe result is: ");g=num%10;s=num/10%10;b=num/100;if((g+b)==s)printf("YES\n");elseprintf("NO\n");return(0);}运行结果:【改错题3-2】源代码:#include<stdio.h>int main(void){int k,m=0,mc=0, j;printf("\nEnter data: ");scanf("%d",&k);while((k>=2)&&(mc<6)) {if((k%7==0)||(k%11==0)){m+=k;mc++;}k--;}printf("\nresult is %d\n",m); return(0);}运行结果:【编程题3-3】源代码:#include<math.h>#include<stdio.h>main(){int n=1,count=0;float x;double sum ,term;printf("input x:");scanf("%f",&x);sum=x;term=x;do{term=-term*x*x/((n+1)*(n+2));sum=sum+term;n=n+2;count++;}while (fabs(term)>=1e-5);printf("sin(x)=%f,count=%d\n",sum,count);}运行结果:第四章数组1、实验项目【实验4-1】源代码:#include<stdio.h>int main(){int a[50],i=2,b;a[0]=1;a[1]=1;for(i=2;i<16;i++){a[i]=a[i-1]+a[i-2];}for(b=0;b<16;b++){printf("%6d",a[b]);if((b+1)%4==0) printf("\n");}}运行结果:【实验4-2】源代码:#include<stdio.h>int main(){int a[10] ,i,b=0;printf("输入五门课程成绩:\n");for(i=0;i<5;i++) scanf("%d",&a[i]); //输入无门课程成绩for(i=0;i<5;i++) b+=a[i]; //计算总分b=b/5; //计算平均数for(i=0;i<5;i++) //找出分数高于平均数的{if(a[i]>b) printf("序号:%d 成绩: %d\n",i,a[i]);}}运行结果:【实验4-3】源代码:#include<stdio.h>int main(){int a[3][5],i,j;float b[3]={0,0,0};for(i=0;i<3;i++){ printf("输入第%d名学生的五门成绩:\n",i+1);for(j=0;j<5;j++){scanf("%d",&a[i][j]);}}for(i=0;i<3;i++) //计算平均分{for(j=0;j<5;j++){b[i]=b[i]+a[i][j];}}for(i=0;i<3;i++) b[i]/=5.0;for(i=0;i<3;i++) printf("第%d位同学的平均分%2.2f\n",i+1,b[i]);}运行结果:【实验4-4】源代码:#include<stdio.h>#include<string.h>int main(){char classes[6][15]={"Wang Wu","Zhang San","Li Si","Zhao Liu","Ding Yi","Qian er"};char name[15];int i,b;printf("输入名字:");gets(name);for(i=0;i<6;i++){if(strcmp(name,classes[i])==0){printf("%s是\n",name); b=1; break;}b=0;}if(b==0)printf("%s不是\n",name);}运行结果:【实验4-5】源代码:#include<stdio.h>void main(){char a[12]="abcdefklmnp",ch;int top,bot,mid;printf("Input a character :");scanf("%c",&ch);bot=0;top=10;for(;bot<top;){mid=(bot+top)/2;if(a[mid]==ch){printf("This charcreat in a\nSubscript%d\n",mid+1);break;}else if(ch>a[mid]) bot=mid+1;else top=mid-1;}if(bot>top)printf("This character not in a ");}运行结果:【实验4-6】源代码:#include<stdio.h>#define N 30void main(){int i=0;long n;char str[N];printf("Inputs a posivite integer:");scanf("%ld",&n);while(n>0){str[i]=n%10+'0';n=n/10;i++;}str[i]='\0';printf("%s\n",str);}运行结果:2、测试【填空题4-1】源代码:#include<stdio.h>#include<stdlib.h>#define N 20int main(void){int a[N][N];int n,i,j,k;double s=0,aver=0;printf("\nInput the dimension of array N: ");scanf("%d",&n);printf("***** The array *****\n");for(i=0;i<n;i++){for(j=0;j<n;j++){a[i][j]=rand()%10;printf("%4d",a[i][j]);if(i==0||j==0||i==n-1||j==n-1)s+=a[i][j];}printf("\n");}k=4*(n-1);aver =s/k;printf("***** THE RESULT *****\n");printf("The average is %2.3f\n",aver);return(0);}运行结果:【改错题4-2】源代码:#include <stdio.h>int main(void){int i, j;char s[80];printf("\nEnter a string: "); gets(s);printf("The original string: "); puts(s);for(i=j=0; s[i]!='\0';i++)if(s[i]!='S'){s[j]=s[i];j++;}s[j]='\0';printf("The string after deleted: "); puts(s);return(0);}运行结果:【编程题4-3】源代码:#include<stdio.h>void main(){int i=0,j;char str[100];int num[27]={0};printf("input str:");gets(str);while(str[i]!='\0'){j=str[i]-'a';num[j]=num[j]+1;i++;}for(j=0;j<26;j++) printf("%d ",num[j]);}运行结果:【完善程序4-4】源代码:#include<stdio.h>#include<math.h>#define N 10int main(void){int i;double x[N]={92.0,85.0,56.0,75.0,82.0,79.0,65.0,91.0,89.0,56.0};double x1=0.0,s=0.0;for(i=0;i<10;i++)x1+=x[i];x1/=10;for(i=0;i<10;i++)s+=pow((x[i]-x1),2);s/=10;s=sqrt(s);printf("%f\n",s);return(0);}运行程序:第五章指针1、实验项目【实验5-1】源代码:#include<stdio.h>#define N 10int main(void){int x[N],*p1,*p2,i;for(i=0;i<N;i++)scanf("%d",x+i);for(p1=x,p2=x;p1-x<N;p1++)if(*p1>*p2) p2=p1;printf("MAX=%d,INDEX=%d\n",*p2,p2-x);return(0);}运行结果:【实验5-2】源代码:#include<stdio.h>#define M 20int main(void){int i,x[M],n, m, *p,*k,*j;printf("\nEnter n:");scanf("%d",&n);printf("\nEnter array x[i](i=0~%d):",n-1);for(i=0;i<n;i++)scanf("%d",x+i);printf("\n");m=n/2;k=x;j=x+n-1;p=x+m;for(;k<=p;k++,j--){int t=*k;*k=*j;*j=t;}printf("\nThe array inverted:\n"); for(i=0;i<n;i++)printf("%d ",x[i]);return(0);}运行结果:【实验5-3】源代码:#include<stdio.h>#include<ctype.h>int main(void){char ch[80],*c;int d,k=0;printf("\nPlease input a string:");gets(ch);c=ch;for(;*c;c++)if(k){if(*c==' '){k=0;*(c-1)=toupper(*(c-1));}}elsek=1;printf("\nResult is: %s\n",ch);return(0);}运行结果:【实验5-4】源代码:#include<stdio.h>#define N 80int main(void){int i=0,j=0,n;char str[N],*p=str;printf("\nEnter a string:");scanf("%s",str);while(*(p+i)){if(*(p+i)<='Z'&&*(p+i)>='A'){str[j]=*(p+i);j++;}i++;}str[j]='\0';printf("%s \n",str);return(0);}运行结果:【实验5-5】源代码:#include<stdio.h>#include<stdlib.h>int main(){int *p,n;int i,j;float ave=0;printf("输入学生数n:");scanf("%d",&n);p=(int *)malloc(n*5*sizeof(int));if(p==NULL){printf("ERROR");exit(0);}for(i=0;i<n;i++){ printf("输入第%d名学生的五门成绩:\n",i+1);for(j=0;j<5;j++)scanf("%d",p+5*i+j);}for(i=0;i<n;i++) //计算平均分{for(j=0;j<5;j++)ave+=*(p+i*5+j);printf("第%d位同学的平均分%2.2f\n",i+1,ave/5);ave=0;}}运行结果:【实验5-6】源代码:#include<stdio.h>int main(void){int base=0;char str[80], *p=str;printf("Input the binary number\n");gets(str);while(*p!='\0'){base=base*2+*p-48;p++;}printf("%d\n", base);return(0);}运行结果:2、测试【填空题5-1】源代码:#include<string.h>#include<stdio.h>int main(void){char str[50],*p1,*p2;int i, t=0;printf("Input:");scanf("%s",str);p1=str;p2=str+strlen(str)-1;for (i=0;i<=(strlen(str)-1)/2;i++)if (*p1!=*p2){t=1;break;}if(t!=1)printf("%s\n","yes!");elseprintf("%s\n","no!");return(0);}运行结果:【改错题5-2】源代码:运行结果:【填空题5-3】源代码:#include <stdio.h>#include <string.h>int main(void){char *p,str[100];long int n=0;int flag=1;p=str;printf("Enter a string:\n");gets(p);while(*p!='\0'){if(*p=='-')flag=-1;p++;}n=n*10+*p-48;p++;}printf("%ld\n",n*flag);return(0);}运行结果:第六章函数1、实验项目【实验6-1】源代码:#include<stdio.h>float aver (float b[],int n );int main(void){float ave,a[10];int i;for (i=0;i<10;i++)scanf ("%f",&a[i]);ave =aver(a,10) ;printf ("average =%6.2f\n", ave);return(0);}float aver (float b[],int n ){int i ;float max,min,sum ;max=min=sum=b[0] ;for (i=1;i<n;i++)if (b[i]>max )max=b[i] ;else if ( b[i]<min )min=b[i] ;sum=sum+b[i] ;}printf ("max=%6.2f\n min=%6.2f\n",max,min);return (sum/n) ;}运行结果:【实验6-2】源代码:#include <stdio.h>int main(void){int a,b,x;int gcd(int,int);printf("Enter a,b: ");scanf("%d%d",&a,&b);x=gcd(a,b);printf("%d",x);return(0);}int gcd(int u,int v){int t;while(u%v!=0){t=u%v;u=v;v=t;}return(v);}运行结果:【实验6-3】源代码:#include <stdio.h>int main(void){int a,b,x;int gcd(int,int);printf("Enter a,b: ");scanf("%d%d",&a,&b);x=gcd(a,b);printf("%d",x);return(0);}int gcd(int u,int v){if(u%v==0)return v;elsereturn (gcd(v,u%v)); }运行结果:【实验6-4】源代码:#include <stdio.h>#include<stdlib.h>int main(int argc,char *argv[]) {int a,b,x;int gcd(int,int);a=atoi(argv[1]);b=atoi(argv[2]);printf("a=%d b=%d\n",a,b); x=gcd(a,b);printf("gcd=%d",x);return(0);}int gcd(int u,int v){int t;while(u%v!=0){t=u%v;u=v;v=t;}return(v);}运行结果:【实验6-5】源代码:#include <stdio.h>#include<stdlib.h>void invert(int a[],int n){int i,w,nn=n/2;for(i=0;i<nn;i++){ w=a[i-n];a[i-n]=a[-i-1];a[-i-1]=w;} }int main(void){int i,n,*a;while(1){printf("Enter n:");scanf("%d",&n);printf("\n");if(n>0)break;}a=(int *)malloc(n*sizeof(int));if(a==NULL){printf("allocation error_aborting");exit(1);}printf("Enter a[0]...a[%d]:",n);for(i=0; i<n; i++)scanf("%d",a++);invert(a,n);printf ("the array has been invert:\n");for(i=0;i<n;i++){if(i%5==0)printf("\n");printf("%5d",*(a-n+i));}return(0);}运行结果:【实验6-6】源代码:#include<stdio.h>#include<stdlib.h>float aver(int n,int m ,int *p);int main(){int *p,n,i,j,m;printf("输入学生数n:");scanf("%d",&n);printf("输入科目数m:");scanf("%d",&m);p=(int *)malloc(n*m*sizeof(int));if(p==NULL){printf("ERROR");exit(0);}for(i=0;i<n;i++){ printf("输入第%d名学生的%d门成绩:\n",i+1,m);for(j=0;j<m;j++)scanf("%d",p+m*i+j);}aver(n,m,p);}float aver(int n,int m ,int *p){float ave=0;int i,j;for(i=0;i<n;i++) //计算平均分{for(j=0;j<m;j++)ave+=*(p+i*m+j);printf("第%d位同学的平均分%2.2f\n",i+1,ave/m);ave=0;}}运行结果:【实验6-7】源代码:#include<stdio.h>#define N 10int score[N]={11,22,33,44,55,96,87,78,69,10};int *Getmax();int main(void){int *p;p=Getmax();printf("Max value in array is %d\n",*p);return(0);int *Getmax(){int t,i,position=0;t=score[0];i=0;while(i<N){if(score[i]>t){t=score[i];position=i;}i++;}return(&score[position]);}运行结果:【*实验6-8】源代码:#include<stdio.h>#include<stdlib.h>int fun(int n,int *p,int num);void main(){int i,n,*p,num,rut;printf("数字的个数n:");scanf("%d",&n);p=(int*)malloc(n*sizeof(int));if(p==NULL) exit(0);printf("数字:");for(i=0;i<n;i++)scanf("%d",p+i);printf("输入要查找的数num:");scanf("%d",&num);rut=fun(n,p,num);printf("地址:%p 数值:%d\n",p+rut,*(p+rut)); }int fun(int n,int *p,int num)int i,flag,*a;a=p;for(i=0;i<n;i++){if(*(a+i)==num)flag=i;}return(flag);}运行结果:2、测试【填空题6-1】源代码:#include<stdio.h>#define N 20int bb[N];int fun(char *p,char t) {int i=0, n=0;while(*p){if (*p==t)bb[n++]=i;p++;i++;}return (n);}int main(void){char str[N];char ch;int i, j,n;printf("\nInput the original string: ");gets(str);printf("\nInput character :");scanf("%c",&ch);n=fun(str,ch);printf("\nThe numbr of character is:%d\n",n);printf("\nThe suffix of character:");for(i=0;i<n;i++)printf("%d ",bb[i]);return(0);}运行结果:【调试6-2】源代码:#include<stdio.h>#include <conio.h>#include <string.h>char *fun(char *s,char *t){char *p,*r,*a=NULL;while(*s){ p=s;r=t;while(*r){if(*r==*p) {r++;p++;}else break;if(*r=='\0')a=s;}s++;}return a;}int main(void){char s[100],t[100],*p;printf("\nPlease enter string S: ");scanf("%s",s);printf("\nPlease enter substring t: ");scanf("%s",t);p=fun(s,t);if(p!=0) printf("\nThe result is:%s\n ",p);else printf("\nNot found!\n ");return(0);}运行结果:【完善程序6-3】源代码:#include <stdio.h>float fun (int m, int n){float m1,m2,m3;int i;m1=1;m2=1;m3=1;for(i=1;i<=m;i++)m1*=i;for(i=1;i<=n;i++)m2*=i;for(i=1;i<=(m-n);i++)m3*=i;return(m1/(m2*m3));}int main (void){int m,n;printf("\nEnter m,n: ");scanf("%d,%d",&m,&n);printf ("p=%f\n",fun(m,n) ) ;return(0);}运行结果:第七章文件1、实验项目【实验7-1】源代码:#include<stdio.h>#include<stdlib.h>int main (){int a, i,j;FILE *p;p=fopen("S7-1.out","w");if(p==NULL){printf("file can not open!");exit(0);}printf("*\t");fprintf(p,"*\t");for(a=1;a<=9;a++){printf("%d\t",a);fprintf(p,"%d\t",a);}printf("---------------------------------------------------------------------------\n");fprintf(p,"------------------------------------------------------------------------------\n");for(i=1;i<=9;i++){printf("%d\t",i);fprintf(p,"%d\t",i);for(j=1;j<=i;j++){printf("%d\t",j*i);fprintf(p,"%d\t",j*i);}printf("\n");fprintf(p,"\n");}fclose(p);}运行结果:【实验7-2】源代码:#include<stdio.h>#include<stdlib.h>#include<string.h>int main(void){FILE *fp;char str[100],filename[10];int i=0;if((fp=fopen("S7-2.out","w"))==NULL) {printf("Open file error\n");exit(0);}printf("please enter a string:\n");gets(str);while(str[i]!='!'){if(str[i]>='a'&&str[i]<='z')str[i]=(str[i]-32);fputc(str[i],fp);i++;}fclose(fp);printf("\n");fp=fopen("S7-2.out","r");fgets(str,strlen(str)+1,fp);printf("%s\n",str);fclose(fp);return(0);}运行结果:【实验7-2】源代码:#include<stdio.h>#include<stdlib.h>float aver(int n,int m ,int *p);int main(){FILE *fp;int *p,n,i,j,m;fp=fopen("S7-2.dat","w");if(fp==NULL){printf("file can not open");exit(0);}printf("输入学生数n:");scanf("%d",&n);printf("输入科目数m:");scanf("%d",&m);p=(int *)malloc(n*m*sizeof(int));if(p==NULL){printf("ERROR");exit(0);}for(i=0;i<n;i++){ printf("输入第%d名学生的%d门成绩:\n",i+1,m);for(j=0;j<m;j++){scanf("%d",p+m*i+j);fprintf(fp,"%d ",*(p+m*i+j));}}fclose(fp);fp=fopen("S7-2.dat","r");if(fp==NULL){printf("file can not open");exit(0);}aver(n,m,fp);}float aver(int n,int m ,FILE *p){float ave=0;int i=0,j,a[20];while(!feof(p)){fscanf(p,"%d",&a[i]);i++;}for(i=0;i<n;i++) //计算平均分{for(j=0;j<m;j++)ave+=a[i*m+j];printf("第%d位同学的平均分%2.2f\n",i+1,ave/m);ave=0;}return 0;}运行结果:2、测试【改错7-1】源代码:#include <stdio.h>int main(void){FILE *in,*out;int i,j,a[3][3],b[3][3];in=fopen("CS7-1.dat","r");for(i=0; i<3; i++)for(j=0; j<3; j++)fscanf(in,"%d",&a[i][j]);rewind(in);for(i=0; i<3; i++)for(j=0; j<3; j++)fscanf(in,"%d",&b[i][j]);fun(a,b);out=fopen("CS7-1.out","w");for(i=0; i<3; i++){for(j=0; j<3; j++){printf ("%4d ", a[i][j]);fprintf (out,"%4d ", a[i][j]);}printf("\n");fprintf(out,"\n");}fclose(in);fclose(out);return(0);}fun(int a[3][3],int b[3][3]){int i,j;for(i=0;i<3;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];}运行结果:【完善程序7-2】源代码:#include <conio.h>#include <stdio.h>int main (void){FILE *fp;int x,a[100], n, i ;void fun ();printf("\nPlease enter an integer number : \n ") ; scanf ("%d", &x) ;fun (x, a, &n) ;printf ("\nResult is : ") ;fp=fopen("CS7-2.out","w");if(fp==NULL){printf("file cam mot open");exit(0);}for(i=0;i<n;i++){printf("%d ",a[i]);fprintf(fp,"%d ",a[i]);}return(0);}void fun (int x, int p[], int *n){int i,j=0;for(i=1;i<=x;i++){if(x%i==0)if(i%2==0){p[j]=i;j++;}}*n=j;}运行结果:第八章结构体与共用体1、实验项目【实验8-1】源代码:#include <stdio.h>#include <string.h>#define NUM 4struct student{int rank;char * name;float score;};struct student stu [ ]= { 3, "Tom", 89.5,4, "Mary", 76.5,1, "Jack",98.0,2, "Jim" ,92.0 };int main(void){char str[10];int i;do {printf ("Enter a name: ");gets(str);for(i=0;i<NUM;i++){if(strcmp(stu[i].name,str)==0)printf("%d %s %f\n",stu[i].rank,stu[i].name,stu[i].score);}}while(strcmp(str,"0" )!=0);return(0);}运行结果:【实验8-2】源代码:运行结果:2、测试【填空8-1】源代码:#include <stdio.h>#define N 8typedef struct{char num[10];double s[N];double ave;} STREC;int main(void){STREC s={ "GA005 ",85.5,76,69.5,85,91,72,64.5,87.5};int i;void fun();fun(&s);printf("The %s's student data:\n", s.num); /*输出学号*/for(i=0;i<N;i++)printf("%4.1f\n",s.s[i]); /*输出各科成绩*/ printf("\nave=%7.3f\n", s.ave); /*输出平均分*/ return(0);}void fun(STREC *p){int i;p->ave=0.0;for(i=0;i<N;i++)p->ave=p->ave+p->s[i]; /*求各门成绩的总和*/ p->ave/=i;; /*求平均分*/}运行结果:【改错8-2】源代码:#include <string.h>#include <stdio.h>#include <stdlib.h>#define N 10typedef struct ss{char num[10];int s;} STU;STU *fun(STU a[], int m){STU b[N],*t;int i, j,k;/*******************found*****************/t=(STU *)malloc(m*sizeof(STU));for(i=0;i<N;i++)b[i]=a[i];for(k=0;k<m;k++){/*******************found*****************/for (i=j=0;i<N;i++)if(b[i].s<b[j].s)j=i;/*******************found*****************/t[k]=b[j];b[j].s=100;}return t;}outresult(STU a[],FILE *pf){int i;for(i=0;i<N;i++)fprintf(pf, "No=%s Mark=%d\n ",a[i].num, a[i].s);fprintf(pf, "\n\n ");}int main(void){STU a[N]={{"A01 ",77},{"A02 ",85},{"A03 ",96},{"A04 ",65},{"A05 ",75}, {"A06 ",96},{"A07 ",76},{"A08 ",63},{"A09 ",69},{"A10 ",78}};STU *pOrder;int i, m;printf("*****THE RESULT*****\n");outresult(a,stdout);printf("\nGive the number of the students who have lower score: ");scanf("%d",&m);while(m>10){printf("\nGive the number of the students who have lower score: ");scanf("%d",&m);}pOrder=fun(a,m);printf("\nThe Result is :");printf("\nThe low : \n");for(i=0;i<m;i++)printf("%s %d\n",pOrder[i].num, pOrder[i].s);free(pOrder);return(0);}。