C语言 习题九参考答案_第1页
C语言 习题九参考答案_第2页
C语言 习题九参考答案_第3页
C语言 习题九参考答案_第4页
C语言 习题九参考答案_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

习题九习题九 一、一、 单选题单选题 1、 已知:int *p,a;则语句p= C C)a=(x=1,x+,x+2); a=(x=1,x+,x+2); D)a=goog; 3、已知:int a,*p= 则下列函数调用中错误的是( ) 。 A) scanf(%d, B) scanf(%d,p); C) printf(%d,a); D D) printf(printf( %d%d ,p);,p); 4、main(argc,argv)中形式参数 argv 的正确说明形式应当为( ) 。 A A)char *argv char *argv B)char argv C)char argv D)char *argv 5、说明语句int (*p)(); 的含义是( ) 。 A)p 是一个指向一维数组的指针变量 B)p 是一个指针变量,指向一个整型数据 C C) p p 是一个指向函数的指针,该函数的返回值是一个整型是一个指向函数的指针,该函数的返回值是一个整型 D)以上都不对 6、设有说明 int(*ptr)M;其中的标识符 ptr 是( ) 。 A)M 个指向整型变量的指针 B)指向 M 个整型变量的函数指针 C C) 一个指向有一个指向有 M M 个整型元素的一维数组的指针个整型元素的一维数组的指针 D)具有 M 个指针元素的一维指针数组,每个元素都只能指向整型变量 7、已知:double *p6; 它的含义是( ) 。 A)p 是指向 double 型变量的指针 B)p 是 double 型数组 C C)p p 是指针数组是指针数组 D)p 是数组指针 8、已知函数说明语句:void *f(); 则它的含义是( ) 。 A A)函数)函数 f f 的返回值的返回值是一个通用型的指针是一个通用型的指针 B)函数 f 的返回值可以是任意的数据类型 C)函数 f 无返回值 D)指针 f 指向一个函数,该函数无返回值 9、已知:char s10,*p=s,则在下列语句中,错误的语句是( ) 。 A)p=s+5; B B)s=p+s;s=p+s; C)s2=p4; D)*p=s0; 10、已知:char b5,*p=b; 则正确的赋值语句是( ) 。 A)b=abcd B)*b=abcd C C)p=abcdp=abcd D)*p=abcd 11、下列对字符串的定义中错误的是( ) 。 A A)char str7=char str7= FORTRANFORTRAN B)char str = FORTRAN C)char *str=FORTRAN D)char str =F,O,R,T,R,A,N,0 12、已知:char s20=programming, *ps=s; 则不能引用字母 o 的表达式是( ) 。 A A)ps+2ps+2 B)s2 C)ps2 D)ps+=2,*ps 13、已知:int a10=1,2,3,4,5,6,7,8,9,10,*p=a; 则不能表示数组 a 中元素的表达式是 ( ) 。 A)*p B B)a10a10 C)*a D)ap-a 14、已知:char *s; 正确的语句是( ) 。 A)s=computer; ; B B)*s=*s= computercomputer ; C)*s=computer; D)*s=A; 15、已知:char c8=beijing,*s=c; int i; 则下面的输出语句中,错误的是( ) 。 A)printf(%sn,s); B B)printf(printf( %s%s n n ,*s,*s) ); ; C)for(i=0;i7;i+) D)for(i=0;i7;i+) printf(%c,ci); printf(%c,si); 16、已知:int i=0,j=1,*p= 错误的语句是( ) 。 A)i=* B)p= C)j=*p+; D)i=*i=* 17、已知:char *p,*p,*q; 选择正确的语句( ) 。 A)p*=3; B)p/=q; C C)p+=3; p+=3; D)p+=q; 18、已知:int a,*p= 则为了得到变量 a 的值,下列错误的表达式为( ) ; A)* int(*ptr)3=a,*p=a0; 则以下能够 正确表示数组元素 a12的表达式是( ) 。 A)*(ptr+1)2) B)*(*(p+5) C)(*ptr+1)=2 D D)*(*(a+1)+2)*(*(a+1)+2) 二、填空题 1、下面的函数是求两个整数之和,并通过行参传回结果。 int add(int x, int y,_z) (int *) _=x+y; ( *z ) 2、 下面程序通过指向整型的指针将数组a34的内容按3行4列的格式输出, 请给printf() 填入适当的参数,使之通过指针 p 将数组元素按要求输出。 #include stdio.h int a34=1,2,3,4,5,6,7,8,9,10,11,12,*p=a; main() int i,j; for(i=0;i3;i+) for(j=0;j4;j+) printf(%4d,_); (*p+i*4+j) 3、下面程序的功能是:从键盘上输入一行字符;存入一个字符数组中,然后输出该字符串。 #include stdio.h main() char str81,*sptr; int i; for(i=0;i80;i+) stri=getchar(); if(stri=n)break; stri=_; (0 ) sptr=str; while(*sptr) putchar(*sptr_); ( + ) 4、下面的程序实现从 10 个数中找出最大和最小值。 #include stdio.h int max,min; find_max_min(int *p,int n) int *q; max=min=*p; for(q=_;_;q+) (q=p qmax) else if (_)min=*q; (*qmin) main() int i,num10; printf(input 10 numbers:n) for(i=0;i10;i+) scanf(%d, find_max_min(num,10); printf(max=%d;min=%dn,max,min); 三、编程题三、编程题 1 1、编写一函数,其功能是交换两个变量、编写一函数,其功能是交换两个变量 x x、y y 的值。编程序实现对数组的值。编程序实现对数组 a100,b100a100,b100调用调用 此函数,交换此函数,交换 a a、b b 中具有相同下标的数组元素的值,且输出交换后的中具有相同下标的数组元素的值,且输出交换后的 a a、b b 数组。数组。 /*p279_1.c*/ #include stdlib.h void swap(int *pa,int *pb) int t; t=*pa;*pa=*pb;*pb=t; main() int a100,b100,i; for(i=0;i100;i+) /*产生数组a和b */ ai=random(100); bi=random(100); printf(before swap A:n); /*输出交换前数组a */ for(i=0;i100;i+) printf(%3d,ai); printf(n); printf(before swap B:n); /*输出交换前数组b */ for(i=0;i100;i+) printf(%3d,bi); printf(n); for(i=0;i100;i+) /*a、b数组元素交换 */ swap( printf(after swap A:n); /*输出交换后数组a */ for(i=0;i100;i+) printf(%3d,ai); printf(n); printf(after swap B:n);/*输出交换后数组b */ for(i=0;ibn); if(k=0)printf(a=bn); if(k=-1)printf(abn); ? 4、编写程序,其中包括一个函数,此函数的功能是:对一个长度为 N 的字符串从第 K 个字符 起,删除 M 个字符,组成长度为 N-M 的新字符串(其中 N、M=80,K=N) 。要求输入字符串We are poop poor students.,利用此函数进行删除poor的处理,并输出处理后的字符串。 /* P279_4.C */ #include stdio.h main() int a10,b10,*pa,*pb,i; pa=a;pb=b; for(i=0;i3;i+,pa+,pb+) *pa=i;*pb=2*i; printf(%dt%dn,*pa,*pb); printf(n);pa=pb= /*输出 0 0 */ for(i=0;i3;i+) /* 1 2 */ *pa=*pa+i;*pb=*pb+i; /* 2 4 */ printf(%dt%dn,*pa+,*pb+); /*输出 0 0 */ /* 2 3 */ _ /* 4 6 */ 5、输入一行字符串,将其中的字符从小到大排列后输出。 解 1: /*p279_5A.c */ #include string.h sort(char *s,int n) int i,j; char *p,ch; for(i=0;in;i+) p=s+i; for(j=i;jn;j+) if(*(s+j)*p)p=s+j; ch=*p;*p=*(s+i);*(s+i)=ch; main() char a80; int k; printf(Entry a string for a:); gets(a); k=strlen(a); sort(a,k); puts(a); 解 2: /*p279_5b.c */ #include string.h sort(char *s,int n) int i,j,k; char p,ch; for(i=0;in;i+) k=i; for(j=i;j0)n+; printf(Input a string:n); gets(s); printf(words number:%dn,n); 8 8、将输入的两行字符串连接后,将串中的空格全部移到串首后输出。、将输入的两行字符串连接后,将串中的空格全部移到串首后输出。 /* P280_8A */ #include string.h main() char s180,s240,*p1=s1,*p2=s2; printf(Input 2 string:n); gets(s1); gets(s2); while(*p1!=0)p1+;/*指针指向s1的末尾*/ while(*p2!=0)/*连接s2*/ *p1+=*p2+; *p1=0; while(p1!=s1) /*将空格移到字符串前面*/ if(*p1!=32)p1-;continue; else p2=p1; while(p2!=s1) /*将空格之前的所有字符向后移动一个字符位置*/ *p2=*(p2-1);p2-; *p2= ; p1-; puts(s1); 9 9、输入字符串,请分别统计字符串中所包含的各个不同的字符及其各个字符的数量。如:、输入字符串,请分别统计字符串中所包含的各个不同的字符及其各个字符的数量。如: 输入字符串:输入字符串:abcedabcdcdabcedabcdcd 则输出: a=2 b=2 c=3 d=3 e=1 解1: /* P280_9b */ #include stdlib.h #include string.h int a27; main() int i=0; char s80,*p=s; printf(Enter strint:); gets(s); while(*p!=0) if(*p=A else a26+; p+; for(i=0;i26;i+ ) printf(%c=%d ,i+a,ai); printf(other=%dn,a26); _ 解 3: /* P280_9C */ #include string.h main() char s80,*p=s; static int n128,i; printf(Input a string:n); gets(s); while(*p!=0) n*p=n*p+1; p+; for(i=32;i128;i+) printf(%c=%d ,i,ni); 11、设一个以符号.结束的英文句子长度小于 80 字节。请编写程序读入改句子,并检查其 是否为回文(即正读和反读都是一样的,不考虑空格和标点符号) 。例如: 读入:madam im adam. 输出:yes 读入:abcdba 输出:no /* P280_11.c */ #include string.h main() char a20,*ps,*pe; int n; gets(a); n=strlen(a); ps=a;pe=ps+n; while(pspe)printf(%s:yes!

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论