C语言程序设计基础单项选择题库

2018-10-22 22:30

131

以下程序段的运行后结果是 char str[] = \

printf(\(A) 6 (B) 12 (C) 3 (D) 4 132

对于定义char c[8] = \和int j,下面的输出函数调用中错误的是 (A) printf(\(B) puts(c); (C) for (j=0; j<8; j++) {

printf(\

} (D) for (j=0; j<8; j++) {

puts(c[j]); } 133

对于定义char a[10] = {0};和int j;,下面输入函数调用中错误的是 (A) scanf(\gets(a); (C) for (j=0; j<9; j++) {

scanf(\

} (D) for (j=0; j<9; j++) {

scanf(\} 134

在C语言中,程序的基本单位是 (A) 函数 (B) 语句 (C) 程序段 (D) 文件 135

在C语言中,程序进行编译的单位是 (A) 语句 (B) 程序段 (C) 函数 (D) 文件 136

在C语言中,若定义函数时对函数类型未加显式说明,则函数的隐含类型为 (A) void` (B) int (C) double (D) char 137

在C语言的函数调用中,如果普通变量作为函数的参数,则调用函数时 (A) 实参和形参共用一个存储单元 (B) 由用户确定是否共用一个存储单元 (C) 实参和形参分别占用一个独立的存储单元 (D) 由计算机系统确定是否共用一个存储单元

138

在C语言的函数调用中,如果普通变量作为函数的实参,则它与对应形参之间的传递方式是 (A) 由实参传递给形参,再由形参传递给实参 (B) 由用户指定传递方式 (C) 单向值传递 (D) 地址传递 139

在C语言的函数调用中,如果数组名作为函数的实参,则传递给形参的是 (A) 数组第一个元素的值 (B) 数组全部元素的值 (C) 数组全部元素的个数 (D) 数组的首地址 140

在C语言中规定,函数返回值的类型由 (A) 定义该函数时所指定的函数类型决定 (B) return语句中的表达式类型决定 (C) 调用该函数的主调函数决定 (D) 调用该函数时系统临时决定 141

函数调用在程序中出现的位置一般有3种方式,下面叙述中错误的是

(A) 函数调用可以出现在表达式中 (B) 函数调用可以作为独立的语句存在 (C) 函数调用可以作为一个函数的实参 (D) 函数调用可以作为一个函数的形参 142

在C语言中,下面关于函数正确的叙述是 (A) 函数可以嵌套定义,也可以嵌套调用 (B) 函数可以嵌套定义,但不可以嵌套调用 (C) 函数不可以嵌套定义,但可以嵌套调用 (D) 函数不可以嵌套定义,也不可以嵌套调用 143

在C语言中,函数调用语句function((a, b, c), (d, e));中参数的个数是 (A) 1 (B) 2 (C) 4 (D) 5

·试题讲评

(a, b, c)和(d, e)分别都是逗号表达式 144

在函数调用中,若funA调用了函数funB,函数funB又调用了函数funA,则 (A) C语言中不允许这样的递归调用 (B) 称为函数的直接递归调用 (C) 称为函数的间接递归调用 (D) 称为函数的循环调用 145

下面叙述中不正确的是

(A) 函数中的形参是函数自己的局部变量 (B) 在不同的函数中可以使用相同名字的变量,它们在内存中占用不同的单元

(C) 在一个函数中定义的变量只在本函数范围内有效 (D) 在一个函数内的复合语句中定义的变量只在本函数范围内有效 ·试题讲评

在一个函数内的复合语句中定义的变量只在本复合语句范围内有效 146

在一个源程序文件中定义的全局变量的作用域为

(A) 从定义该变量的位置开始至本文件结束 (B) 本程序的全部范围 (C) 本文件的全部范围 (D) 本函数的全部范围 147

下面叙述中不正确的是

(A) 函数可以没有形参,可是函数名后的一对括号却不能省略 (B) 在C语言中,不能在一个函数的内部再定义函数

(C) 在没有声明函数返回值类型时,函数返回值的类型默认为int (D) 函数的类型可以是整型、实型、字符型,但不可以是指针型 148

下面程序的输出结果是 #include

int function(int a, int b);

int main(void) {

int x=5, y=3, s;

s = function(x, y); printf(\return 0; }

int function(int a, int b) { return a*a - b*b; } (A) 2 (B) 8 (C) 16 (D) 32 149

下面程序的输出结果是 #include long func(int n);

int main(void) {

printf(\return 0; }

long func(int n) {

if (n > 2) { return func(n-1) + func(n-2); } else { return 1; } }

(A) 5 (B) 6 (C) 7 (D) 8 150

下面程序的输出结果是 #include int zdgys(int x, int y);

int main(void)

{

int a=27, b=15, c;

c = zdgys(a, b); printf(\return 0; }

int zdgys(int x, int y) { int w;

while (y) {

w = x % y; x = y; y = w; } return x; }

(A) 2 (B) 3 (C) 4 (D) 5 151

下面程序的输出结果是 #include

double func(int x, int y, int z);

int main(void) {

double x;

int a=3, b=4, c=5;

x = func(a, b, c); printf(\return 0; }

double func(int x, int y, int z) {

double t;

t = x % y * z; return t; }

(A) 3 (B) 3.000000 (C) 15 (D) 15.000000 152

下面程序的输出结果是

#include int func(void);

int main(void) {

int i, s;

for (i = 0; i < 4; i++) s = func(); printf(\return 0; }

int func(void) {

static int x = 6; x++; return x; }

(A) 7 (B) 8 (C) 9 (D) 10 153

下面程序中应该补充(填写在横线位置)的代码是 #include

int max(int x, int y); //函数功能:求两数中的较大数

int main(void) {

int a, b, c;

scanf(\

c = __________________; printf(\return 0; }

int max(int x, int y) { int z;

if (x > y) z = x; else z = y; return z; }

(A) max(a, b) (B) max(&a, &b);

分类:

一、概念(13---51,54,55)、数据类型、输入输出格式、转义符、运算及表达式等:1 --- 66 二、选择语句:67 --- 72 (其中67为条件运算,72可归于一类); 三、循环语句:73 --- 102 (其中78为输出格式可归于一类) 四、数组:103 --- 133 (其中123 – 125为与数组相关的函数调用) 五、函数调用:134 --- 156 六、文件:157 – 183 七、指针:184 --- 195

八、结构体:196 --- 207(204.205,206为函数调用)

1、在C语言中,最基本的数据类型包括

(A) 整型、实型、字符型 (B) 整型、实型、逻辑型 (C) 整型、字符型、逻辑型 (D) 实型、字符型、逻辑型 2

C语言中整常数的书写形式不能使用的数制形式是 (A) 十进制 (B) 十六进制 (C) 八进制 (D) 二进制 3

字符串常量\包含字符的个数是 (A) 8 (B) 12 (C) 9 (D) 13 4

C语言的标识符只能由字母、数字和下划线三种字符组成,且第一个字符 (A) 必须为下划线 (B) 可以是这三种字符中的任一种 (C) 必须为字母或下划线 (D) 必须为字母 5

下列是用户自定义标识符的是 (A) #x (B) _x (C) 2x (D) int 6

在C语言中,下列常数不能作为常量的是 (A) 0xA3 (B) 068 (C) 5.6E-3 (D) 2e5 7

在C语言中,运算对象必须是整型的运算符是 (A) % (B) >= (C) && (D) = 8

下列表达式与x = (y++)等价的是 (A) x = ++y (B) x = x + 1, y = x (C) x = y, y = y + 1 (D) x += y + 1 9

若定义int x = 17; ,则表达式x++ * 1 / 6的值是 (A) 1 (B) 2 (C) 3 (D) 4 10

如果在一个C语言表达式中有多个运算符,则运算时应该 (A) 只考虑优先级 (B) 只考虑结合性 (C) 先考虑优先级,然后考虑结合性 (D) 先考虑结合性,然后考虑优先级 11在C程序中,下面叙述不正确的是

(A) x和X 是两个不同的变量 (B) 从键盘输入数据时,对整型变量只能输入整型数据,对于实型变量只能输入实型数据

(C) 逗号运算符的优先级最低 (D) 若x、y类型相同,则执行语句y = x,后,将把x的值放入y中,而x的值不变 12

已知字符A的ASCII值为65,若定义int i;,则执行语句i = 'A' + 3.5;后,正确的叙述是 (A) i的值是字符E (B) 语句不合法

(C) i的值是字符A的ASCII值加上3,即68 (D) i的值是字符A的ASCII值加上3.5,即68.5 13

C语言是计算机高级语言,它适合作为系统描述语言,它

(A) 不以用来编写系统软件,可以用来编写应用软件 (B) 不以用来编写系统软件,不可以用来编写应用软件

(C) 可以用来编写系统软件,不可以用来编写应用软件 (D) 可以用来编写系统软件,也可以用来编写应用软件 14

在纸上写好一个C语言程序后,上机运行的基本步骤为

(A) 编辑、连接、编译、运行 (B) 编译、连接、编辑、运行 (C) 编译、编辑、连接、运行 (D) 编辑、编译、连接、运行 15

用C语言等高级语言编写的程序称为 (A) 可执行程序 (B) 编译程序 (C) 目标程序 (D) 源程序 16

一个C语言源程序经过“编译程序”翻译后生成一个二进制代码文件,它的扩展名为 (A) .dat (B) .exe (C) .c (D) .obj 17

通过“连接程序”软件,把C语言目标程序与C语言提供的各种库函数连接起来生成一个文件,它的扩展名为 (A) .exe (B) .dat (C) .obj (D) .c 18

下面叙述中正确的是

(A) 在C语言程序中,要调用的函数必须在main()函数中定义 (B) C语言程序总是从main()函数开始执行

(C) C语言程序总是从第一个函数开始执行 (D) 在C语言程序中,main()函数必须放在程序的开始位置 19

在一个C语言源程序中,main()函数的位置 (A) 必须在其他所有的函数之后 (B) 可以在任意位置 (C) 必须在其他所有的函数之前 (D) 必须在固定位置 20

一个C语言程序由

(A) 若干个过程组成 (B) 若干个子程序组成 (C) 一个主程序和若干个子程序构成 (D) 一个主函数和若干个子函数构成

21一个函数的组成有

(A) 函数的声明部分和执行部分 (B) 函数名、函数类型、函数参数名、函数参数类型 (C) 主函数和子函数 (D) 函数首部和函数体 22

下面叙述不正确的是

(A) 在程序中任意合适的地方都可以加上注释以便阅读 (B) C语言中的每条执行语句都需要用分号结束

(C) include命令所在行后面需要加分号 (D) C语言具有高级语言的功能,也具有低级语言的一些功能 23

下面叙述正确的是

(A) 在C程序中,main()函数的位置必须在其他所有的函数之前 (B) C语言自身没有输入输出语句

(C) 在C程序的编译过程中可以发现注释中的拼写错误 (D) C程序的每一行只能写一条语句 24

在C语言中,用来表示“取地址”的符号是 (A) $ (B) # (C) @ (D) & 25

在C语言中,用于结构化程序设计的三种基本结构是 (A) 顺序结构、选择结构、转移结构 (B) 顺序结构、条件结构、循环结构 (C) 顺序结构、选择结构、重复结构 (D) 顺序结构、选择结构、循环结构 26

一个算法应具有“确定性”等5个特性,则对另外4个特性描述错误的是 (A) 有效性 (B) 有穷性 (C) 有零个或多个输入 (D) 有零个或多个输出 27

程序设计一般可以简化为以下4个步骤,其中首先应该完成的是 (A) 调试并运行程序 (B) 编写程序 (C) 建立数学模型 (D) 设计数据结构和算法 28

以下不正确的C语言标识符是 (A) ab.c (B) a_bc (C) abc (D) ABC 29

以下正确的C语言标识符是 (A) a+b (B) test! (C) _123 (D) %x 30

编辑程序的功能是

(A) 命令计算机执行指定的操作 (C) 将C源程序编译成目标程序

(B) 调试程序

(D) 建立并修改程序

31 C语言程序的基本单位是 (A) 过程 (B) 函数 (C) 子程序 (D) 标识符 32

下列说法中错误的是

(A) 主函数可以分为两部分:主函数首部和主函数体 (B) 主函数可以调用任何非主函数的其它函数

(C) 任何非主函数可以调用其它任何非主函数 (D) 程序可以从任何非主函数开始执行 33

在下列数据中属于“字符串常量”的是 (A) ABC (B) \ (C) 'abc' (D) 'a' 34

在C语言中,字符'\\n'在内存占用的字节数是 (A) 1 (B) 2 (C) 3 (D) 4 35

字符串\在内存占用的字节数是 (A) 3 (B) 4 (C) 6 (D) 8

·试题讲评

编译字符串\时,编译器会自动加上字符串结束标志'\\0',因此字符串\占用的内存为4个字节。 36

在C语言中,合法的长整型常数是 (A) 0L (B) 4321

(C) 0.07654321 (D) 2.3456e10

·试题讲评

4321在C语言中默认为是int型数据,数据后加L或l表示该数的类型为长整型。 37

char型常量在内存中存放的是 (A) ASCII值 (B) BCD码值

(C) 内码值 (D) 十进制代码值 38

设m, n, a, b, c, d均为0,执行(m = a == b) || (n = c == d)后,m,n的值是 (A) 0,0 (B) 0,1 (C) 1,0 (D) 1,1 ·试题讲评

(1)在C语言中,“||”表示逻辑或,“&&”表示逻辑与。 (2)对于“m = (表达式a) || (表达式b)”,若“表达式a”为真或“表达式b”为真,则m为真。特别指出,若“表达式a”为真,则m的值肯定为真(无论“表达式b”的结果是否为真),在C语言中,为提高运算速度,此时就不再去执行“表达式b”。 (3)对于“m = (表达式a) && (表达式b)”,若“表达式a”为假或“表达式b”为假,则m为假。特别指出,若“表达式a”为假,则m的值肯定为假(无论“表达式b”的结果如

111

如果有语句:char a[] = \,则下面叙述中正确的是 (A) 数组a的长度大于数组b的长度 (B) 数组a的长度等于数组b的长度 (C) 数组a的长度小于数组b的长度 (D) 数组a和数组b二者等价 112

若定义str1、str2、str3为字符串,则语句strcat(strcpy(str1, str2), str3);的功能是

(A) 把字符串str1连接到字符串str2中再把字符串str2复制到字符串str3之后 (B) 把字符串str1复制到字符串str2中再把字符串str2连接到字符串str3之后

(C) 把字符串str2连接到字符串str1之后再把字符串str3复制到字符串str1中 (D) 把字符串str2复制到字符串str1中再把字符串str3连接到字符串str1之后 113

下面叙述中错误的是

(A) 对于实型数组,不可以直接用数组名对数组进行整体的输入或输出 (B) 对于字符型数组,可以直接用数组名对数组进行整体输入或输出

(C) 对于字符型数组,可以用来存放字符串 (D) 对于字符型数组,可以在赋值语句中运用运算符“=”进行整体赋值 114

若有以下语句,各选项中数值为4的表达式是 int a[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; char c = 'a', d, g;

(A) a[g-c] (B) a[4] (C) a['d' - 'c'] (D) a['d' - c] 115

假设int型变量占4个字节的存储单元,对于如下定义,数组x在内存中所占字节数为 int x[10] = {0, 2, 4}; (A) 4 (B) 12 (C) 20 (D) 40 116

以下程序段的输出结果是 int j;

int x[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};

for (j=0; j<3; j++) {

printf(\}

(A) 3 5 7 (B) 3 6 9 (C) 1 5 9 (D) 1 4 7 117

以下程序段运行后的输出结果是 int n[3], t, j, k;

for (t=0; t<3; t++) {

n[t] = 0; } k = 2;

for (t=0; t

for (j=0; j<3; j++) { n[j] = n[t] + 1; } }

printf(\(A) 0 (B) 1 (C) 2 (D) 3 118

以下程序段运行后的输出结果是

int p[7] = {11, 13, 14, 15, 16, 17, 18}, i=0, k=0;

while (i<7 && p[i]%2) {

k = k + p[i]; i++; }

printf(\(A) 58 (B) 56 (C) 45 (D) 24 119

以下程序段运行后的输出结果是 int m[][3] = {1, 4, 7, 2, 5, 8, 3, 6 ,9}; int i, k=2;

for (i=0; i<3; i++) {

printf(\}

(A) 3 6 9 (B) 4 5 6 (C) 2 5 8 (D) 7 8 9 120

下列选项中正确的语句是

(A) char *s; s = \ (B) char *s; s = {\(C) char s[8]; s = \(D) char s[8]; s = {\121

以下代码段执行后,b中的值是:2960

int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p = &a[3], b; b = p[5];

(A) 5 (B) 6 (C) 8 (D) 9 122

以下程序段运行后的输出结果是 char a[]=\

printf(\(A) 7 7 (B) 8 8 (C) 8 10 (D) 10 10 123

下列程序运行后的输出结果是 #include void swap1(int c[]);

void swap2(int c0, int c1);

int main(void) {

int a[2]={3, 5}, b[2]={3, 5};

swap1(a); swap2(b[0], b[1]);

printf(\return 0; }

void swap1(int c[]) { int t;

t = c[0]; c[0] = c[1]; c[1] = t; }

void swap2(int c0, int c1) { int t;

t = c0; c0 = c1; c1 = t; }

(A) 5 3 3 5 (B) 5 3 5 3 (C) 3 5 3 5 (D) 3 5 5 3 124

下列程序运行后的输出结果是 #include void sort(int a[], int n);

int main(void) {

int aa[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, i;

sort(aa, 10);

for (i=0; i<10; i++) printf(\printf(\return 0; }

void sort(int a[], int n) {

int i, j, t;

for (i=0; i

if (a[i] < a[j]) { t = a[i]; a[i] = a[j]; a[j] = t; } }

(A) 9 2 7 4 5 6 3 8 1 10 (B) 1 2 3 4 5 6 7 8 9 10 (C) 10 9 8 7 6 5 4 3 2 1 (D) 1 10 3 8 5 6 7 4 9 2 125

下列程序运行后的输出结果是 #include

void f(int a[], int i, int j);

int main(void) {

int i, aa[5] = {1, 2, 3, 4, 5};

f(aa, 0, 4);

for(i=0; i<5; i++) printf(\return 0; }

void f(int a[], int i, int j) { int t;

if (i < j) {

t = a[i]; a[i] = a[j]; a[j] = t; f (a, i+1, j-1); } }

(A) 5,4,3,2,1, (B) 1,2,3,4,5, (C) 5,4,3,2,1 (D) 5,2,3,4,1

126

以下程序段运行后的输出结果是 char ch[3][5] = {\

printf(\(A) \(B) \ (C) \(D) \127

以下程序段运行后的输出结果是

int b[3][3] = {0, 1, 2, 0, 1, 2, 0, 1, 2}, i, j, t=1;

for (i=0; i<3; i++) {

for (j=i; j<=i; j++) {

t += b[i][b[j][j]]; } }

printf(\(A) 4 (B) 3 (C) 9 (D) 1 128

以下程序段运行后的输出结果是

int aa[4][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {3, 9, 10, 2}, {4, 2, 9, 6}}; int i, s=0;

for (i=0; i<4; i++) {

s += aa[i][1]; }

printf(\(A) 19 (B) 20 (C) 11 (D) 13 129

以下程序段的运行结果是: char s[10], s=\

printf(\(A) abcd (B) a (C) ab cd (D) 编译不通过 130

对于定义char s[] = \,字符串s所占字节数是 (A) 16 (B) 14 (C) 15 (D) 19

(A) 0,1 (B) 1,1 (C) 2,1 (D) 3,2 73

下列语句中,错误的是

(A) while (x = y) 5; (B) do x++ while (x == 10); (C) while (0) ; (D) do 2; while (a == b); 74

若有整型变量i,j,则以下程序段中内循环体“printf(\”的循环次数为 for (i=5; i; i--) {

for (j=0; j<4; j++) { printf(\ } }

(A) 20 (B) 24 (C) 25 (D) 30 75

假定a和b为int型变量,则执行以下语句后b的值为 a = 1; b = 10; do {

b -= a; a++;

} while (b-- < 0); (A) 9 (B) 8 (C) -2 (D) -1 76

循环语句“for (x=0, y=0; (y!=123)) || (x<4); x++) ;”的循环次数为 (A) 无限次 (B) 不确定 (C) 4次 (D) 3次 77

在C语言中,下列说法中正确的是

(A) 不能使用“do 语句 while (条件);”的循环 (B) “do 语句 while (条件);”的循环中,当条件为非0时结束循环

(C) “do 语句 while (条件);”的循环中,当条件为0时结束循环 (D) “do 语句 while (条件);”的循环必须使用break语句退出循环 78

下述程序代码段输出的结果是 int k = 11;

printf(\

(A) k=11,k=13,k=b (B) k=11,k=12,k=11

(C) k=11,k=13,k=13 (D) k=11,k=013,k=0xb

79

以下程序段中,while循环的循环次数是 int i = 0;

while (i < 10) {

if (i < 1) { continue; } if (i == 5) { break; } i++; }

(A) 死循环,无限次 (B) 1 (C) 6 (D) 10 80

设x和y均为int型变量,则执行下面的循环后y的值为 for (y=1, x=1; y<=50; y++) {

if (x >= 10) { break; } if (x % 2 == 1) {

x += 5; continue; }

x -= 3; }

(A) 2 (B) 4 (C) 6 (D) 8

81设i,j,k均为整型变量,则执行如下语句后,k的值为 for (i=0, j=10; i<=j; i++, j--) {

k = i + j; }

(A) 8 (B) 9 (C) 10 (D) 11 82

以下程序段的输出结果是2903 int a=0, i;

for (i=1; i<5; i++) {

switch(i) { case 0: case 3:

case 1: case 2:

default:

} }

printf(\(A) 31 (B) 13 (C) 10 (D) 20 83

以下程序段的输出结果是 int i=0, a=0;

while (i < 20) {

for (; ;) { if (i % 10 == 0)

{ break;

} else

{ i--;

} }

i += 11; a += i; }

printf(\(A) 21 (B) 32 (C) 33 (D) 11 84

a += 2; a += 3; a += 5; 以下程序段的输出结果是 int a, b;

for (a=1, b=1; a<=100; a++) {

if (b >= 10) { break; } if (b % 3 == 1) {

b += 3; continue; } }

printf(\(A) 101 (B) 6 (C) 5 (D) 4 85

以下程序段中,while循环执行的次数是 int k =0;

while (k = 1) { k++; }

(A) 无限次 (B) 有语法错误,不能执行 (C) 一次也不执行 (D) 执行一次 86

以下程序段执行后,输出结果是 int i, sum=0;

for (i=1; i<6; i++) {

sum += i; }

printf(\(A) 15 (B) 14 (C) 不确定 (D) 0 87

以下程序段的输出结果是 int x = 3; do

{

printf(\} while (!(--x)); (A) 1 (B) 3 0 (C) 1 -2 (D) 死循环 88

以下程序段的输出结果是 int x=10, y=10, i;

for (i=0; x>8; y=i) {

printf(\}

(A) 10 10 9 0 (B) 10 1 9 2 (C) 9 8 7 6 (D) 10 9 9 0 89

以下程序段的输出结果是 int i;

for (i=1; i<=6; i++) {

if (i % 2) { printf(\continue; } printf(\}

(A) #*#*#* (B) ##### (C) ***** (D) *#*#* 90

以下程序段的输出结果是 int i;

for (i='A'; i<='I'; i++) {

printf(\}

(A) abcdefghi (B) aceg (C) acegi (D) 编译不通过,无输出

91以下程序段执行时,如果从键盘输入china#后回车,则输出结果为 int v1=0, v2=0; char ch;

while((ch=getchar()) != '#') {

switch (ch) { case 'a': case 'h': default: v1++; case '0': v2++;

} }

printf(\(A) 2,0 (B) 5,0 (C) 5,5 (D) 2,5 92

以下程序段的输出结果是 int i, j, x=0;

for (i=0; i<2; i++) { x++;

for (j=0; j<3; j++) { if (j % 2)

{ continue;

} x++;

} x++; }

printf(\(A) x=4 (B) x=8 (C) x=6 (D) x=12 93

假定a和b为int型变量,则执行以下语句后b的值为 a=1, b=10; do {

b -= a; a++;

} while (b-- < 0); (A) 9 (B) -2 (C) -1 (D) 8 94

设j为int型变量,则下面for循环语句的执行结果是 for (j=10; j>3; j--) {

if (j % 3) { j--;

} --j; --j; printf(\}

(A) 6 3 (B) 7 4 (C) 6 2 (D) 7 3 95

以下程序段的输出结果是int x, i;

for (i=1; i<=50; i++) {

x = i; if (x % 2 == 0) { x++;

if (x % 3 == 0)

{ x++;

if (x % 7 == 0)

x++;

printf(\

} } }

(A) 26 (B) 27 (C) 28 (D) 42 96

以下程序段的输出结果是int i, m=0, n=0, k=0;

{ }

for (i=9; i<=11; i++) {

switch (i / 10) { case 0: m++; n++; break; case 10: n++; break; default: k++; n++;

} }

printf(\(A) 1 3 2 (B) 1 2 2 (C) 2 3 4 (D) 1 3 4 97

以下程序段的输出结果是 int s, i;

for (s=0, i=1; i<3; i++, s+=i) ; printf(\(A) 4 (B) 5 (C) 6 (D) 7 98

以下程序段的输出结果是 int i=10, j=0; do {

j = j + i; i--;

} while (i > 2); printf(\(A) 52 (B) 25 (C) 54 (D) 48 99

以下程序段运行时,如果从键盘输入1298再回车,则输出结果为 int n1, n2;

scanf(\while (n2 != 0) {

n1 = n2 % 10; n2 = n2 / 10; printf(\}

(A) 8921 (B) 1298 (C) 1 (D) 9 100

以下程序段的输出结果是 int x=0, y=5, z=3;

while (z-- > 0 && ++x < 5) { y--; }

printf(\(A) 3,2,-1 (B) 3,2,1 (C) 2,2,2 (D) 3,2,0

101 以下程序段的输出结果是 int k, s;

for (k=0, s=0; k<10; k++) {

if (s > k) { break; } else

{

s += k; } }

printf(\(A) k=4,s=6 (B) k=6,s=6 (C) k=4,s=7 (D) k=4,s=4 102

以下程序段运行时,若输入c2470f?再回车,则输出结果是 char ch;

long number = 0;

while ((ch = getchar()) < '0' || ch > '6'); while (ch!= '?' && ch >= '0' && ch <= '6')

{

number = number * 7 + ch - '0'; printf(\ch= getchar(); }

(A) 2#18# (B) 2402#18# (C) 22#1818# (D) # 103

在C语言中,数组名代表的是 (A) 数组中全部元素的个数 (B) 数组中第一个元素的值 (C) 数组中全部元素的值 (D) 数组的首地址 104

下面叙述中错误的是

(A) 同一个数组中的每一个元素都属于同一个数据类型 (B) 对于实型数组,不可以直接用数组名对数组进行整体的输入或输出

(C) 数组名代表数组所占存储区的首地址,其值不可以改变 (D) 在程序运行时,如果数组元素的下标超出了所定义的下标范围,系统将给出“下标越界”的出错信息 105

如果有语句:int x[3][2];,则下面能正确引用数组元素的选项是 (A) x[0][2] (B) x[1][2] (C) x[2][1] (D) x[2][2] 106

如果有语句:int x; char y[6];,则下面正确的输入语句是 (A) scanf(\(B) scanf(\

(C) scanf(\(D) scanf(\107

下面能正确定义一维数组的选项是 (A) int num[]; (B) int num[0...50]; (C) int N = 50, num[N]; (D) #define N 50 int num[N];

·试题讲评

数组长度不能为变量。 108

下面不能正确定义二维数组的选项是 (A) int a[2][] = {{1, 2}, {3, 4}}; (B) int a[][2] = {1, 2, 3, 4}; (C) int a[2][2] = {{1}, {2}}; (D) int a[2][2] = {{1}, 2, 3}; 109

如果有定义:int a[2][2] = {0, 1, 2, 3};,则a数组的各个元素分别为

(A) a[0][0]=0, a[0][1]=1, a[1][0]=2, a[1][1]=3 (B) a[0][0]=0, a[0][1]=2, a[1][0]=1, a[1][1]=3 (C) a[0][0]=3, a[0][1]=2, a[1][0]=1, a[1][1]=0 (D) a[0][0]=3, a[0][1]=1, a[1][0]=2, a[1][1]=0 110

下面能正确定义一维数组的选项是

(A) int a1[] = \(B) int a2[5] = {1, 2, 3, 4, 5, 6}; (C) char a3 = {\ (D) char a4[] = {1, 2, 3, 4, 5, 6};

(C) max(x, y) (D) int max(int a, int b) 154

下面程序中应该补充(填写在横线位置)的代码中,有错的是 #include

______________________________

int main(void) {

int a, b, c;

scanf(\printf(\return 0; }

//函数功能:求两数中的较大数 int min(int x, int y) { int z;

z = x

(A) int min(int x, int y); (B) int min(int x, int y) (C) int min(int, int); (D) min(int x, int y); 155

下面程序的输出结果是 #include

int x1=30, x2=40; void sub(int x, int y);

int main(void) {

int x3=10, x4=20;

sub(x3, x4); sub(x2, x1);

printf(\return 0; }

void sub(int x, int y) {

x1 = x; x = y; y = x1;

}

(A) 10,20,40,40 (B) 20,10,40,30 (C) 20,10,40,40 (D) 10,20,30,40 156

下面程序的输出结果是 #include void increment(void);

int main(void) {

increment(); increment(); increment(); return 0; }

void increment(void) {

int x = 0;

x += 1; printf(\}

(A) 1 1 1 (B) 1 2 3 (C) 1 (D) 3 3 3 157

在C语言中,下面关于文件的存取方式正确的叙述是 (A) 只能从文件的开头存取 (B) 可以顺序存取,但不可以随机存取

(C) 不可以顺序存取,但可以随机存取 (D) 可以顺序存取,也可以随机存取 158

下列关于C语言数据文件的叙述中正确的是

(A) 文件由ASCII码字符序列组成,C语言只能读写文本文件 (B) 文件由二进制数据序列组成,C语言只能读写二进制文件

(C) 文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件 (D) 文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 159

在C语言中,读写操作时需要进行转换的文件是 (A) 二进制文件 (B) 文本文件

(C) 二进制文件和文本文件都需要转换 (D) 二进制文件和文本文件都不需要转换 160

在C语言中,下面关于文件操作正确的叙述是

(A) 对文件操作时,必须先检查文件是否存在,然后再打开文件 (B) 对文件操作时需要先打开文件

(C) 对文件操作时需要先关闭文件 (D) 对文件操作时打开和关闭文件的顺序没有要求 161

为了进行写操作而打开二进制文件wr.dat的正确写法是

(A) fp = fopen(\(B) fp = fopen(\

(C) fp = fopen(\(D) fp = fopen(\ 162

下面的语句中,将fp定义为文件型指针的是 (A) file fp; (B) file *fp; (C) FILE fp; (D) FILE *fp; 163

以下要作为fopen函数中第一个参数的正确格式是 (A) \(B) \(C) \(D) \ ·试题讲评

字符常量反斜线(\\)的书写形式是'\\\\'(转义符方式) 164

若执行fopen函数时发生错误,则函数的返回值是 (A) 0(NULL) (B) 1

(C) -1(EOF) (D) 地址值 165

当顺利执行了文件关闭操作时,fclose函数的返回值是 (A) -1 (B) 1 (C) TRUE (D) 0 166

如果不能实现文件“打开”的任务,fopen函数将会带回一个出错信息。以下对出错原因描述错误的是

(A) 用\方式打开一个并不存在的文件 (B) 磁盘出故障

(C) 磁盘已满无法建立新文件 (D) 用\方式打开文件时,没有先建立文件 167

在C语言中,标准库函数fread(buf, size, count, fp)中参数buf的含义是

(A) 一个指针,指向要读入数据的存放地址 (B) 一个文件指针,指向要读的文件 (C) 一个整型变量,代表要读入的数据总数 (D) 一个存储区,存放要读的数据项 ·试题讲评

size:要读写的字节数;count:要读写多少个数据项(每个数据项的长度为size)。 168

在C语言中,标准库函数fwrite(buf, size, count, fp)的功能是

(A) 从buf所指向的文件中读取长度为size的count个数据项存入fp起始的内存 (B) 从fp所指向的文件中读取长度为size的count个数据项存入buf起始的内存

(C) 把buf起始的内存中长度为size的count个数据项输出到fp所指向的文件中 (D) 把fp起始的内存中长度为size的count个数据项输出到buf所指向的文件中 169

下面程序的功能是 #include #include int main(void) {

FILE *fp1, *fp2;

fp1 = fopen(\if (NULL == fp1) {

printf(\ exit(1); }

fp2 = fopen(\if (NULL == fp2) {

printf(\ fclose(fp1); exit(2); }

while(!feof(fp1)) fputc(fgetc(fp1), fp2);

printf(\ fclose(fp1); fclose(fp2); return 0; }

(A) 将c盘xxx子目录下file.c文件复制到d盘xxx子目录下file.c文件中 (B) 将d盘xxx子目录下file.c文件复制到c盘xxx子目录下file.c文件中

(C) 将c盘根目录下file.c文件复制到d盘xxx子目录下file.c文件中 (D) 将c盘xxx子目录下file.c文件复制到d盘根目录下file.c文件中 170

当已存在一个abc.txt文件时,执行函数fopen(\的功能是

(A) 打开abc.txt文件,清除原有的内容 (B) 打开abc.txt文件,只能写入新的内容

(C) 打开abc.txt文件,只能读取原有内容 (D) 打开abc.txt文件,可以读取和写入新的内容 171

fopen(filename, mode)函数的mode取值\和\时,它们之间的差别是

(A) \可向文件输入,\不可向文件输入 (B) \不可向文件输入,\可向文件输入 (C) \不可由文件输出,\可由文件输出 (D) 文件不存在时,\建立新文件,\出错 172

若用fopen函数打开一个新的二进制文件,该文件可以读也可以写,则文件打开模式是 (A) \(B) \\(C) \(D) \·试题讲评 \:为了读和写,打开一个二进制文件,若指定文件不存在则出错;\:为了读和写,打开一个新的二进制文件,若指定文件不存在,则建立新文件。 173

fread(buf, 64, 2, fp)的功能是

(A) 从fp文件流中读出整数64,并存放在buf中 (B) 从fp文件流中读出整数64和2,并存放在buf中

(C) 从fp文件流中读出64字节的字符,并存放在buf中 (D) 从fp文件流中读出2个64字节的字符,并存放在buf中 174

以下程序的功能是

#include #include int main(void) {

FILE *fp; char str[] = \

fp = fopen(\if (NULL == fp) {

printf(\ exit(1); }

fputs(str, fp); fclose(fp); return 0; }

(A) 在屏幕上显示HELLO (B) 在打印机上打印出HELLO (C) 把HELLO存入CON文件中 (D) 都不对

..作为输出设备时,CON是标准输出设备显示器的文件名,是dos的保留字。 175

C语言中文件的格式化输入输出函数对是 (A) fscanf/fprintf (B) fread/fwrite (C) fgets/fputs (D) fgetc/fputc 176

C语言中文件的数据块输入输出函数对是 (A) fread/fwrite (B) fscanf/fprintf (C) fgetc/fputc (D) fgets/fputs 177

feof(fp)函数用来判断文件是否结束,如果未遇到文件结束,函数值为 (A) 0 (B) 1 (C) 非零 (D) false 178

fgetc函数的作用是从指定文件读入一个字符,关于对应文件的打开方式,不正确的是 (A) 只读 (B) 只写 (C) \(D) 读写 179

若调用fputc函数输出字符成功,则其返回值是 (A) 0 (B) 1

(C) EOF (D) 输出的字符 180

fseek函数的功能是

(A) 改变文件位置的指针位置(即下一次读写操作从文件的什么位置开始) (B) 使文件位置指针重新置于文件开头

(C) 返回文件位置指针的当前值 (D) 关闭文件 181

以下程序的功能是 #include #include int main(void) {

FILE *fp; char ch;

fp = fopen(\

if (NULL == fp) { printf(\ exit(1); }

while ((ch=getchar()) != '@') {

fputc(ch ,fp); putchar(ch); }

fclose(fp); return 0; }

(A) 把从键盘输入的字符依次输出到名为filename.txt的磁盘文件中(用@作为输入结束标志),同时在屏幕上显示这些字符。 (B) 把从键盘输入的字符依次输出到名为filename.txt的磁盘文件中(用@作为输入结束标志)。

(C) 把从键盘输入的字符输出到屏幕(用@作为输入结束标志)。 (D) 从名为filename.txt的磁盘文件中读入字符(用@作为输入结束标志),并在屏幕上显示这些字符。 182

下面程序的功能是将数组str的4个元素写到名为filename.dat的二进制文件中。程序中需要补充的语句是 #include #include int main(void) {

FILE *fp; char str[] = \

fp = fopen(\

if (NULL == fp) { printf(\ exit(1); }

____________________________ fclose(fp); return 0; }

(A) fwrite(str, sizeof(char), 4, fp); (B) fwrite(fp, sizeof(char), 4, str); (C) fread(str, sizeof(char), 4, fp); (D) fwrite(str[0], sizeof(char), 1, fp); 183

下面的程序执行后,文件file.txt中的内容是 #include #include #include

void fun(char *fname, char *st); int main(void) {

fun(\ fun(\return 0; }

void fun(char *fname, char *st) {

FILE *fp; int len, i;

fp = fopen(fname, \

if (NULL == fp) { printf(\ exit(1); }

len = strlen(st);

for (i=0; i

(A) Fine, thank you! (B) How are you!Fine, thank you! (C) How are you! (D) file.txt 184

在C语言中,一个变量的指针就是 (A) 变量的名称 (B) 变量的地址 (C) 变量的类型 (D) 变量的值 ·试题讲评

变量的指针即变量的地址,是指变量所占内存单元的首地址。 185

如果已经定义int x;,则对指针变量pointer进行说明和初始化正确的是 (A) int pointer = x; (B) int pointer = &x;

(C) int *pointer = &x; (D) int *pointer = *x; 186

如果已经定义int x, *pointer;,则下面赋值语句正确的是 (A) pointer = &x; (B) pointer = x; (C) *pointer = &x; (D) *pointer = *x; 187

即使两个指针变量的类型相同,它们也不能 (A) 相减 (B) 相加 (C) 比较 (D) 指向同一地址 188

在C语言中,对变量的访问方式是

(A) 能直接访问,能间接访问 (B) 能直接访问,不能间接访问 (C) 不能直接访问,能间接访问 (D) 不能直接访问,不能间接访问 189

在C程序说明语句int (*pointer)[5]; 中,pointer表示的是一个

(A) 指向整型变量的指针 (B) 指针数组的名字,包含5个指向整型数据的指针 (C) 指向包含5个整型元素的一维数组的指针 (D) 指向函数的指针 190

在C程序说明语句int *pointer[5]; 中,pointer表示的是一个

(A) 指向整型变量的指针 (B) 指针数组的名字,包含5个指向整型数据的指针 (C) 指向包含5个整型元素的一维数组的指针 (D) 指向函数的指针 191

在C程序说明语句int (*pointer)();中,pointer表示的是一个 (A) 指向整型变量的指针 (B) 指向数组的指针

(C) 返回值为指针的函数名字 (D) 指向函数的指针,函数返回值为一个整数 192

在C程序说明语句int *pointer();中,pointer表示的是一个 (A) 指向整型变量的指针 (B) 指向数组的指针

(C) 返回值为指针(指向的对象为int)的函数名字 (D) 指向函数的指针,函数返回值为一个整数 193

设有定义int a=3, b, *p=&a;,则下列语句表达有错的是 (A) b = *a; (B) b = *&a; (C) b = *p; (D) b = a;

·试题讲评

a不是指针变量,不能使用指针运算符*。 194

若有说明int i, j=7, *p=&i;,则与i = j;等价的语句是 (A) i = p; (B) *p = j;

(C) p = &j; (D) *p = &j; 195

若有说明int a[10], *p=a;,则对数组元素引用不正确的是 (A) *(a + 2) (B) p[2] (C) *(p + 2) (D) p + 2 196

若有如下说明语句,则下面叙述中不正确的是 struct student {

long num;

char name[20]; char sex; int age; } stu;

(A) struct是结构体类型关键字 (B) struct student是结构体类型

(C) num,name,sex,age都是结构体成员名 (D) stu是结构体类型名 197

若有如下说明语句,则定义了 union student {

long num;

char name[20]; char sex; int age; } ;

(A) 结构体类型 (B) 结构体变量 (C) 共用体类型 (D) 共用体变量 198

当定义一个结构体变量时,系统分配给它的内存空间字节数是

(A) 各成员所需内存字节数的总和 (B) 结构体中第一个成员所需内存字节数 (C) 结构体中最后一个成员所需内存字节数 (D) 成员中占内存字节数最大的 199

有以下三种形式可供选择,则为了表示结构体变量中的成员,各选项中叙述正确的是 1、结构体变量.成员名

2、(*结构体指针变量).成员名 3、结构体指针变量->成员名 (A) 只能用1或2表示 (B) 只能用1或3表示 (C) 只能用2或3表示 (D) 三种形式均可 200

以下程序在VC6.0下运行后的输出结果为 #include

struct dt {

char a[4]; int b; double c; } data;

int main(void) {

printf(\

return 0; }

(A) 4 (B) 8 (C) 16 (D) 3 201

若有以下定义,则对变量student1中“生日”的正确赋值方式是

struct student {

int num;

char name[20], sex; struct {

int year, month, day; } birthday; } ;

struct student student1;

(A) student1.birthday.year = 2003; student1.birthday.month = 5;

student1.birthday.day = 1; (B) year = 2003; month = 5; day = 1;

(C) birthday.year = 2003; birthday.month = 5;

birthday.day = 1; (D) student1.year = 2003; student1.month = 5; student1.day = 1; 202

若有以下定义,则下面各输出语句中能输出字母J的是 struct student {

int num;

char name[20]; } ;

struct student school[10000] = {{1001, \(A) printf(\(B) printf(\ (C) printf(\(D) printf(\203

若有以下定义,则下面各输入语句中不正确的是 struct student {

int num;

char name[20]; char sex; float score;

} student1, *p = &student1;

(A) scanf(\(B) scanf(\ (C) scanf(\(D) scanf(\204

以下程序的输出结果是: #include

struct student {

int num; float score; } ;

void fun(struct student tmp); int main(void) {

struct student stu[2] = {{1001,650}, {1002,550}}; fun(stu[0]);

printf(\return 0; }

void fun(struct student tmp) {

struct student stu[2] = {{1003, 450}, {1004, 250}}; tmp.num = stu[1].num; }

(A) 1001, 650 (B) 1002, 550 (C) 1004, 650 (D) 1004, 250 205

以下程序的输出结果是: #include

struct student {

int num; float score; char name[20]; } ;

void fun(struct student *p); int main(void) {

struct student stu[2] = {{1003, 450, \fun(stu);

printf(\return 0; }

void fun(struct student *p) {

struct student stu[2] = {{1001,650, \ *q=stu; ++q; *p = *q; }

(A) 1002,550,Li (B) 1004,250,Tao (C) 1001,650,He (D) 1003,450,Liu 206

以下程序的输出结果是: #include

struct student {

long num; char name[10]; int age; } ;

void func(struct student *p); int main(void) {

struct student stu[3] = {{1101, \func(stu + 1); return 0; }

void func(struct student *p) { printf(\(A) Tao (B) Liu (C) Xu (D) 11102 207

以下程序的输出结果是: #include

struct student {

int num; int *q; } ;

int main(void) {

int age[3] = {16, 17, 18};

struct student stu[3] = {{1001, &age[0]}, {1003, &age[1]}, {1005, &age[2]}}; struct student *p = stu;

printf(\return 0; }

(A) 1003,17 (B) 1001,16 (C) 1005,18 (D) 1003,16


C语言程序设计基础单项选择题库.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:学习2018年全国两会心得体会word范本参考

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

马上注册会员

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