C语言程序设计 - 试题集及答案(4)

2019-08-30 19:23

【1.56】答案:D

注释:这里首先要明确一些基本概念。在C语言中,程序与文件是不同的概念,一个程序可以由一个文件组成,也可以由多个文件组成;一个文件中又可以包含多个函数;函数是构成C程序的基本单位。

变量的作用域因变量的存储类型不同而不同。auto和register类型的变量的作用域是说明变量的当前函数;外部变量的作用域是整个程序,即外部变量的作用域可以跨越多个文件;内部静态变量(定义在一个函数内部的static型的变量)的作用域是当前函数,外部静态变量(定义在函数外面的static型的变量)的作用域是当前文件,即可以跨越同一文件中的不同函数。 【1.57】答案:A 【1.58】答案:A

注释:它和参数a一样,数据类型说明被省略,按照C语言的规定,在这种情况下,表示它们是int型。

【1.59】答案:C 注释:函数swapa是值传递,函数的执行结果不能返回;函数swapb中变量temp不是指针变量,所以它不能接受地址量,用指针变量x为它赋值是不对的;函数swap中虽然指针变量交换了地址,即它们的指向的目标变量进行了交换,但是目标变量并没有行值的交换。 【1.60】答案:B 【1.61】答案:D 【1.62】答案:D

注释:主调函数中b=0,在执行fun1函数里的除法时发生溢出错误。 【1.63】答案:B 【1.64】答案:C 【1.65】答案:D

注释:在答案D中,正确的函数调用应当是:printf(\。 【1.66】答案:C

注释:要注意与说明语句\的区别。说明语句\说明的是一个指向数组的指针。

【1.67】答案:C

注释:题干中由于*和p被小括号括起,所以p应被解释为一个指针,而后的下标运算符[]说明所指向的对象是一个有4个int型元素的一维数组;如果是int (*p)(),则是指向函数的指针。对于int *p[4],则根据运算符的优先级,先考虑p和[]运算符的关系,所以它就是一个指针数组了。 【1.68】答案:B

注释:选项B有两处错误,一是数组名是常量,不能出现的赋值好的左侧,二是指针变量只能和整数做加,不能和作为地址常量的数组名相加。 【1.69】答案:D

注释:s作为数组名是地址常量,而s++是s=s+1,C语言不允许对常量进行赋值。 【1.70】答案:C 【1.71】答案:C

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

16

【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 B 【1.75】答案:D 【1.76】答案:B 【1.77】答案:D

注释:答案D是另一种交换两个变量值的算法。 【1.78】答案:B 【1.79】答案:C

注释:使用C对p进行赋值,则p->next是a[0]的地址,引用其成员n再做前增1运算,结果就是2。

【1.80】答案:B 【1.81】答案:D 【1.82】答案:A 【1.83】答案:C

注释:联合变量temp的成员是占用同一存储单元,它的长度是4个字节。266的二进制表示是100001010,存放在存储单元的低端两个字节,如下图: 高字节

0 0 0 0 0 0 0 1

低字节 0 0 0 0 1 0 1 0

引用temp.ch进行输出,只取最低的第一个字节。 【1.84】答案:D

注释:由于结构指针指向了结构数组的0号元素,所以表达式(p++)->m的含义是先取出m(变量a的地址),然后指针p加1。表达式*(p++)->m的含义是先取出m的内容(变量a的值),然后指针p再加1。表达式(*p).m的含义是取出m(变量a的地址)。表达式*(++p)->m的含义是先将指针p加1,然后再取m的内容(变量b的值)。 【1.85】答案:D 【1.86】答案:B 【1.87】答案:C 【1.88】答案:A 【1.89】答案:D 【1.90】答案:D 【1.91】答案:A 【1.92】答案:B 【1.93】答案:A 【1.94】答案:D

注释:函数fopen中的第二参数是打开模式,\模式是只读方式,不能写文件;\模式是读/

17

追加方式,允许从文件中读出数据,但所有写入的数据均自动加在文件的末尾;\模式是写方式,允许按照用户的要求将数据写入文件的指定位置,但打开文件后,首先要将文件的内容清空。\模式是读/写方式,不但允许读文件,而且允许按照用户的要求将数据写入文件的指定位置,且在打开文件后,不会将文件的内容清空。本题的要求是\修改\文件的内容,因此只能选择答案D。 【1.95】答案:C 【1.96】答案:D 【1.97】答案:C 【1.98】答案:B

注释:语句z=2*(N+Y(5+1)引用了两个宏定义。C语言是区分字母大小的,第二个宏定义中的N直接用3替换,用5+1替换n,则有z=2*(3+(3+1)*5+1);结果是48。注意对于带参数的宏亦是直接的文本替换,此例中n用5+1去替换,结果是(N+1)*5+1,而不是(N+1)*(5+1)。 【1.99】答案:C

注释:宏替换后的结果是printf(\。 【1.100】答案:C

二、 阅读程序题

导读:学会阅读程序对于初学者来说很重要,一方面可以巩固所学的语法知识,另一方面通过阅读别人写好的程序来打开自己的思路,就所谓见多识广。读者通过阅读理解程序,从给出的四个备选参考答案中,选择程序的正确输出。如果选择有误,就要认真分析原因,是概念方面的错误还是对程序逻辑理解不对,从而加深对语法规则的理解,提高程序设计能力。程序设计语言是开发程序的一个工具,学习语言的目的是为了编写程序来解决实际问题,所以特别提倡通过实际上机来检验备选答案,增强动手能力。习题基本上是按照教材的章节来安排的,读者可以根据学习的进度选择部分习题。

【2.1】以下程序的输出结果是 。 main( ) {

float a;

a=1/100000000; printf(\,a); }

A) 0.00000e+00 B) 0.0 C) 1.00000e-07 D) 0

【2.2】下面程序的输出结果是____。 #include main( ) {

int x=10; {

int x=20;

18

printf (\,\

}

printf(\}

A) 10,20 B) 20,10 C) 10,10 D) 20,20

【2.3】以下程序的输出结果是____。 main() {

unsigned int n; int i=-521; n=i;

printf(\}

A) n=-521 B) n=521 C) n=65015

【2.4】以下程序的输出结果是 。 main( ) {

int x=10, y=10;

printf(\――, ――y);

}

A) 10 10 B) 9 9 C) 9 10 D) 10 9

【2.5】以下程序的输出结果是____。 main() {

int n=1;

printf(\}

A) 1 1 1 B) 1 0 1 C) 1 1 0

【2.6】以下程序的输出结果是____。 main()

{ int x=0x02ff,y=0x0ff00;

printf(\}

A) 127 B) 255 C) 128 D) 1

【2.7】以下程序的输出结果是____。

19

D) n=102170103 D) 1 2 1 main() {

int a=1; char c='a'; float f=2.0;

printf(\}

A) 0 B) 1

【2.8】下面程序的输出结果是____。 main()

{ int a=1,i=a+1; do { a++ ;

}while( !~i++ > 3); printf(\}

A) 1 B) 2 C) 3

【2.9】下面程序的输出结果是____。 main()

{ int a=111; a=a^00;

printf(\}

A) 111,157 B) 0,0 C) 20,24

【2.10】下面程序的输出结果是____。 main()

{ char s[12]= \printf(\}

A) a book! B) a book!<四个空格》

C) a bo D) 格式描述错误,输出不确定

【2.11】下面程序的输出结果是____。 main() { int a,b;

scanf(\printf(\}

20

D) 4 D) 7,7


C语言程序设计 - 试题集及答案(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:耶鲁大学校训 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: