您当前所在位置:自考本科 > 网站地图 > 备考资料 > 模拟试题 > 工学类 > C语言程序设计 > 2022年自学考试《C语言程序设计》习题及答案15

2022年自学考试《C语言程序设计》习题及答案15

2022-07-12 10:49:22  来源:中国教育在线

2022年自学考试《C语言程序设计》习题及答案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

热门推荐:

自考有疑问、不知道如何选择主考院校及专业、不清楚自考当地政策,点击立即了解》》

推荐阅读:

2022年10月各省成人自学考试报名时间及入口汇总

2022年10月全国各省自学考试报考条件汇总

2022年10月全国各省成人自学考试报名官网汇总

你可能感兴趣的试题
1
意向表
2
学习中心老师电话沟通
3
查看评估报告
1、年龄阶段

2、当前学历

3、提升学历目标

4、意向学习方式

报考所在地
*
*
*

查看成人高考最新资讯 查看远程教育最新资讯

自考专业快选

自考热门专题

自考热议话题

自考推荐文章