{
int i;
for(i=1;i<=4;i++)
printf(\}
2.程序填空(根据题意在空白处填入适当的内容,使程序变得完整。并上机进行调试验证)
(1) 程序说明:用一个一维数组存放10个学生的成绩,写一个函数求出平均分、最高分和最低分。 #include \float max=0;min=0;
float average(float score[],int n) {
int i;
float ave,sum=score[0]; max=min= ; for(i=1;i if(score[i]>max) max=score[i]; else if( ) min=score[i]; sum=sum+score[i]; } ave=sum/10; return ; } void main() { float ave,score[10]; int i; for(i=0;i<10;i++) scanf(\ ave=average( ) printf(\ } (2) 程序说明:在主函数中读入一字符串,再读入一字符,然后调用函数delete在字符串中查找并删除该字符,最后输出该字符串。 #include \ void delete(char p[],char ch) 35 { int i=0,j; while( ) { if(p[i]==ch) for(j=i;j< ;j++) p[i]=p[i+1]; else i++; } void main() { char p[80],ch; int i=0,j; scanf(\ scanf(\ delete( ); printf(\ } 3.程序设计(根据题意编写程序并上机进行调试)。 (1)程序说明:写两个函数分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。 要求:求最大公约数用递归方法实现,递归公式为(r=m%n): ?n,r=0 gcd(m,n)?? r!=0 ?gcd(n,r) (2)程序说明:用递归函数将一个整数n转换成字符串,例如,输入568,应输出字符串?865?。n的位数不确定,可以是任意位数的整数。 (3)程序说明:编写程序对10个学生5门课的成绩进行处理,要求分别用函数实现如下几个功能:① 输入学生数据;② 求每个学生的平均分;③求每门课的平均分;④ 输出平均分最高的学生的成绩;⑤输出学生成绩表(包括每个学生的平均成绩和每门课的平均成绩)。 实验十二 指针的应用 一、实验目的 掌握指针变量的定义和引用。 二、实验内容 1.编制如下程序,并上机调试运行,最后在实验报告上写出运行结果。 (1)使用指针作函数参数,编写用于交换两个参数值的函数。调用该函 数用于对从键盘输入的两个整数进行交换。 36 (2)编写一个函数,用于对作为参数的数组中的元素求平均值,函数以 指针方式进行处理。平均值为函数的返回值。 (3)编写一个函数,用于对作为参数的数组中的元素求最大值,并将最 大值从数组中删除。函数的首部类似于下列形式: dele_max(int *,int *) 其中第一个参数为指向数组的指针,第二个参数为指向数组长度变量的指针。因此调用数组时,使用如下形式: dele_max(a,&n); 其中a为一数组名,n为存放a数组长度的变量。 2.程序分析题。分析以下程序,对分析的结果上机检验。 (1) 下列程序使用指针操作数组有各种形式,体会其用法。 #include ?stdio.h? main( ) { int a[]={0,1,2,3,4},i,*p; for(i=0;i<=4;i++) printf(\printf(\ for(p=&a[0];p<=&a[4];p++) printf(\printf(\ for(p=&a[0],i=1;i<5;i++) printf(\printf(\ for(p=a,i=0;p+i<=a+4;p++,i++) printf(\printf(\for(p=a+4;p>=a;p--) printf(\printf(\ for(p=a+4,i=0;i<=4;i++) printf(\printf(\ for(p=a+4;p>=a;p--) printf(\printf(\} (2). #include \void main() { char *s2=\ *s2++; printf(\ 37 printf(\ printf(\ } (2) 运行以下程序,从键盘输入My Book,结果是什么? #include \char fun(char *s) { if(*s<='Z' && *s>='A') *s+=32; return (*s); } void main( ) { char c[80],*p; p=c; scanf(\ while(*p) { *p=fun(p); putchar(*p); p++; } printf(\} (4) #include \void main( ) { int *p,s[3][4],i,j,k=1; p=s[0]; for(i=0;i<3;i++) for(j=0;j<4;j++) *p++=k++; p=s[0]; for(i=0;i<3;i++) for(j=0;j<4;j++) printf((j%4)?\ } (5) #include \void main( ) { int num[2][3],*p; int t,i,j,k=10; p=num[0]; 38 for(i=0;i<2;i++) for(j=0;j<3;j++) { k++; *p=k; printf(\ for(t=2;t<*p;t++) { if(!(*p%t)) { j--; *p--; break; } } *p++; } p=num[0]; for(i=0;i<2;i++) for(j=0;j<3;j++) printf((j%3)?\ } 3。程序填空题 (1) 下列程序的功能是在数组中同时查找最大元素下标和最小元素下 标,分别存放在main函数的变量max和min中,请填空 #include \ void find(int *a,int n,int *max,int *min) { int i; *max=*min=0; for(i=1;i else if(a[i] void main( ) { int a[]={5,8,7,6,2,7,3},max,min; find(________); printf(\}。 (2)以下程序调用invert函数按逆序重新放臵a数组中的值,a数组中的值 39