C语言指针-练习.doc_第1页
C语言指针-练习.doc_第2页
C语言指针-练习.doc_第3页
C语言指针-练习.doc_第4页
C语言指针-练习.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

复习题(二)一、 基础题1、 设有:int k=2,4,6,8,10,12, *p=k+2; 表达式 *(p+2)*p2 的值:100 。2、 设有:int a10, *p1, *p2; 则执行语句:p1=a; p2=&a5; 则p2-p1的值:5。3、 设有:int x=4,3,2,1,q,*p=&x1;则执行语句:q(*-p)+ ; 后;变量q的值为 4。4、 设有:int *p, a=10, b=1; 则执行以下语句:p=&a; a=*p+b; 后; a的值为: 11。5、 下列程序段的输出结果是 2,1 。 int k=1, j=2, *p=&k, *q=p; p=&j; printf(%d, %d,*p, *q);6、 设x为整型变量,p为指向整型的指针变量,则让p指向x变量的赋值表达式是 P=&x。7、 设有变量定义:float d=1.0,2.0,3.0,4.0,5.0, *p=d+3;请写出 printf(n %f %f, *p, d0); 的输出结果为: 4.0和 1.0。8、 设有变量定义如下:char s=Hello!, *p=s; int i; 执行完 for(i=0; *(p+i); i+); 后,变量i的值是_6_;*(p+i)的值是0_。9、 函数void f(char s , char t ) int k=0; while (sk=tk) k+; 等价于void f(char *s, char *t)1、 while (*s+=*t+); 二、 选择题1、下面的程序段用来定义指针并赋值,请选出语法正确的程序段( C )。A)int *p; scanf(“%d”,p); B)int *s,k; *s=100;C) int *s,k; D) int *s,k char *p,*c; char *p,*c; s=&k; p=&c; s=&k; p=&c;*p=a; s=p; *s=1;2、程序段:int *p,a,b=1; p=&a; *p=10; a=*p+b; 执行后,a的值( B)。A)12B)11C)10D)编译出错3、若定义:int i,j=2,*p=&i ; 则能完成i=j赋值的功能的语句是( B)。A)i=*p; B)*p=*&j; C)i=&j; D)i=*p;4、若定义:double *p,a;则下列能通过scanf()正确输入项读入数据的程序段是( D)。A)*p=&a; scanf(“%lf”,p); B)p=a; scanf(“%f”,p); C) p=&a; scanf(“%lf”,a); D) p=&a; scanf(“%lf”,p); 5、若有以下定义语句:int a=1,2,3,4,5,6,7,8,9,10,*p=a; 则值为3的表达式是( D )。A) p+=2,+*p B) p+=2,*+p C) p+=3,*p+ D)p+=2,*(p+)6、设p1和p2是指向同一个int型一维数组的指针变量,k为int 型变量,则下列不能正确执行的语句是( B)。A)k=*p1+*p2; B) p2=k; C) p1=p2; D) k=*p1*(*p2);7、设有以下定义:int a=6,7,8,9,10; int *p; 则下列程序的输出结果为( D)。 p=a; *(p+2)+=2; printf(“%d,%d n”,*p,*(p+2);A)8,10 B)6,8 C)7,9D)6,108、下面程序输出结果是( C)。 main() int a=2,4,6,8,10; int y=1,x,*p;p=&a1;for(x=0;x3;x+) y+=*(p+x);printf(“%dn”,y);A)17B)18C)19D)209、下列程序输出数组中的最大值,由s指针指向该元素,则在if语句中的判断表达式应该是(B)。 void main() int a10=6,7,2,9,1,10,5,8,4,3,*p,*s; for(p=a,s=a;p-asB) *p*s C) apasD) p-ap-s10、以下选项中,错误的赋值是(A)。A)char s110;s1=”Ctest”; B)char s2=C,t,e,s,t; C) char s320=”Ctest”; D)char *s4=”Ctestn”; 11、若有以下定义:char s20=”programming”,*ps=s; 则下列不能代表字符o的表达式是( A)。A) ps+2B) s2 C) ps2D) ps+=2,*ps12、若有定义和语句:int *pp,*p,a=10,b=20;pp=&p; p=&a; p=&b;printf(“%d %d n”,*p,*pp);则输出结果是( D )。A)10 20 B)10 10 C)20 10D)20 2013、下面程序的输出是( A)。char s=”ABCD”;main() char *p; for(p=s;ps+4;p+) printf(“%sn”,p);A)ABCD B)A C)D D)ABCDBCD B C ABCCD C B ABD D A A三、 程序填空题1、 函数strlink把b字符串连接到a字符串的后面,并返回a中的新字符串。#include char *strlink(char a,char b) char *p=a; while(*a+); -a; while(*a+=*b+); *b=0 ; return p ; void main() char s180,s240,*ps; gets(s1); gets(s2) ; ps=strlink(s1,s2); puts(ps); 2、 函数trans仅把字符串s中的小写字母转为大写字母,其他字符不变。#includevoid trans(char s) int i; for(i=0; si; i+) if(si= z ) si= si- a+A ;void main() char s10; gets(s); trans(s) ; printf(n%s, s);四、 改错题1、 从键盘上输入一个字符串,并调用函数funo实现字符串的倒置,输出字符串。(本小题一共3个错)#include改正:void func(char st50)void func(char st) char *p,*q , t;q=st; while( *q!=0 ) q+; for(p=st, q-; pq; p+) for(p=st, q-; pq; p+, q-) t=*p; *p=*q; *q=t; void main() char s50 ; gets (s); func (s); puts (s); 从键盘上输入一个字符串s,并调用函数copy将字符串s中的数字字符复制到字符串t中,输出字符串t。(本小题一共3个错)#include 改正:void copy(char *t, char *s) while(*s!=0) if(*s=0 & *s=0& *s=9) *t=*s; t+; s+; *t=0;main() char s50, t50; gets(s); copy(s,t); copy(t,s); puts (t);2、五、 编程题1、 设计一个函数,在一个整型数组中求最大数及最大数的个数。函数原型:int max(int a, int n, int *mc) 其中:最大值有函数返回值获得;最大值的个数存放在mc指向的变量中;a为被求整型数组,n为整型数组中元素个数。int max(int a,int n,int *mc) int i, max=a0,c=0; for(i=1;in;i+) if(maxai) max=ai; for(i=0;in;i+) if(max=ai) c+; *mc=c; return max;2、 设计一函数,判断s字符串是否是回文。若是回文返回值为1;否则返回值为0。(回文是顺读和倒读都一样的字符串)函数原型:int fun(char *s)int fun(char *s) char *p, *q; p=s; for(q=s;*q;q+); q-; while(p=q) return 1; else return 0;3、 设计一个函数,实现把两个字符串连接后生成一个新的字符串返回。如:void fun(char *s, char *t, char *str)

温馨提示

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

评论

0/150

提交评论