c语言基础练习题详解

207 阅读4分钟

💞💞

1.C语言程序的基本单位是(C)。

A.程序行 B. 语句 C. 函数 D.字符

💞💞

2.已知各变量的类型说明如下:

int m=6,n,a,b;

unsigned long w=8;

double x=3.14,y=0.12;

1

2

3

则以下符合C语言语法的表达式是(A)。

A.a+=a-=(b=2) * (a=8)自右向左

B.n=n3=18

C.x%3

D.y=float(m)

💞💞

3.设有定义“ int x=3 , y , * p=&x” ,则下列语句中使 y 不为 3 的语句是(D)

A y=&x ;

B y=*p;

C y=x;

D y=&x;

解析:

(A)&x 即把x的地址取出来,赋给p,再解引用即可以使y=3;

(B)因为 *p=&x;所以 *p 即可以找到x的值,即为3

(C)因为 x=3,直接把x赋值给y,所以y=3;

(D)&x 是获取的x的地址赋给y,所以y不能输出3

💞💞

4.设x、y、z均为 int 型变量,则执行语句:x=y=3; z=++x || ++y; 后 y的值为

(C)

A、不定值

B、4

C、3

D、1

解析:

因为中间是 || 先执行++x 是真,判断 || 操作运算符,有一真即为真,所以进行赋值z,再++y;因为后面没有使用y的值,所以y=3;

💞💞

5.设a=4,b=6,c=7,d=8,m=3,n=2,则执行(m=a>b) && (n=c>d) 后n的值为(B)。

A.0

B.2

C.3

D.1

解析:

a=4,b=6. 显而可见 a<b 所以a>b 为假, && 操作符 有一假即为假,所以会出现 短路特性,n的值不会改变

💞💞

6.下述对C语言字符数组的描述中错误的是 (C ) 。

A.字符数组可以存放字符串

B.字符数组中的字符串可以整体输入、输出

C.可以在赋值语句中通过赋值运算符"=“对字符数组整体赋值

D.不可以用关系运算符对字符数组中的字符串进行比较

解析:

数组只能在初始化的时候进行赋值操作,以后就不能进行赋值操作了

💞💞

7.有如下函数调用语句 f1 (a ,b-c , (d,e) ) ; 该函数调用语句中,含有的实参个数是(A)。 A.3 B.4 C.5 D.有语法错

解析:

(d,e)是一个逗号表达式,它的值为最后一个数的值即e的值。 所以有3个参数。 💞💞

8.以下选项中,与 k=n++完全等价的表达式是(A)。 A) k=n,n=n+1 B) n=n+1,k=n C) k=++n D) k+=n+1

解析:

n是后置++,即先使用n的值,再进行+1操作 即 先把·n的值赋值给k,n再执行+1操作

💞💞

9.当执行下面程序时,如果输入ABC,则输出结果是(A)

#include <stdio.h>

#include <string.h>

int main()

{

char ss[10]=“12345”;

gets(ss);

strcat(ss,“6789”);

printf(”%s\n",ss);

return 0;

}

A.ABC6789

B.ABC67

C.12345ABC6

D.ABC456789

解析:

gets(ss)即是输入字符串 ABC,ABC会把123 的空间占用,后面有一个 ‘\0’ 占用4的空间,所以遇到‘\0’后会自动结束,再进行串连接函数,在‘\0’ 后连接,即是ABC6789‘\0’

💞💞

10.若已定义int a,则表达式(a=10,a+10,a++)的值是(B)

A.20

B.10

C.21

D.11

解析:

逗号表达式,最后一个表达式为值,a++,后面没有赋值语句,所以a还是原来的值。

💞💞

11.以下程序的执行结果是(A)

int i=10, j=10;

printf(“%d,%d\n”,++i,j–);

A.11,10

B.9,10

C.11,9

D.10,9

解析:

++i 是前置加加 先给 i的值进行+1操作,再使用i的值 所以 i=11 j-- 是后置减减 先给使用 j的值,再进行-1操作 所以 j=10

💞💞💞💞💞

填空

1.结构化设计中的三种基本结构是

*顺序,选择,循环

2.定义int x,y;执行 y=(x=1,++x,x+2) ;后,y 的值是

4

3.若有定义int a=12,n=5,则表达式a%=(n%2)运算后, a 的值为

0

解析: 先算括号里面的n%2 结果为1 a=a%1; 所以a=0;

4.在定义int a[5][6]后,第10个元素是

(a[1][3])

解析: a[5][6] 是5行6列的数组 第一行有6个元素 要找第10个元素 a[1][0]是第7个元素 所以a[1][3]是第10个元素

5.设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+ i * f 值的数据 类型为

double

解析: 实型*双精度型 +整形 还是双精度型即为double

<、+、%、!=运算符中优先级最高的是 %

7.字符串"a"在内存中占据的字节个数为

2

解析: 因为是字符串a,所以后面还有一个‘\0’ 所以是两个字节数

8.C语言中的回车换行是

\n

9.要调用输入输出时,在#include命令行中应包含

stdio.h

10.已知字符‘a’的ASCII码为97,执行下列语句的输出是 printf (“%d,%c”,‘b’,‘b’+1);

98,c

解析: 因为a的ASCII码为97 所以字符b的 ASCII码为98 ‘b’+1=99; 用%c的形式输出来,所以会打印字符‘c’

11.警告提示不影响程序正常运行

(正确)

12.程序编译时,需要对注释进行处理。

(错误)

13.C语言中主函数的个数是任意的。

(错误)

解析·: 只能有一个main函数 14.do……while语句执行次数可能为0。

(错误)

解析: 先执行一次,再进行判断是否满足条件

15.C语言中规定,if语句的嵌套结构中,else总是与最近的且尚未配对的if 配对。

(正确)

16.二维数组a可以这样定义inta[][4]

(正确)