任务34:指针变量作函数参数、返回值为指针的函数、指针指向函数 《编程语言-C语言》45分钟专题训练

| 2份
| 30页
| 68人阅读
| 1人下载

内容正文:

湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。 《编程语言—C语言》 项目七: 指针 第34卷:指针变量作函数参数、返回值为指针的函数、指针指向函数 时间:45分钟 总分:100分 班级___________ 姓名__________ 学号__________ 成绩________ 一、选择题(共23小题,每小题2分,共46分) 1.若有函数声明:void fun(float array[ ],int *ptr);以下叙述中正确的一项是( ) A.函数参数array,ptr都是指针变量 B.函数参数array不是指针变量,ptr是指针变量 C.调用函数时,实参数组的值将一一复制给array数组 D.调用函数时,array是按值传送,ptr是按地址传送 2.若有函数:void fun(double a[ ],int *n){……},则以下叙述中,正确的一项是( ) A.调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送 B.形参a和n都是指针变量 C.形参a是一个数组名,n是指针变量 D.调用fun函数时将把double型实参数组元素一一对应地传给形参a数组 3.若有定义:int fun(int *p){return *p;},则fun函数的返回值是( ) A.一个整数 B.形参p中存放的值 C.形参p的地址值 D.不确定的值 4.设有函数:char *fun(char *s){……return s;},则该函数的返回值是( ) A.无确定值 B.形参s中存放的地址值 C.一个临时存储单元的地址 D.形参s自身的地址值 5.设有说明语句:int (*p)( );的含义是( ) A.p是一个指向一维数组的指针变量 B.p是指针变量,指向一个整型数据 C.p是一个指向函数的指针,该函数的返回值是一个整型数据 D.p是一个指向字符串的指针变量 6.下列函数的功能是( ) void fun(int *p1,int *p2) {int *p;*p=*p1;*p1=*p2;*p2=*p;} A.没有交换*p1和*p2的值 B.存在语法错误,无法正常编译执行 C.可以实现交换p1和p2所指向的变量的值 D.可以实现交换p1和p2的值 7.以下函数的功能是按照每行8个输出数组中的数据,程序中的空白处应该填入的语句是( ) void fun(int *w,int n) {int i; for(i=0;i<n;i++) {【1】; printf("%d",w[i]);} printf(" ");} A.if(i/8==0) printf(" ") B. if(i/8==0) continue C.if(i%8==0) continue D.if(i%8==0) printf(" ") 8.执行以下程序段的输出结果是( ) void fun(int *p) {printf("%d ",p[5]);} main() {int a[10]={1,2,3,4,5,6,7,8,9,10}; fun(&a[3]); getch();} A.5 B.6 C.8 D.9 9.执行以下程序段的输出结果是( ) void f(int *p); main() {int a[5]={1,2,3,4,5},*r=a; f(r); printf("%d ",*r);getch();} void f(int *p) {p=p+3; printf("%d ",*p);} A.1 4 B.4 1 C.4 4 D.3 1 10.执行以下程序段的输出结果是( ) void f(int *q) {int i=0; for( ;i<5;i++) (*q)++;} main() {int a[5]={1,2,3,4,5},i; f(a); for(i=0;i<5;i++) printf("%d",a[i]);getch();} A.22345 B.12345 C.62345 D.23456 11.执行以下程序段的输出结果是( ) #define N 8 void fun(int *x,int i) {*x=*(x+i);} main() {int a[N]={1,2,3,4,5,6,7,8},i; fun(a,2); for(i=0;i<N/2;i++) printf("%d",a[i]);getch();} A.1313 B.2234 C.3234 D.1234 12.执行以下程序段的输出结果是( ) void change(int *array,int len) {for( ;len>=0;len--) array[len]+=2;} main() {int i,array[5]={1,2}; change(array,4); for(i=0;i<4;i++) printf("%d",array[i]);getch();} A.2345 B.3456 C.3422 D.1200 13.执行以下程序段的输出结果是( ) void fun(int *x,int s,int n) {int i; for(i=s;i>=n;i--) *(x+i+3)=*(x+i);} main() {int m[ ]={0,1,2,3,4,5,6,7,8,9},k; fun(m,10-4,3); for(k=0;k<10;k++) printf("%d",m[k]);getch();} A.0123456345 B.0123453456 C.0123456666 D.0123454569 14.下列函数的功能是( ) int fun(char *s) {char *t=s;while(*t) t++; return(t-s);} A.比较两个字符串的大小 B.计算s所指字符串占用的内存字节数 C.计算s所指字符串的长度 D.将s所指字符串赋值到t中 15.设有定义:int max( ),(*p)( );,为了使指针变量p指向函数max( ),正确的赋值语句是( ) A.p=max; B.*p=max; C.p=&max; D.*p=max( ); 16.设有函数定义:void f(int n,char s){……},则下列选项中对指向函数的指针的定义和赋值均正确的是( ) A.void (*p)( );p=f; B.void *p( );p=f; C.void *p( );*pf=f; D.void (*p)(int,char);p=f; 17.设有函数max(a,b),并且已使指针变量p指向函数max,当调用该函数时,正确的调用方法是( ) A.(*p)max(a,b); B.*pmax(a,b); C.(*p)(a,b); D.*p(a,b); 18.设有函数:max(a,b),下列选项中,可以使函数指针变量p指向函数max的是( ) A.p=max; B.p=max(a,b); C.*p=max; D.*p=max(a,b); 19.执行以下程序段的输出结果是( ) void fun(char *a,char *b) {a=b;(*a)++;} main() {char c1='A',c2='a',*p1,*p2; p1=&c1;p2=&c2; fun(p1,p2); printf("%c%c ",c1,c2);getch();} A.Ab B.aa C.Aa D.Bb 20.执行以下程序段的输出结果是( ) int *f( ) {static int s[3]={1,0,3,},*p=s; return p;} main() {int *result,i; result=f(); for(i=0;i<3;i++) printf("%d",result[i]);getch();} A.103 B.输出s数组的地址 C.程序有语法错,无法编译执行 D.输出数值1、s[1]和s[2]的地址 21.执行以下程序段的输出结果是( ) int *f( ) {int s[3]={1,0,3,},*p=s; return p;} main() {int *result; result=f(); printf("%d ",*result);getch();} A.1 B.0 C.3 D.-1 22.执行以下程序段的输出结果是( ) int *f(int *x,int *y) {if(*x<*y) return x; else return y;} main() {int a=6,b=7,*p,*q,*r; p=&a; q=&b; r=f(p,q); printf("%d,%d,%d",*p,*q,*r);getch();} A.7,6,7 B.7,7,7, C.6,6,7, D.6,7,6 23.执行以下程序段的输出结果是( ) void fun(int*n) { while((*n)--); printf("%d",*n);} main( ) { int a=10; fun(&a);getch();} A.-1 B.0 C.1 D.无定值 二、程序运行结果题(本题共7小题,每题3分,共21分) 24.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void fun(int *a,int n) {int t,i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(a[i]<a[j]) {t=a[i];a[i]=a[j];a[j]=t;}} main() {int c[10]={0,1,2,3,4,5,6,7,8,9},i; fun(c+4,6); for(i=0;i<10;i++) printf("%d ",c[i]);getch();} 25.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void fun(int *a,int n) {int i,j,k,t; for(i=0;i<n-1;i+=2) {k=i; for(j=i;j<n;j+=2) if(a[j]>a[k]) k=j; t=a[i];a[i]=a[k];a[k]=t;}} main() {int aa[10]={1,2,3,4,5,6,7},i; fun(aa,7); for(i=0;i<7;i++) printf("%d",aa[i]);getch();} 26.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int fun(char *a,char *b) { int num=0,n=0; while(*(a+num)!='\0') num++; while(b[n]) {*(a+num)=b[n]; num++;n++;} return num;} main( ) { char sl[81]="abcdef",s2[81]="ABCD",*pl=sl,*p2=s2; printf("%d ",fun(pl,p2));getch();} 27.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void fib(int n,int*s) { int f1,f2; if(n==1||n==2) *s=1; else { fib(n-1,&f1); fib(n-2,&f2); *s=f1+f2;}} main( ) { int x; fib(7,&x); printf("x=%d ",x);getch();} 28.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> #define N 9 void fun(int *a,int*max,int* min) { int i; *max=*min=*(a+0); for(i=1;i<N;i++) { if(*max<*(a+i)) *max=*(a+i); if(*min> *(a+i))*min=*(a+i);}} main( ) { int a[N]={86,7,45,90,34,92,32,62,38},max,min; fun(a,&max,&min); printf("max=%d,min=%d ",max,min);getch();} 29.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> #define N 7 void fun(int *a) { int i,t; t=*(a+1); for(i=0;i<N-1;i++)*(a+i)=*(a+i+1); *(a+i)=t;} main( ) { int a[N]={11,22,66,33,77,55,99},i; fun(a); for(i=0;i<N;i++) printf("%d ",a[i]);getch();} 30.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> char *fun2(char *s,char *t) {int i,j; for(i=0;s[i];i++) for(j=0;t[j];j++,i++) s[i]=t[j]; s[i]='\0'; return s;} main() {char s[ ]="abcd",t[ ]="123"; puts(fun2(s,t));getch();} 三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分) 31.下列程序的功能是:将一个3×3的整型矩阵转置。程序中有三处错误,请改正。 L1 #include <stdio.h> L2 #include<conio.h> L3 main() L4 {void move(int *pointer); L5 int a[3][3],p,i; L6 printf("input matrix: "); L7 for(i=0;i<3;i++) L8 scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]); L9 p=&a[0][0]; L10 move(*p); L11 printf("转置后的数组: "); L12 for(i=0;i<3;i++) L13 printf("%d %d %d ",a[i][0],a[i][1],a[i][2]); L14 getch();} L15 void move(int *pointer) L16 {int i,j,t; L17 for(i=0;i<3;i++) L18 for(j=0;j<3;j++) L19 {t=*(pointer+3*i+j); L20 *(pointer+3*i+j)=*(pointer+3*j+i); L21 *(pointer+3*j+i)=t;}} 四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 32.下列程序的功能是:输入10个整数,将其中最小的数与第1个数对换,把最大的数与最后一个数对换。请填空。 #include <stdio.h> #include<conio.h> main() {void input(int *); void max_min_value(int *); void output(int *); int number[10]; input(number); max_min_value(number); output(number); getch();} void input(int *number) {int i; printf("input 10 numbers:"); for(i=0;i<10;i++) scanf("%d",&number[i]);} void max_min_value(int *number) {int *max,*min,*p,temp; max=min=number; for(p=【1】;p<number+10;p++) if(*p>*max) max=p; else if(【2】) min=p; temp=number[0]; number[0]=*min; *min=temp; if(【3】) max=min; temp=number[9]; number[9]=【4】; *max=temp;} void output(int *number) {int *p; printf("Now,they are:"); for(p=number;p<number+10;p++) printf("%d ",*p); printf(" ");} 33.下列程序的功能是将n个数按照输入时顺序的逆序排列。请填空。 #include <stdio.h> #include<conio.h> main() {void sort(char *p,int m); int i,n; char *p,num[20]; printf("input n:"); scanf("%d",&n); printf("please input these numbers: "); for(i=0;i<n;i++) scanf("%d",&num[i]); p=【1】; sort(p,n); printf("Now,the sequence is: "); for(i=0;i<n;i++) printf("%d ",num[i]); printf(" "); getch();} void sort(char *p,int m) {int i; char temp,*p1,*p2; p1=p; p2=【2】; while(【3】) {temp=*p1; *p1=*p2; *p2=temp; p1++; 【4】;}} 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$ 湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。 《编程语言—C语言》 项目七: 指针 第34卷:指针变量作函数参数、返回值为指针的函数、指针指向函数 时间:45分钟 总分:100分 班级___________ 姓名__________ 学号__________ 成绩________ 一、选择题(共23小题,每小题2分,共46分) 1.若有函数声明:void fun(float array[ ],int *ptr);以下叙述中正确的一项是( ) A.函数参数array,ptr都是指针变量 B.函数参数array不是指针变量,ptr是指针变量 C.调用函数时,实参数组的值将一一复制给array数组 D.调用函数时,array是按值传送,ptr是按地址传送 【答案】A。数组名为数组的首地址,也是指向数组的指针。 2.若有函数:void fun(double a[ ],int *n){……},则以下叙述中,正确的一项是( ) A.调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送 B.形参a和n都是指针变量 C.形参a是一个数组名,n是指针变量 D.调用fun函数时将把double型实参数组元素一一对应地传给形参a数组 【答案】C 3.若有定义:int fun(int *p){return *p;},则fun函数的返回值是( ) A.一个整数 B.形参p中存放的值 C.形参p的地址值 D.不确定的值 【答案】A 4.设有函数:char *fun(char *s){……return s;},则该函数的返回值是( ) A.无确定值 B.形参s中存放的地址值 C.一个临时存储单元的地址 D.形参s自身的地址值 【答案】B 5.设有说明语句:int (*p)( );的含义是( ) A.p是一个指向一维数组的指针变量 B.p是指针变量,指向一个整型数据 C.p是一个指向函数的指针,该函数的返回值是一个整型数据 D.p是一个指向字符串的指针变量 【答案】C 6.下列函数的功能是( ) void fun(int *p1,int *p2) {int *p;*p=*p1;*p1=*p2;*p2=*p;} A.没有交换*p1和*p2的值 B.存在语法错误,无法正常编译执行 C.可以实现交换p1和p2所指向的变量的值 D.可以实现交换p1和p2的值 【答案】C 7.以下函数的功能是按照每行8个输出数组中的数据,程序中的空白处应该填入的语句是( ) void fun(int *w,int n) {int i; for(i=0;i<n;i++) {【1】; printf("%d",w[i]);} printf(" ");} A.if(i/8==0) printf(" ") B. if(i/8==0) continue C.if(i%8==0) continue D.if(i%8==0) printf(" ") 【答案】D 8.执行以下程序段的输出结果是( ) void fun(int *p) {printf("%d ",p[5]);} main() {int a[10]={1,2,3,4,5,6,7,8,9,10}; fun(&a[3]); getch();} A.5 B.6 C.8 D.9 【答案】D 9.执行以下程序段的输出结果是( ) void f(int *p); main() {int a[5]={1,2,3,4,5},*r=a; f(r); printf("%d ",*r);getch();} void f(int *p) {p=p+3; printf("%d ",*p);} A.1 4 B.4 1 C.4 4 D.3 1 【答案】B 10.执行以下程序段的输出结果是( ) void f(int *q) {int i=0; for( ;i<5;i++) (*q)++;} main() {int a[5]={1,2,3,4,5},i; f(a); for(i=0;i<5;i++) printf("%d",a[i]);getch();} A.22345 B.12345 C.62345 D.23456 【答案】C 11.执行以下程序段的输出结果是( ) #define N 8 void fun(int *x,int i) {*x=*(x+i);} main() {int a[N]={1,2,3,4,5,6,7,8},i; fun(a,2); for(i=0;i<N/2;i++) printf("%d",a[i]);getch();} A.1313 B.2234 C.3234 D.1234 【答案】C 12.执行以下程序段的输出结果是( ) void change(int *array,int len) {for( ;len>=0;len--) array[len]+=2;} main() {int i,array[5]={1,2}; change(array,4); for(i=0;i<4;i++) printf("%d",array[i]);getch();} A.2345 B.3456 C.3422 D.1200 【答案】C 13.执行以下程序段的输出结果是( ) void fun(int *x,int s,int n) {int i; for(i=s;i>=n;i--) *(x+i+3)=*(x+i);} main() {int m[ ]={0,1,2,3,4,5,6,7,8,9},k; fun(m,10-4,3); for(k=0;k<10;k++) printf("%d",m[k]);getch();} A.0123456345 B.0123453456 C.0123456666 D.0123454569 【答案】B 14.下列函数的功能是( ) int fun(char *s) {char *t=s;while(*t) t++; return(t-s);} A.比较两个字符串的大小 B.计算s所指字符串占用的内存字节数 C.计算s所指字符串的长度 D.将s所指字符串赋值到t中 【答案】C 15.设有定义:int max( ),(*p)( );,为了使指针变量p指向函数max( ),正确的赋值语句是( ) A.p=max; B.*p=max; C.p=&max; D.*p=max( ); 【答案】A 16.设有函数定义:void f(int n,char s){……},则下列选项中对指向函数的指针的定义和赋值均正确的是( ) A.void (*p)( );p=f; B.void *p( );p=f; C.void *p( );*pf=f; D.void (*p)(int,char);p=f; 【答案】D 17.设有函数max(a,b),并且已使指针变量p指向函数max,当调用该函数时,正确的调用方法是( ) A.(*p)max(a,b); B.*pmax(a,b); C.(*p)(a,b); D.*p(a,b); 【答案】C 18.设有函数:max(a,b),下列选项中,可以使函数指针变量p指向函数max的是( ) A.p=max; B.p=max(a,b); C.*p=max; D.*p=max(a,b); 【答案】A 19.执行以下程序段的输出结果是( ) void fun(char *a,char *b) {a=b;(*a)++;} main() {char c1='A',c2='a',*p1,*p2; p1=&c1;p2=&c2; fun(p1,p2); printf("%c%c ",c1,c2);getch();} A.Ab B.aa C.Aa D.Bb 【答案】A 20.执行以下程序段的输出结果是( ) int *f( ) {static int s[3]={1,0,3,},*p=s; return p;} main() {int *result,i; result=f(); for(i=0;i<3;i++) printf("%d",result[i]);getch();} A.103 B.输出s数组的地址 C.程序有语法错,无法编译执行 D.输出数值1、s[1]和s[2]的地址 【答案】A 21.执行以下程序段的输出结果是( ) int *f( ) {int s[3]={1,0,3,},*p=s; return p;} main() {int *result; result=f(); printf("%d ",*result);getch();} A.1 B.0 C.3 D.-1 【答案】A 22.执行以下程序段的输出结果是( ) int *f(int *x,int *y) {if(*x<*y) return x; else return y;} main() {int a=6,b=7,*p,*q,*r; p=&a; q=&b; r=f(p,q); printf("%d,%d,%d",*p,*q,*r);getch();} A.7,6,7 B.7,7,7, C.6,6,7, D.6,7,6 【答案】D 23.执行以下程序段的输出结果是( ) void fun(int*n) { while((*n)--); printf("%d",*n);} main( ) { int a=10; fun(&a);getch();} A.-1 B.0 C.1 D.无定值 【答案】A 二、程序运行结果题(本题共7小题,每题3分,共21分) 24.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void fun(int *a,int n) {int t,i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(a[i]<a[j]) {t=a[i];a[i]=a[j];a[j]=t;}} main() {int c[10]={0,1,2,3,4,5,6,7,8,9},i; fun(c+4,6); for(i=0;i<10;i++) printf("%d ",c[i]);getch();} 【答案】0 1 2 3 9 8 7 6 5 4 25.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void fun(int *a,int n) {int i,j,k,t; for(i=0;i<n-1;i+=2) {k=i; for(j=i;j<n;j+=2) if(a[j]>a[k]) k=j; t=a[i];a[i]=a[k];a[k]=t;}} main() {int aa[10]={1,2,3,4,5,6,7},i; fun(aa,7); for(i=0;i<7;i++) printf("%d",aa[i]);getch();} 【答案】7254361 26.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int fun(char *a,char *b) { int num=0,n=0; while(*(a+num)!='\0') num++; while(b[n]) {*(a+num)=b[n]; num++;n++;} return num;} main( ) { char sl[81]="abcdef",s2[81]="ABCD",*pl=sl,*p2=s2; printf("%d ",fun(pl,p2));getch();} 【答案】10 27.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void fib(int n,int*s) { int f1,f2; if(n==1||n==2) *s=1; else { fib(n-1,&f1); fib(n-2,&f2); *s=f1+f2;}} main( ) { int x; fib(7,&x); printf("x=%d ",x);getch();} 【答案】x=13 28.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> #define N 9 void fun(int *a,int*max,int* min) { int i; *max=*min=*(a+0); for(i=1;i<N;i++) { if(*max<*(a+i)) *max=*(a+i); if(*min> *(a+i))*min=*(a+i);}} main( ) { int a[N]={86,7,45,90,34,92,32,62,38},max,min; fun(a,&max,&min); printf("max=%d,min=%d ",max,min);getch();} 【答案】max=92,min=7 29.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> #define N 7 void fun(int *a) { int i,t; t=*(a+1); for(i=0;i<N-1;i++)*(a+i)=*(a+i+1); *(a+i)=t;} main( ) { int a[N]={11,22,66,33,77,55,99},i; fun(a); for(i=0;i<N;i++) printf("%d ",a[i]);getch();} 【答案】22 66 33 77 55 99 22 30.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> char *fun2(char *s,char *t) {int i,j; for(i=0;s[i];i++) for(j=0;t[j];j++,i++) s[i]=t[j]; s[i]='\0'; return s;} main() {char s[ ]="abcd",t[ ]="123"; puts(fun2(s,t));getch();} 【答案】123d 三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分) 31.下列程序的功能是:将一个3×3的整型矩阵转置。程序中有三处错误,请改正。 L1 #include <stdio.h> L2 #include<conio.h> L3 main() L4 {void move(int *pointer); L5 int a[3][3],p,i; L6 printf("input matrix: "); L7 for(i=0;i<3;i++) L8 scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]); L9 p=&a[0][0]; L10 move(*p); L11 printf("转置后的数组: "); L12 for(i=0;i<3;i++) L13 printf("%d %d %d ",a[i][0],a[i][1],a[i][2]); L14 getch();} L15 void move(int *pointer) L16 {int i,j,t; L17 for(i=0;i<3;i++) L18 for(j=0;j<3;j++) L19 {t=*(pointer+3*i+j); L20 *(pointer+3*i+j)=*(pointer+3*j+i); L21 *(pointer+3*j+i)=t;}} 答案: L5 int a[3][3],*p,i; L10 move(p); L18 for(j=i+1;j<3;j++) 四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 32.下列程序的功能是:输入10个整数,将其中最小的数与第1个数对换,把最大的数与最后一个数对换。请填空。 #include <stdio.h> #include<conio.h> main() {void input(int *); void max_min_value(int *); void output(int *); int number[10]; input(number); max_min_value(number); output(number); getch();} void input(int *number) {int i; printf("input 10 numbers:"); for(i=0;i<10;i++) scanf("%d",&number[i]);} void max_min_value(int *number) {int *max,*min,*p,temp; max=min=number; for(p=【1】;p<number+10;p++) if(*p>*max) max=p; else if(【2】) min=p; temp=number[0]; number[0]=*min; *min=temp; if(【3】) max=min; temp=number[9]; number[9]=【4】; *max=temp;} void output(int *number) {int *p; printf("Now,they are:"); for(p=number;p<number+10;p++) printf("%d ",*p); printf(" ");} 答案:①number+1 ②*p<*min ③max==number ④*max 33.下列程序的功能是将n个数按照输入时顺序的逆序排列。请填空。 #include <stdio.h> #include<conio.h> main() {void sort(char *p,int m); int i,n; char *p,num[20]; printf("input n:"); scanf("%d",&n); printf("please input these numbers: "); for(i=0;i<n;i++) scanf("%d",&num[i]); p=【1】; sort(p,n); printf("Now,the sequence is: "); for(i=0;i<n;i++) printf("%d ",num[i]); printf(" "); getch();} void sort(char *p,int m) {int i; char temp,*p1,*p2; p1=p; p2=【2】; while(【3】) {temp=*p1; *p1=*p2; *p2=temp; p1++; 【4】;}} 答案:①&num[0] ②p+m-1 ③p1<p2 ④p2- - 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

任务34:指针变量作函数参数、返回值为指针的函数、指针指向函数  《编程语言-C语言》45分钟专题训练-第1页
1
任务34:指针变量作函数参数、返回值为指针的函数、指针指向函数  《编程语言-C语言》45分钟专题训练-第2页
2
任务34:指针变量作函数参数、返回值为指针的函数、指针指向函数  《编程语言-C语言》45分钟专题训练-第3页
3

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。