欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    C语言程序设计 第九章 指针.docx

    • 资源ID:16226624       资源大小:21.81KB        全文页数:16页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言程序设计 第九章 指针.docx

    1、C语言程序设计 第九章 指针一、选择题1、指针是一种_A、标识符 B、变量 C、内存地址 D、运算符2、显示指针变量P中的值,可以使用命令_A、Printf(“%d”,p); B、Printf(“%d”,*p);C、Printf(“%d”,*p); D、Printf(“%d”,p);3、为指针变量P输入整型变量i的地址,可以使用命令_A、Scanf(“%p”,&p); B、*p=i; C、P=&I;D、*p=&I;4、若有定义void *p;int *q;float *r,下面操作不对的是_A、p=q; B、q=r; C、p=r; D、r=p;5、若有说明#define m 20 int n=

    2、10;下面定义不正确的是_A、Float sm; B、Float sm*10; C、Float sm+n;D、Float sm+10;6、若有定义int a=1,2,0;请问aaa0=_A、0 B、1 C、2 D、37、若有char s10,*p=s;则下面表达式正确的是_A、s=p+s; B、p=s+10; C、s2=p4; D、p=s0;8、定义整型指针变量p和q,下面操作不正确的是_A、Int *p,q=null; B、Int *p,q=null,null; C、Int *p,*q=null,null;D、Int *p,*q=null;9、若有定义int a=1,2,3,b3=1,2,3

    3、;,请问a=b_A、不能比较 B、结果为真 C、结果为假 D、结果不确定 10、以下程序有错,错误的原因是( )。 main() int *p,i;char *q,ch; p=&i;q=&ch; *p=40; *p=*q; . . .A)p和q的类型不一致,不能执行*p=*q;语句B)*p中存放的是地址值,因此不能执行*p=40;语句C)q没有指向具体的存储单元,所以*q没有实际意义D)q虽然指向了具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q;语句11、已有定义 int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是(

    4、 )。A)k=*ptr1+*ptr2; B)ptr2=k; C)p1=*p2; D)*p1=p2;12、变量的指针,其含义是指该变量的( )。 A)值 B)地址 C)名 D)一个标志13、若已定义int a=5;下面对(1),(2)两个语句的正确解释是( )。 (1)int *p=&a; (2) *p=a; A)语句(1)和(2)中的 *p含义相同,都表示给指针变量p赋值 B)(1)和(2)语句的执行结果,都是把变量a的地址值赋给指针变量p C)(1)在对p进行说明的同时进行初始化,使p指向a(2)将变量a的值赋给指针变量p D)(1)在对p进行说明的同时进行初始化,使p指向a(2)将变量a的

    5、值赋于*p14、若有语句int *point,a=4;和point=&a; 下面均代表地址的一组选项是( )。 A)a,point,*&a B)&*a,&a,*point C)*&point,*point,&a D)&a,&*point,point15、以下程序输出的结果是( )void main() int a=5,*p1,*p2;p1=&a,p2=&p1;(*p1)+;printf(“%dn”,*p2);A) 5 B) 4 C) 6 D) 不确定16、若有说明:int *p,m=5,n; 以下正确的程序段是( )。A)p=&n; B)p=&n; scanf(“%d”,&p); scanf(

    6、“%d”,*p);C)scanf(“%d”,&n); D)p=&n; *p=n; *p=m17、若有说明:int *p1,*p2,m=5,n;以下均是正确赋值语句的选项是( )。 A)p1=&m;p2=&p1; B)p1=&m;p2=&n;*p1=*p2; C)p1=&m;p2=p1 D)p1=&m;*p2=*p1;18、已有变量定义和函数调用语句:int a=25; print_value(&a);下面函数的正确输出结果是( )。 void print_value(int *t) print(“%dn”,+*x); A)23 B)24 C)25 D)2619、下面判断正确的是( )。A)ch

    7、ar * a=”china”;等价于 char *a;*a=”china”;B)char str10=“china”;等价于char str10;str=“china”;C)char *s=”china”; 等价于 char *s; s=”china”;D)char c4=”abc”,d4=”abc”; 等价于 char c4=d4=”abc”;20、设 char *s=”ta017bc”; 则指针变量s指向的字符串所占的字节数是( )。 A)9 B)5 C)6 D)7 21、下面程序段中,for循环的执行次数是( )。 char *s=”ta018bc”; for ( ;*s! =0;s+)

    8、 printf(“*”); A)9 B)5 C)6 D)722、下面能正确进行字符串赋值操作的是( )。 A) char s5=“ABCDE”; B) char 5=A,B,C,D,E; C) char *s; s=”ABCDE”; D) char *s; scanf(“%s”,s);23、下面程序段的运行结果是( )。 char *s=”abcde”; s+=2; printf(“%d”,s); A)cde B)字符c C)字符c的地址 D)无确定的输出结果24、设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是( )。 A)c=*p1+p2; B)p2=

    9、c C)p1=p2 D)c=*p1*(*p2);25、有下面的程序段: chat s=”china”; char *p; p=s; 则下列叙述正确的是( )。A)s和p完全相同 B)数组s中的内容和指针变量p中的内容相等C)s数组长度和p所指向的字符串长度相等 D)*p与s0相等26、下面程序的运行结果是( )。 #include #include main() char *p1,*p2,str50=”abc”;p1=”abc”; p2=”abc”;strcpy(str+1,strcat(p1,p2);printf(“%sn”,str);A) abcabcabc B)bcabcabc C) a

    10、abcabc D)cabcabc27、下面程序的运行结果是( )。 #include main()char str=”cdalb”;abc(str);puts(str);abc(char *p)int i,j;for(i=j=0;*(p+i)!=0;i+)if(*(p+i)=d) *(p+j)=*(p+i); j+;*(p+j)=0; A)dalb B)cd C)dl D)c28、下面程序运行结果是( )。 #include fun(char*p) int i,j; char ts81;for(i=0,t=0;pi!=0;i+=2)if(! isspace(*p+i)&(*(p+i)!=a)t

    11、st=0;strcpy(p,ts);main()char str81=“a b c d ef g”;fun(str);puts(str);A) abcdeg B)bcde C)ABCDE D)BCDE 29、若有以下定义,则对a数组元素的正确引用是( )。 int a5,*p=a; A) *&a5 B) a+2 C) *(p+5) D)*(a+2)30、若有以下定义,则对a数组元素地址的正确引用是( )。 int a5,*p=a;A) p=5 B)*a+1 C)&a+1 D)&a031、若有定义:int a23;则对数组a的第i行第j列(假设i,j已正确说明并赋值)元数值的正确引用为( )。

    12、A)*(*(i+j)+j) B)(a+i)j C)*(a+i+j) D)*(a+i)+j32、若有定义:int a23;则对数组a的第i行第j列(假设i,j已正确说明并赋值)元数地址的正确引用为( )。A)*(ai+j) B)(a+i) C)*(a+j) D)ai+j33、若有以下定义和语句,则对a数组元素地址的正确引用是( )。 int a23,(*p)3; p=a;A)*(p+2) B)p2 C)p1+1 D)(p+1)+234、若有以下定义和语句,则对a数组元素地址的正确引用是( )。 int a23,(*p)3; p=a; A)(p+1)0 B)*(*(p+2)+1) C)*(p1+1

    13、) D)p1+235、若有定义:int a5;则a数组中首元素的地址可以表示为( )。A)&a B)a+1 C)a D)&a136、 若有定义:int (*p)4;则标识符p( )。A)是一个指向整型变量的指针 B)是 一个指针数组名C)是一个指针,它指向一个含有四个整型元素的一维数组 D)定义不合法37、若有以下定义和赋值语句,则对s数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的合法引用为( )。ints23=0,(*p)3;p=s;A)*(*(p+i)+j) B)*(pi+j) C)(p+i)+j D)(*(p+i)j38、若有以下定义和赋值语句,则对b数组的第i行第j列(假设

    14、i,j已正确说明并赋值)元素地址的非法引用为( )。int b23=0,(*p)3;p=b;A)*(*(p+i)+j) B)*(pi+j)C)(p+i)+j D)(*(p+i)j39、以下与int *q5;等价的定义语句是( )。A)int q5 B)int*q C)int*(q5); D)int(*q)540、设有以下程序段: char str410=“first”,“second”,“third”,“fourth”,*strp4; int n;for(n=0;n4;n+) strpn=strn;若k为int型变量且0=k4,则对字符串的不正确引用是( )。A)strp B)strk C)s

    15、trpk D)*strp二 、填空题1、二级指针是存放一级指针的_2、指针变量虽然都是存放指针,但_不同3、空指针名称是_,表示没有指针的一种状态4、函数名和_名可以作为指针常量5、不同类型的指针变量的赋值必须_6、以下的运行结果是【 】。 #includemain()int I,k; for(I=0;I0);print(“%dn”,t);11、下面程序段的运行结果是【】。 char=”12345,*p;int s=0;for(p=a;*p!=0;p+) s=10*s+*p-0;printf(“%s”,P+5);12、下面程序段的运行结果是【】。 har str=”abc0def0ghi”,*

    16、p=str; printf(“%s”,p+5);13、下面程序段的运行结果是【】。 char *p=”PDP1-0”; int i,d; for(i=0;i7;i+)d=isdigit(*(p+ii);if(d!=0) printf(“%c *(p+i);14、 当运行以下程序时,从键盘输入 book book (表示回车, 表示空格),则下面程序段运行的结果是【 】。char a180,a280,*s1=a1,*s2=a2;gets(s1);gets(s2);if(!strcmp(s1,s2) printf(“*”);else printf(“#”);printf(“%d”,strlen(s

    17、trcat(s1,s2);15、下面程序段的运行结果是【 】。char a=”123456789”,*p;int i=0;p=a;while(*p) if(i%2=0) p=*; p+; i+; puts(a)16、下面程序的运行结果是【】。#include s(char *s)char *p=s; while(*p) p+; return(p-s);main() char *a=”abcd”; int i; i=s(a); printf(“%d”,i);17、下面程序的运行结果是【】。#includemain() char *strc(char str1,charstr2); char s1

    18、80=”computer”,s2=”language” *p; pt=strc(s1,s2); printf(”%sn”,pt);char *strc(char * strl, char*str2) char*p; for(p=strl;*p!=0P+); dop+=*str2+;while(“str2 !=o); *p=o;return(strl);18、当运行以下程序时从键盘输入this is a text(表示回车),则下面程序的运行结果是【 】。#include#define TURE 1#define FALSE 0int change(char 0 c,int status)mai

    19、n() int flag=TURE; char ch;doch=getchar(); flag=change(&ch,flag); putchar(ch); while(ch!.); printf(“n”);int change(char *c, int status)if (*c= = )returnTRUE elseif(status 8*c=a) *c+=A-a; return FALSE;19、若有定义:int a23=2,4,6,8,10,12;则*(&a00+2*2+1)的值是【 】, *(a1+2)的值是【 】。20、若有以下定义和语句:int a4=0,1,2,3,*p;p=&

    20、a2;则*-p的值是【 】,21、若有以下定义和语句: int s23=0,(*p)3; p=s; 则p+1表示数组【】。22、若有定义:int a23=2,4,6,8,10,12; 则a10的值是【 】,*(*(a+1)+0)的值是【 】。23、若有以下定义和语句: int *p3,a6,I; for(i=0;i3;i+) pi=&a2*i;则*p0引用的是a数组元素【 】;*(p1+1)引用的是a数组元素【 】。24、若有定义:int a=2,4,6,8,10,12,14,16,18,20,22,24,*q3,k;则下面程序段的输出是【】。 for (k=0;k3;k+) qk=&ak*4

    21、; printf(“%d)n”q23);25、若m数组的元素和它们的值如下所示:数组元素:m0 m1 m2 m3 m4 m5 m6 m7 m8 m9元素中的值: 9 4 12 8 2 10 7 5 1 3则数组元素mm4+m8的值是【 】,*m+m9的值是【 】,m*(m+4)的值是【 】。26、若有以下定义和语句,则下面各个符号的正确含义分别是:(例如对于符号&a21,应该写成:是数组元素a21的地址)。 int a34,(*q)4; q=a; *(q+2): 【 】, *(q+1)+2: 【】, *(*q+2): 【 】27、若有以下定义和语句,在程序中引用数组元素xi的四种形式是: 【】

    22、, 【】,【】和【】(假设i已正确说明并赋值)。 int x10,*p; p=x; 28、若有定义:int m106;在程序中引用数组元素mij的四种形式是:【】, 【】,【】和【】 (假设i、j已正确说明并赋值)。29、若有以下定义和语句,在程序中可通过指针数组p,用*(pi+j)等四种形式引用数组元素sij (假设i、j已正确说明并赋值);另三种形式分别是:【】, 【】和【】。 int s106,*p10; for(i=0;i10;i+)pi=si;30、设main函数的说明为:main(int argc,char*argv ),且有命令行为:FILE1 1 2 3(代表回车),则argc

    23、的值是【 】, argv1的值是【 】。31、若有以下输入(代表回车),则下面程序的运行结果是【 】。2main()int a23=2,4,6,8,10,12; int (*p)3,i,j; p=a; scanf(“%d,%d”,&i,&j);printf(“a%d%d=%dn”,i,j,*(*(p+i)+j);三、编程1、输入3个整数,按由小到大的顺序输出。2、写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。参考答案一、选择题题号12345678910答案CDCBCACDDD题号11121314151617181920答案BBDDCDCDCC题号2122232425

    24、2627282930答案CCCBDCCDDD题号31323334353637383940答案ADCCCCACCA二、填空题1、单元地址 2、基类型 3、Null 4、数组 5、显式类型变换 6、0 1 3 6 7、2 6 6,1 6 6 8、hELLO! 9、bcdABCD 10、1 11、1234512、ef 13、1*0* 14、#9 15、*2*4*6*8* 16、5 17、compuer language18、Ths IS A Test 19、12,12 20、1 21s10的地址 22、8,8 23、a0,a3 24、24 25、8,12,12 26、是数组元意a20地址,是数组元意

    25、a12地址,是数组元素a02的值27、*p(p+i), pi, *(x+i), xi 28、(*(m+i)j, *(mi+j) , *(&m00+6*i+j),*(*(m+i)+j) 29、pij (*(p+i)j *(*(p+i)+j) 30、4,1 31、a12=12三、编程题1、main() int n1,n2,n3;int *p1,*p2,*p3;printf(“input three integers n1,n2,n3:”); scanf(“%d,%d,%d”,&n1,&n2,&n3); p1=&n1; p2=&n2; p3=&n3; if(n1n2) swap(p1,p2); if(n1n3) swap(p1,p3); if(n1n3) swap(p2,p3); printf(“now,the order is:%d,%d,%dn”,n1,n2,n3); swap(int *p1,int *p2)int p; p=*p1;*p1=*p2;*p2=p; 2、main()int len;char *str20;printf(“input string:”);scanf(“%s”,str);len=le


    注意事项

    本文(C语言程序设计 第九章 指针.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开