c语言复习题(有答案)●

思 考 题

不仅要会做这些题,

更重要的是要掌握其相关知识点

一、一般填空题

1-1、调用fopen函数打开一文本文件,在“打开模式”这一项中,为输出(写)而打开需填入【1】. 1-2、调用fopen函数打开一文本文件,在“打开模式”这一项中,为追加而打开需填入【1】. 1-3、fopen函数的原形在头文件【1】中. 1-4、getchar函数的原形在头文件【1】中. 1-5、sqrt函数的原形在头文件【1】中.

1-6、如果函数不要求带回值,可用【1】来定义函数返回值为空. 答案:w或w+;a或a+;stdio.h ; stdio.h ; math.h ;void . 2-1、字符串“\\1011234\\\\at”的长度(字符数)是【1】. 2-2、字符串“abc\\103\\\\bcd”的长度(字符数)是【1】. 2-3、字符串“1\\\\t\\x43\\abx44”的长度(字符数)是【1】. 2-4、“a“在内存中占【1】个字节. 2-5、‘a’在内存中占【1】个字节. 2-6、“\\71“在内存中占【1】个字节.

2-7、一维数组下标的最小值是【1】;数组char a[]=“china” ;在内存应占【1】个字节。 答案:8; 8; 9; 2;1;2 ;0;6. 3-1、设x=(5>1)+2, x的植为【1】.

3-2、表达式‘B’+15+‘\\x41’+011+0x10的值是【1】. 3-3、表达式‘b’+5+‘\\x42’+011+0x10的值是【1】. 答案:3;171;194;

4-1、假设所有变量都为整型,表达式(a=2,b=5,a>b?a++:b++,a+b)的值是【1】. 4-2、if(!a)中的表达式!a等价于【1】.

4_3、已知a=1,b=2,c=3,执行if(a>b>c) b=a;else b=c;a=4;b=8;后,b的值是【1】.

答案:8;a==0;8;

5-1、若所用变量都已定义,下列程序段的执行结果是【1】. for(i=1;i<=5;i++);printf(“OK\\n”);

5-2、执行语句char s[3]=”ab”,*p;p=s;后,*(p+2)的值是【1】.

5-3、若有以下定义和语句:int a[4]={0,1,2,3},*p; p=&a[2]; ,则*--p的值是【1】. 5-4、下列程序的输出结果是【1】,main(){int a=011;printf(“%d\\n”,++a);} 答案:OK;’\\0’ ;1;10

6-1、若宏定义为:#define y(x) 2+x, 则表达式a=3*y(3)的值为【1】. 6-2、若宏定义为:#define y(x) 2+x, 则表达式a=4*y(2)的值为【1】. 6-3、若宏定义为:#define y(x) 2/x, 则表达式a=4+3*y(3)的值为【1】. 答案:9;10;6 .

二、单项选择题

1-1、若以\方式打开一个已存在的文件,则以下叙述正确的是()。

A:文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作 B:文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作 C:文件打开时,原有文件内容被删除,只可作写操作 D:以上各种说法皆不正确

1-2、若执行fopen函数时发生错误,则函数的返回值是()。

1

A:地址值 B:0 C:1 D:EOF

1_3、若要打开A盘上user子目录下名为abc.txt的文件进行读、写操作,符合要求的是()。

A:fopen(“A:\%user\\abc.txt”, “r”) B:fopen(“A:\\\%user\\\\abc.txt”, “r+”) C:fopen(“A:\%user\\abc.txt”, “rb”) D:fopen(“A:\\\%user\\\\abc.txt”, “w”)

答案:A;B;B;

2-1、以下属于c语言预先规定的保留字是()。

A:int B:score C:aver D:sum 2-2、下列运算符中优先级最高的是()。

A:< B:+ C:&& D:!= 2-3、下面不正确的字符串常量是()。

A:‘abc’ B:’’12’12” C:”0” D:” “ 2-4、运算对象必须是整型的运算符是()。

A:% B:/ C:= D:<= 2-5、下面错误的常量是()。

A: 0xff B:1.2e0.5 C:2L D:’\\72’ 2-6、下列变量定义语句中,正确的是()。

