ImageVerifierCode 换一换
格式:DOC , 页数:21 ,大小:105KB ,
资源ID:4463507      下载积分:5 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4463507.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(C语言指针练习答案讲解.doc)为本站上传会员【二***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

C语言指针练习答案讲解.doc

1、 .第七章 指针71 选择题1 若有说明:int a=2, *p=&a, *q=p;,则以下非法的赋值语句是(D)。A p=q; B *p=*q; C a=*q; D q=a;a是整型数,int *p,*q定义了指针,p,q是指向整型的指针。p取得a的地址,而q取得p的地址p,q是指针(也就是一个地址),而*p和*q是这个指针指向的整型数值(存放在这个地址的值)。A) 把q的地址赋给p,则p和q完全一样了,都指向一个数2B) 把q中数据个pC) 把q中数据给aD) a中数据是2,不能够给一个地址。除非*q=a2 若定义:int a=511, *b=&a;,则printf(%dn, *b);的输

2、出结果为:D A 无确定值 B a的地址 C 512 D 511int a=511,*b=&a;a 是整形变量b 是整形指针变量,指向 aprintf(%dn,*b);就是输出指针变量 b,所指变量的值输出结果5113 已有定义int a=2, *p1=&a, *p2=&a; 下面不能正确执行的赋值语句是(B)。A a=*p1+*p2; B p1=a; C p1=p2; D a=*p1*(*p2);47、已知在程序中定义了如下的语句:int *P1,*P2;int k;p1=&k;p2=&k;则下列语句中不能正确执行是( B )A、k=*P1+*P2; B、p2=k; C、P1=P2; D、K

3、=*P1 * (*P2);P1 P2是指针,K是整型变量,变量怎么可以赋值给指针呢?A其实是执行了K=K+K(P1和P2都指向K,所以*P1 *P2其实都是指K)C是赋值语句D其实执行了K=K*K4 变量的指针,其含义是指该变量的(B)。A 值 B 地址 C 名 D 一个标志5 若有说明语句:int a, b, c, *d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是(A)。A scanf(%d%d%d, &a, &b, d); B scanf(%d%d%d, a, b, d);C scanf(%d%d%d, &a, &b, &d); D scanf(%d%d%d, a,

4、b,*d);对于int c,*d=&c;,c是一整型数据,d是一指针,它指向变量c(即d=&c,*是指针类型的说明符),所以,输入c的值可以用scanf(%d,&c); 也可以用scanf(%d,d);6 若已定义int a=5; 下面对(1)、(2)两个语句的正确解释是(D)。(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

5、; (2)将变量a的值赋予*p。A:(1):*p,定义p为int类型指针(2):*p,表示p所指向的变量B(1)把变量a的地址赋给指针变量p(2)把变量a的值,赋值给P所指向的变量C前半句正确,后半句错误,(2)是把变量a的值赋值给P所指的变量。7 若有语句int *p, a=10; p=&a; 下面均代表地址的一组选项是(D)。A a, p, *&a B &*a, &a, *pC *&p, *p, &a D &a, &*p, pint *p 是定义一个指针,p=&a ,p指向a的地址,*p=a, *指针名 是指取该指针所指地址中的内容,&a 为a的地址,&*p=&a,p中放的为a 的地址0.

6、2345px8 若需要建立如图所示的存储结构,且已有说明double *p, x=0.2345; 则正确的赋值语句是()。 BA p=x; B p=&x; C *p=x; D *p=&x;9 若有说明:int *p, a=1, b; 以下正确的程序段是(B)。A p=&b; B scanf(%d, &b);scanf(%d, &p); *p=b;C p=&b; D p=&b;scanf(%d, *p); *p=a;A,B中 p是b的地址 那么如果要输入b应该是scanf(%d, p);C中 p还没定义 给*p赋值就是给一个没有开辟的地址赋值了D是正确的 意思是p为b的地址,将p地址上的数变成a

7、, 等价于b=a10有如下语句:int m=6, n=9, *p, *q; p=&m; q=&n; 如图1所示,若要实现下图所示的存储结构,可选用的赋值语句是(C)。mpnqpmqn A *p=*q; B p=*q; C p=q; D *p=q;11以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是(B)。 #include main() int *p, *q, a, b;p=&a;printf(input a:);scanf(%d, *p);A *p表示的是指针变量p的地址B *p表示的是变量a的值,而不是变量a的地址C *p表示的是指针变量p的值D *p只能用来说明p

8、是一个指针变量scanf后面的参数是地址,是接收的值放到这个地址12下面程序的功能是从输入的十个字符串中找出最长的那个串。请在_处填空。 #include stdio.h #include string.h #define N 10 main() char sN81, * t;int j; for (j=0; jN; j+) gets (sj);t= *s; for (j=1; jN; j+) if (strlen(t)strlen(sj) _A_; printf(the max length of ten strings is: %d, %sn, strlen(t), t);A t=sj B

9、 t=&sj C t= s+ D t=sj013下面判断正确的是(C)。A char *s=girl; 等价于 char *s; *s=girl;B char s10=girl; 等价于 char s10; s10=girl;C char *s=girl; 等价于 char *s; s=girl;D char s4= boy, t4= boy; 等价于char s4=t4= boy14设char *s=ta017bc;则指针变量s指向的字符串所占的字节数是(C)。A 9 B 5 C 6 D 7首先,字节数不是指字符串长度,字符串长度比存储字节数少一。t 是一个转义字符 相当于键盘“Tab”键a

10、 普通字符017 转义字符 ASCII代码值为8进制数17即10进制数15的那个符号b 普通字符c 普通字符 字符串结束标志0s是字符串类型。每一个都是char型变量;char型变量的二进制长度是8,也就是一个字节,所以指针变量s 指向的字符串所占字节数是6 ,字符串长度是5.15下面程序段中,for循环的执行次数是(C)。 char *s=ta018bc;for (;*s!=0;s+) printf(*);t a 018 b c 0各一次A 9 B 5 C 6 D 716以下不能正确进行字符串赋初值的语句是(A)。A. char str5= good!; B char *str=good!;

11、C. char str=good!; D char str5=g, o,o, d;1 A.char str5=good!;/这个不符合C语言的语法规定,字符串初始化是这样写的:char str6=good!; /因最后还有一个结束符,因此数组元素应该是6个。 2 题目表述有些不准确 C,D叫初始化,B叫赋值。 3 题目中的单双引号全部是中文的,这也不符合C语言语法。应该改为英文的。17若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是(A)。A p=2*(int *)malloc(sizeof(int);B p=(int *)malloc(2*sizeof(int);C

12、p=(int *)malloc(2*2);D p=(int*)calloc(2, sizeof(int);malloc的全称是memory allocation,中文叫动态内存分配,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。18下面程序段的运行结果是(C)。char *s=abcde; s+=2; printf(%d, s);A cde B 字符c C 字符c的地址 D 无确定的输出结果19设有如下的程序段:char s=girl, *t; t=s;则下列叙述正确的是(D)。A s和t完全相同B 数组s中的内容和指针变量t中的内容相等C s数组长度和t所指

13、向的字符串长度相等D *t与s0相等20以下正确的程序段是(B)。A char s20; B char *s; scanf(%s, &s); scanf(%s, s);C char s20; D char s20, *t=s; scanf(%s, &s2); scanf(%s, t2);21下面程序段的运行结果是(C)。#include stdio.hmain() int m=10, n=20; char *format=%s, m=%d, n=%dn; m*=n; printf(format, m*=n, m,n);A format, m*=n, m, n B format, m*=nC m

14、*=n, m=200, n=20 D 以上结果都不对22以下与库函数strcpy(char *p, char *q)功能不相等的程序段是(D)。A strcpy1(char *p, char *q) while (*p+=*q+)!=0);B strcpy2( char *p, char *q) while(*p=*q)!=0) p+; q+;C strcpy3(char *p, char *q) while (*p+=*q+); D strcpy4( char *p, char *q) while(*p) *p+=*q+;23下面程序段的运行结果是(C)。#include stdio.h m

15、ain() char s=example!, *t; t=s; while( *t!=p) printf(%c, *t-32);t+; A EXAMPLE! B example! C EXAM D example!24以下正确的程序段是(C)。A char s=12345, t=6543d21; strcpy( s,t);B char s20, *t=12345; strcat(s,t);C char s20= , *t=12345; strcat(s, t);D char *s=12345, *t=54321; strcat (s,t);25以下与库函数strcmp(char *s, cha

16、t *t)的功能不相等的程序段是(D)。A strcmp1( char *s, chat *t) for ( ;*s+=*t+ ;) if (*s=0) return 0; return (*s-*t);B strcmp2( char *s, char *t) for ( ;*s+=*t+ ;)if (!*s) return 0; return (*s-*t); C strcmp3( char *s, char *t) for ( ;*t=*s ;) if (!*t) return 0; t+; s+; return (*s-*t); D strcmp4( char *s, char *t)

17、for( ;*s=*t;s+,t+) if (!*s) return 0;return (*t-*s);26若有以下定义和语句:int s45, (*ps)5; ps=s;则对s数组元素的正确引用形式是(C)。A ps+1 B *(ps+3) C ps02 D *(ps+1)+327不合法的main函数命令行参数表示形式是:(B)。A main( int a, char *c) B main(int argc, char *argv)C main( int arc, char *arv) D main( int argv, char*argc)28若有说明语句:char s=it is a e

18、xample, *t=it is a example.;则以下不正确的叙述(B)。A s表示的是第一个字符i的地址,s+1表示的是第二个字符t的地址B t指向另外的字符串时,字符串的长度不受限制C t变量中存放的地址值可以改变D s中只能存放16个字符29若已定义char s10;则在下面表达式中不表示s1地址的是(B)。A s+1 B s+ C &s0+1 D &s130下面程序段的运行结果是(A)。(注:代表空格) #include stdio.h main() char s6;s=abcd;printf(%sn, s); A abcd B abcd C abcd D 编译出错31执行以下

19、程序后,a的值为【1】, b的值为【2】。#include main() int a, b, k=4, m=6, *p=&k, *q=&m; a=p=&m;b=(-*p)/(*q)+7;printf(a=%dn, a);printf(b=%dn, b);【1】 A -1 B 1 C 0 D 4【2】 A 5 B 6 C 7 D 1032下面程序的功能是将字符串s的所有字符传送到字符串t中,要求每传递三个字符后再存放一个空格,例如字符串s为abcdefg,则字符串t为abc def g,请选择填空。C A#include stdio.h #include string.h main() int

20、j, k=0;char s60, t100, *p;p=s;gets(p);while(*p) for (j=1; j=3 & *p; 【1】) tk=*p;if (【2】) tk= ; k+;tk=0;puts(t); 【1】 A p+ B p+,k+ C p+, k+, j+ D k+, j+【2】 A j=4 B *p=0 C !*p D j!=433下面程序的功能是将八进制正整数字符串转换为十进制整数。请选择填空。错题 AB#include stdio.h#include string.hmain() char *t, s8; int n; t=s; gets(t); n=【1】; w

21、hile (【2】!= 0) n=n*8+*t-0; printf(%dn, n);【1】A 0 B *t C *t-0 D *t+0【2】A *t B *t+ C *(+t) D t34下面程序的功能是在字符串s中找出最大的字符并放在第一个位置上,并将该字符前的原字符往后顺序移动,如:boy&girl变成ybo&girl。请选择填空。BC#include stdio.h#include string.hmain() char s80, *t, max, *w; t=s; gets(t); max=*(t+); while (*t!=0) if (maxs B t=s C *ts0 D *t=

22、s0【2】A t+ B s- C t- D w-35以下程序的功能是删除字符串s中的所有空格(包括TAB符、回车符),请填空。AC #include stdio.h #include string.h #include ctype.h main() char s80;gets(s);delspace(s);puts(s); delspace(char *t) int m, n;char c80;for(m=0, n=0; 【1】; m+) if (!isspace(【2】) /*C语言提供的库函数,用以判断字符是否为空格*/ cn=tm; n+;cn=0;strcpy(t, c); 【1】A

23、tm B !tm C tm=0 D tm=0【2】A t+m B *cm C *(t+m) D *(c+m)36下面程序的功能是统计字串sub在母串s中出现的次数。请选择填空。BC #include stdio.h #include string.h main() char s80, sub80;int n;gets(s);gets(sub);printf(%dn, count(s,sub);int count( char *p, char *q) int m, n, k, num=0; for (m=0; pm; m+) for (【1】, k=0; qk=pn; k+, n+) if(q【

24、2】=0) num+; break; return (num);【1】A n=m+1 B n=m C n=0 D n=1【2】A k B k+ C k+1 D +k37下列程序的输出结果是(C)。#include stdio.hmain() int a=1,2,3,4,5,6,7,8,9,0, *p; p=a; printf(%dn, *p+9);A 0 B 1 C 10 D 938以下程序的输出结果是(C)。#include stdio.hchar cchar(char ch) if (ch=A & ch=b1) strcpy(b2, pb); printf(%dn, strlen(b2);

25、 A 8 B 3 C 1 D 740有以下程序#include string.h#include stdio.hmain() char *p=abcde0fghjik0;printf(%dn, strlen(p); 程序运行后的输出结果是(D)。 A 12 B 15 C 6 D 541有以下程序void ss( char *s, char t) while (*s) if (*s=t) *s=t-a+A; s+;main() char str100=abcddfefdbd, c=d; ss(str, c); printf(%sn, str1);程序运行后的输出结果是(B)。AABCDDEFED

26、BD B abcDDfefDbD C abcAAfefAbA D Abcddfefdbd42以下程序调用findmax函数返回数组中的最大值。在下面划线处应填入的是(B)。#include stdio.hfindmax( int *a, int n) int *p, *s;for (p=a, s=a; p-as B *p*s C apas D p-ap-s43有以下程序A#include stdio.h#include malloc.hmain()char *q, *p; p=(char*) malloc (sizeof(char) *20); /*为指针p分配一个地址*/ q=p; scan

27、f(%s%s, p, q); printf(%s %sn, p, q);若从键盘输入:abc def,则输出结果是:A def def B abc def C abc d D d d44下面程序的运行结果是(D)。 #include stdio.h #include string.h fun( char *s) char t10;s=t;strcpy(t, example); main() char *s;fun(s);puts(s); Aexample Bexample Cexample D不确定的值45下列程序段的输出结果是(A)。#include stdio.hvoid fun( int

28、 *x, int *y) printf(%d%d, *x, *y);*x=3;*y=4;main() int x=1, y=2; fun(&y, &x); printf(%d %d, x, y);A 2 1 4 3 B 1 2 1 2 C 1 2 3 4 D 2 1 1 246下列程序的输出结果是(C)。#include stdio.hmain()char a10=9,8,7,6,5,4,3,2,1,0, *p=a+5; printf(%d, *-p);A 非法 B a4的地址 C 5 D 347有以下程序#include stdio.h#include string.hmain(int ar

29、gc, char *argv) int m, length=0;for (m=1;margc; m+) length+=strlen(argvm);printf(%dn, length);程序编译连接后生成的可执行文件是file.exe,若执行时输入带参数的命令行是:file 1234 567 89则运行结果是(C)。A 22 B 17 C 13 D 948有以下函数:char *fun(char *s) return s; 该函数的返回值是(D)。A 无确定值 B 形参s中存放的地址值C 一个临时存储单元的地址 D 形参s自身的地址值49假定下列程序的可执行文件名为file.exe,则在该程

30、序所在的子目录下输入命令行: file girl boy后,程序的输出结果是(B)。#include stdio.hmain(int argc, char *argv) int m;if (argc=0) return; for (m=1; m1)printf(%s%c, *argv, (argc1)? n: ); B main( int a, char * b) while (a-1)printf(%sn, *+b); C main( int argc, char *argv) while (+argc0)printf(%s%c, *+argv, (argc1) ? :n); D main(int argc, char *argv) while (argc1)printf(%s, *+argv); .页脚.

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服