欢迎您访问浙江自考网!网站为考生提供浙江自考信息服务,供学习交流使用,非政府官方网站,官方信息以浙江省招生考试院为准 登录  网站导航

浙江自考网

自考热线:16657169113

自考办电话 | 在线提问 | 公众号

2024年4月浙江自考《C语言程序设计》每日一练(15)

编辑整理:浙江自考网 发表时间:2024-01-15   【

【1.71】已知:char a[3][10]={'BeiJing','ShangHai','TianJin'},*pa=a;不能正确显示字符串'ShangHai'的语句是。

A)printf('%s',a+1);B)printf('%s',*(a+1));

C)printf('%s',*a+1);D)printf('%s',&a[1][0]);


【1.72】已知:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};

int(*ptr)[3]=a,*p=a[0];

则以下能够正确表示数组元素a[1][2]的表达式是。

A)*(*(a+1)+2)B)*(*(p+5))C)(*ptr+1)+2 D)*((ptr+1)[2])


【1.73】已知:int a[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a;则值为3的表达式是。

A)p+=2,*(p++)B)p+=2,*++p C)p+=2,*p++D)p+=2,++*p


【1.74】已知:int a[]={1,2,3,4},y,*p=a;则执行语句y=(*++p)--;之后,数组a各元素的值变为______。

A)0,1,3,4 B)1,1,3,4 C)1,2,2,4 D)1,2,3,3

变量y的值是____。

A)1 B)2 C)3 D)4


【1.75】已知:int a[]={1,3,5,7},y*p=a;为使变量y的值为3,下列语句正确的是____。

A)y=++*p++;B)y=++(*p++);C)y=(++*p)++;D)y=(*++p)++;


【参考答案】

【1.71】答案:C

注释:a是二维数组名,a+1中的1不是1个字节,而是数组的'一行',即10个字节,所以a+1是第二个字符串的首地址,A选项正确。在C编译系统中对二维数组名可这样理解(注意,这里仅是理解):a指向一个一维数组,故(a+1)是指向a[1]的,*(a+1)就是取a[1]的值,它保存第二个字符串'ShangHai'的首地址,所以选项B也正确。*a是第一个字符串的首地址,加1是第一个字符串中第二个字符的地址,选项C的输出是'beiJing'。选项D中的&a[1][0]是对第二个字符串的第一个字符做取地址运算,得到该地址就是字符串'ShangHai'的首地址。注意,对于二维数组来说,做一次*或[]运算的结果仍是地址量,做两次才是取数值。

【1.72】答案:A

注释:p是一个一级指针,选项B中对它进行了两次*运算是错误的。ptr是一个指向一维数组的指针,它所指向的数组有三个元素,对于这样一个指针,对它进行两次**运算才能取出地址单元中所存的数据,C选项中*ptr表示数组第一行的首地址,该地址是一维数组的地址,+3表示加上三个它所指向的数据类型的长度,所以(*ptr+1)+2是数组中数值4的地址。根据以上分析,选项D对ptr进行了两次地址操作(*和[]),所以结果应是数据,但是它加1后指向数组第二行,根据后面[]中2它的地址增加两个一维数组的长度,就指向数组的最后一行,再做*运算就是数10,即a[3][0]。

【1.73】答案:A

【1.74】答案:B

【1.75】答案:D





浙江自考网课程中心

浙江自考网声明:

1、由于各方面情况的调整与变化,本网提供的考试信息仅供参考,考试信息以省考试院及院校官方发布的信息为准。

2、本网信息来源为其他媒体的稿件转载,免费转载出于非商业性学习目的,版权归原作者所有,如有内容与版权问题等请与本站联系。

浙江自考便捷服务

浙江自考网微信交流群