A: char: a b c; B:char a; b; c; C:int x;z; D:int x,z; 2-7、sizeof(float)是()。

A:一个双精度型表达式 B:一个整型表达式 C:一种函数调用 D:不合法表达式 2_8、c语言的注释语句开头必须是()。

A:/ B:* C:/* D:’

2_9、设以下变量均为int类型,则值不等于7的表达式是()。

A:(x=y=6,x+y,x+1) B:(x=y=6,x+y,y+1) C:(x=6,x+1,y=6,x+y) D:(y=6,y+1,x=y,x+1) 2_10、C程序的语句结束符是()。

A:; B:: C:. D:换行

2_11、C语言中用于结构化程序设计的三种基本结构是()。

A:顺序结构、选择结构和循环结构 B:if、switch、break C:for、while、do-while D:if、for、continue

2_12、C语言中,int、char和short三种类型的数据在内存中占用的字节数()。

A:由用户自己定义 B:均为两个字节 C:是任意的 D:由所用机器的字长决定

答案:A;B;A;A;B;D;B;C;C; A;A;D; 3-1、在一个c程序中()。

A:main函数必须出现在所有函数之前 B:main函数的位置没有特别限制 C:main函数必须出现在所有函数之后 D:main函数必须出现固定位置 3-2、已知函数原形声明为:float www(char a, char b); 该函数的类型为()。

A:指向字符型的指针 B:字符型 C:浮点型 D:指向浮点型的指针 3-3、与实际参数为整型数组名相对应的形式参数不可以定义为()。

A:int a[]; B:int *a; C:int a; D:int a[3]; 3_4、全局变量的定义不可能在()。

A:函数内部 B:函数外面 C:文件外面 D:最后一行 3_5、putchar函数可以向终端输出一个()。

A:整型变量表达式的值 B:实型变量的值 C:字符串 D:字符或字符型变量值 3_6、数组名作为实际参数传给函数时,数组名被处理为()。

A:数组的长度 B:数组的元素个数 C:数组的首地址 D:数组中各元素的值

2

3_7、C语言中,当调用函数时()。

A:实参和虚参本身各占一个独立的存储单元 B:实参和虚参可以共用存储单元 C:实参和虚参可以由用户指定是否共用存储单元 D:由计算机自动确定是否共用存储单元 3_8、调用函数时,实参和虚参必须保持一致的是()。

4-1、int a=3,b=2,c=1; if(a>b>c)a=b; else a=c; 则a的值为()。

A:3 B:2 C:1 D:0 4-2、下列程序的输出为()。 main()

{ int y=10; while(y--); printf(\

A: y=0 B: while构成无限循环 C: y=1 D: y=-1 4-3、假设所有变量都为整型,表达式(a=2,b=5,a>b?a++:b++,a+b)的值是().

A: 7 B:8 C: 9 D: 2 4-4、以下程序的输出结果是()。 main()

{ int i=010, j=10 ; printf(\}

A: 11,10 B:9,10 C: 10,9 D: 10,9

4_5、设a=2,且a定义为整型变量,执行语句a+=a-=a*=a;后,a的值为()。

A: 12 B: 144 C: 0 D: 132 4-6、int a=1,b=2,c=3; if(a>c)a=b; a=c;c=b; 则c的值为()。

A:1 B:2 C:3 D:不一定

4-7、若变量a与i已正确定义,且i已正确赋值,合法的语句是()。

A: a==1 B:++i; C:a=a++=5; D:a=int(i); 4_8、strlen(“12\\0345\\n”)与strlen(“12\\0845\\n”)的测试结果分别是。

A:相同 B:2和5 C:5和2 D:5和5 4_9、设 char s[10]=\则数组s所占的字节数是()。 A:9 B:10 C:6 D:7

4_10、设 char *s=\则指针变量s指向的字符串所占的字节数是()。 A:9 B:5 C:6 D:7

4_11、若i=3,则printf(\输出的值和i的值分别为()。 A:相同 B:-3和4 C:5和2 D:5和5 答案:C;D;B;B; C; B;B;C;B;C;B; 5-1、一维数组定义的格式为:类型说明符 数组名()。

A:[常量表达式] B:[整型表达式] C:[整型常量] 或[整型表达式] D:[整型常量] 5-2、以下能正确定义数组并正确赋初值的邮局语句是()。

A:int N=5,b[N][N]; B: int a[1][2]={{1},{3}}; C: int c[2][]={{1,2},{3,4}}; D: int d[3][2]={{1,2},{34}}; 5_3、以下不正确的定义语句是()。

A:double x[5]={2.0,4.0,6.0,8.0,10.0}; B: int y[5]={0,1,3,5,7,9}; C: char c1[]={‘1’,’2’,’3’,’4’,’5’}; D: char c2[]={‘\\x10’,’\\xa’,’\\x8’}; 5_4、在C语言中,引用数组元素时,其数组下标的数据类型允许是()。

A: 整型常量 B:整型表达式 C: 整型常量或整型表达式 D: 任何类型的表达式 5_5、若有说明:int a[10];则对a数组元素的正确引用是()。

A:a[10] B:a[3,5] C:a(5) D:a[10-10]

3

A:在个数上 B:在类型上 C:在顺序上 D:在个数、类型、顺序上 答案:B;C;D;A;D;C;A;D;

3_6、下列数组定义中,正确的是()。

A:int a[][4]; B:int a[][]; C:int a[][][5]; D:int a[3][]; 5_7、若有说明:int a[10];则对a数组元素的正确引用是()。

A:a[10] B:a[3,5] C:a(5) D:a[3>1]

答案:A;D;B;C;D;A;D;

6-1、相同结构体类型的变量之间可以()。

A: 相加 B:赋值 C: 比较大小 D: 地址相同 6_2、结构体类型的定义允许嵌套是指()。

A:成员是已经或正在定义的结构体型 B: 成员可以重名 C: 结构体型可以派生 D: 定义多个结构体型

6_3、有如下定义:struct student{char name[20];int age;}wang,*p;p=&wang;,以下不合法的引用为()。

A: p.age B: wang.age C: p->age D: (*p).age 6_4、在定义构造数据类型时,不能()。

A:说明变量 B:说明存储类型 C:初始化 D:末尾不写分号 6_5、当定义一个结构体变量时,系统分配给它的内存是()。

A:各成员所需内存量的总和 B:结构中第一个成员所需内存量 C:结构中最后一个成员所需内存量 D:成员中占内存量最大者所需的容量 6_6、enum a {sum=9,mon=-1,tue};定义了()。

A:枚举变量 B:3个标识符 C:枚举数据类型 D:整数9和-1 6_7、以下各选项企图说明一种新的类型名,其中正确的是()。

A:typedef v1 int; B:typedef v2=int; C:typedef int v3; D:typedef v4: int;

答案:B;A;A;D;A;C;C;

7-1、若宏定义为:#define y 2+3, 则表达式y*3+3的值为().

A: 14 B:16 C: 18 D: 20

7-2、若宏定义为:#define y 2+3, 则表达式2+y*3的值为().

A: 11 B:13 C: 15 D: 17

7_3、有宏定义为#define Y(a,b) a+b ,则表达式2+Y(2,3)*3的值为().

A: 11 B: 13 C: 15 D: 17

答案:A;B;B;

8-1、如有int *p,a=5,b; 定义,则以下正确的程序段为()。

A: p=&b;scanf(“%d’,&p); B: p=&b; scanf(“%d’,*p); C: scanf(“%d’,&b); p=b; D: p=&b;p=a;

8-2、若有语句:int a[3][4],*p[3]={a[0],a[1],a[2]}; 不能表示a[2][3]的元素的是()。

A: *(*(a+2)+3) B: *(*(p+2)+3) C: (p[2]+3) D: (*(p+2)) 8_3、p1,p2为指向浮点的指针变量,则下列运算错误的是()。

A: *p1-*p2 B: p1++ C: *p1%*p2 D: p1-p2 8_4、有以下定义:int a[2][3];,则对数组元素的正确引用()是。

A: *(*(a+i)+j) B: (a+i)[j] C: *(a+i+j) D: a[i]+j 8_5、若有定义:int (*p)();,则该指针为()。

A: 指向整型的指针 B: 指向字符型的指针 C: 指向整型函数的指针 D: 指向字符型函数的指针

4

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4