《C语言程序设计》习题集

《C语言程序设计》习题集

a=0x3; b=a|0x8; c=b<<1; printf(“%d%d\\n”,b,c); }

程序运行后的输出结果是( )。 A) –11 12 B) –6 –13 C) 12 24 8、以下程序的输出结果是( )。

void main() { char x=040;

printf(\}

A) 100 B) 80

D) 11 22

C) 64 D) 32

9、 整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是( )。 A) x || y B) x | y C) x & y D) x ^ y

10、以下程序的输出结果是( )。

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

void main()

{ int x=0.5; char z=?a?;

printf(“%d\\n”, (x&1)&&(z>2)/(b>>1)的值是( )。

A) 0 B) 2 C) 4 D) 8

二、填空题

1、若有运算符<<,sizeof,^,&=,则按优先级由高到低排列为 。 2、设有char a,b;若要通过a&b运算屏蔽掉a中的其它位,只保留第1和第7位(右起为第0位),则b的二进制数是 。

3、测试char型变量a第五位是否为1的表达式是 。

4、把int型变量low中的低字节及变量high中的高字节放入变量s中的表达式是 。 5、以下函数:

unsigned getbits(unsigned x ,unsigned p, unsigned n) { x = ((x<<(p+1-n) & ~((unsigned)~0>>n) ; return (x) ; }

若调用此函数时x=0115032, p=7, n=4, 则函数返回值是 。 6、若x=0123,则表达式(5+(int)(x))&(~2)的值是 。 三、编程题 1、编写一个函数getbits,从一个16位的单元中取出某几位(即该几位保留原值,其余位为0)。函数调用形式为: getbits(value,n1,n2)。

value为该16位(两个字节)单元中的数据值,n1为欲取出的起始位,n2为欲取出的结束位 如: getbits(0101675,5,8)表示对八进制101675这个数,取出它从左起的第5位到第8位. 2、写一个函数,对于一个16位的二进制数取出它的奇数位(即从左边起第1,3,5…..15位)。 3、编译一函数来实现左右循环移位.函数名为move,调用方法为: move(value,n)

其中value为要循环位移的数,n为位移的位数.如n<0为左移;n>0为右移.如n=4,表示右移4位,n=-3表示左移3位。

- 48 -

《C语言程序设计》习题集

第十三章 文件

一、选择题

1、以下叙述中错误的是( )。 A)C语言中对二进制文件的访问速度比文本文件快 B)C语言中,随机文件以二进制代码形式存储数据 C)语句 FILE fp; 定义了一个名为fp的文件指针 D)C语言中的文本文件以ASCII码形式存储数据

2、若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为

A) 0 B) 1 C) -1 D) 一个非0值 ( )。 3、下列关于C语言数据文件的叙述中正确的是( )。 A) 文件由ASCII码字符序列组成,C语言只能读写文本文件 B) 文件由二进制数据序列组成,C语言只能读写二进制文件

C) 文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件 D) 文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 4、以下叙述中错误的是( )。

A) 二进制文件打开后可以先读文件的末尾,而顺序文件不可以 B) 在程序结束时,应当用fclose函数关闭已打开的文件 C) 在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据

D) 不可以用FILE定义指向二进制文件的文件指针 5、若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是( )。

A) fopen(\ B) fopen(\C) fopen(\ C) fopen(\6、以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是( )。 A)feof(fp) B)ftell(fp) C)fgetc(fp) D)rewind(fp) 7、有以下程序

#include \

void WriteStr(char *fn,char *str) {

FILE *fp;

fp=fopen(fn,\ fputs(str,fp); fclose(fp); }

void main() {

WriteStr(\ WriteStr(\}

程序运行后,文件t1.dat中的内容是( )。 A)start B)end C)startend

- 49 -

D)endrt

联系客服:779662525#qq.com(#替换为@)