C语言习题课(指针)_第1页
C语言习题课(指针)_第2页
C语言习题课(指针)_第3页
C语言习题课(指针)_第4页
C语言习题课(指针)_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、.,习题课 (函数指针),.,一、有关指针的数据类型,.,1、指针变量a所指的字符串长度为(),这个长度是可以用strlen(a)测出来的。 char *a=“nMy Name is”wang fei”.n”; (1)26 (2) 27 (3) 28 (4) 24 (5)23 2、下面程序的作用是,将两个变量中的值互换,请检查程序是否正确,如不正确的,请改正。 #include void main ( ) int a=3,b=4; int *p1 , *p2 , *p; p1= ,这里改为:int *p1,*p2,p; 这里改为:p=*p1;*p1=*p2;*p2=p;,.,3、已设p1和p2

2、为指针变量,且已指向同一个整 型数组中的元素,a是一个整型变量,问下面 哪一个语句不能正确执行? (1) a=*p1 (2) a=*p1+*p2 (3) a=*p1-*p2 (4) p1=a-p2 4、有一个二维数组a34,2行3列元素的正确表 示方法为()。 (1) 3) float (*p)(); 2) int *p; 4) char *(*a) ; 8 、以下程序段的输出结果为: #include void main() int s =1,2,3,4,5,6,7,8,9,*p; p=s; *(p+5)=22; p+; printf (%d,%dn,*p,*(p+4); ,输出结果是:2,

3、22,.,9、下列程序的输出结果是: #include void main() int a5=2,4,6,8,10,*p,*k; p=a;k= A)4 4 B)2 2 C)2 4 D)结果错误,.,10、写出下面程序的运行结果。 #include stdio.h #include string.h void main() char a30=nice to meet you!; int b; b=strlen(a)-9; strcpy(a+b,you); printf(%sn,a); ,运行结果:nice to you!,.,11、下列程序的输出结果是多少? #include void fun(

4、int *a,int *b) int k; k=5; *a=k; *b=*a+k; void main() int *a,*b,x=10,y=15; a= ,运行结果: 5,10 5,10,.,12、以下程序段的输出结果是() #include void main() int a10=9,8,7,6; int *p; p=a; printf(%d,%dn,*p,*(p+2); ,运行结果:9,7,.,13、已有变量定义和函数调用语句:int a=25;print_value( A)23 B)24 C)25 D)26,.,14、阅读下面程序,输出结果是多少? #include stdio.h v

5、oid main() int c6=1,2,3,4,5,6; int *p; p=c; printf(%d,*+p); p=p+3; printf(%dn“,*p-); ,运行结果:2,5,.,15、阅读下面程序,则程序的输出结果是多少? #include void main() int i;char *p; char *name =Ann,Hare,Jack,Mary; printf(n Studentss names are:n); for(i=2;i=0; i-,i-) printf(%c,*pi); printf(n); ,运行结果: SO,.,#include void main()

6、 char *month13=january,february,march,april,may,june,july,august,september,october,november,decenber; int n; printf(input month:); scanf(%d, ,编一个程序,输入月份号,输出该月份的英文月名。,.,有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。,.,#include void input(int *p,int n) int i; printf(请输入%d个整数:,n); for(i=0;i=p;h-) for(i=0;im;i+) t

7、=*(h+i); *(h+i)=*(h+i+1); *(h+i+1)=t; void main() int m,a10; input(a,10); output(a,10); printf(请输入要把后面多少个整数移动到前面?); scanf(%d, ,.,有一字符串,包含n个字符,写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。,.,#include #define M 5 /从第个字符开始复制(可以行更改) /*定义函数:把指针head处开头的字符串从第m个字符开始复制到指针cpy开头的字符数组*/ char *stringcpy(char *head, int m,

8、 char *cpy) char *h,*c; /定义两个工作指针 int i=0; h=head; c=cpy; /工作指针分别指向源字符串和目标字符串 while(i=m-1) h=head+i; if(*h=0)break; i+; /这个循环是为了把指针h指向第m个字符 while(*h!=0) *c=*h; c+;h+; /这个循环是从第个字符开始逐个字符进行复制 *c=*h; /复制源字符串末尾的字符0 return cpy; /给函数返回目标字符串首地址 void main() char c181,c281; /c1是源字符串,c2是目标字符串 printf(请输入源字符串:n); gets(c1); /输入源字符串 printf(目标字符串是:n); puts(stringcpy(c1,M,c2);/输出目标字符串 ,.,有N个人围成一圈,顺序排号,从第一个人开始报数(从一到三报数),

温馨提示

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

评论

0/150

提交评论