式“10 < a < 15”的结果始终为真。
50
表达式17 % 4 / 8的值是
(A) 0 (B) 1
(C) 2 (D) 3
51下列说法正确的是2834
(A) 在执行C程序时不是从main()函数开始 (B) C语言程序书写格式限制严格,一行内只
能写一条语句
(C) C语言程序书写格式比较自由,一条语句可以分写在多行上 (D) C语言程序书写格式
严格,要求一行内必须写一条语句,并要有行号
52
逻辑运算符两侧运算对象的数据类型
(A) 只能是0或1 (B) 只能是0或非0正数
(C) 可以是正数或字符型数据 (D) 是逻辑型
53
若有代数式3ae/(bc),则错误的C语言表达式为
(A) a / b / c * e * 3 (B) 3 * a * e / b / c
(C) 3 * a * e / b * c (D) a * e / c / b * 3
54
用C语言编写的代码程序
(A) 可立即执行 (B) 是一个源程序
(C) 经过编译即可执行 (D) 经过编译解释才能执行
55
以下叙述中正确的是
(A) C语言的源程序不必通过编译就可以直接运行 (B) C语言中的每条可执行语句最终都
将被转换成二进制的机器指令
(C) C源程序经编译形成的二进制代码可以直接运行 (D) C语言中的函数不可以单独进
行编译
56
以下关于if语句的错误描述是
(A) 条件表达式可以是任意的表达式 (B) 条件表达式只能是关系表达式或逻辑表达式
(C) 条件表达式的括号不能省 (D) 与else配对的if语句是其之前最近的未配对的if语句
57
若变量x、y、z被定义为float型,通过语句scanf("%f%f%f", &x, &y, &z);给x输入15.0,给y
输入25.0,给z输入35.0,下列输入形式不正确的是
(A) 15 25 35 (B) 15 25 35
(C) 15.0 25.0 35.0 (D) 15.0,25.0,35.0
58
若变量x、y被定义为float型,通过语句scanf("x=%f,y=%f", &x, &y);给x输入1.23,给y输入
1.26,下列输入形式正确的是
(A) x=1.23,y=1.26 (B) 1.23,1.26
(C) 1.23 1.26 (D) x=1.23 y=1.26
59
若变量a、b、c被定义为int型,从键盘给他们输入数据,正确的输入语句是
(A) scanf("%d%d%d", &a, &b, &c); (B) scanf("%d%d%d", a, b, c);
(C) scanf("%f%f%f", &a, &b, &c); (D) input a, b, c;
60
若定义float a;,要从键盘给a输入数据,其整数位为3位,小数位为2位,则选用
(A) scanf("%f", &a); (B) scanf("%f", a);
(C) scanf("%6.2f", &a); (D) scanf("%6.2f", a);
61对于以下程序代码段,叙述正确的是
char c1='D', c2='d';
printf("%cn", (c1,c2));
(A) 缺少一个格式说明符,编译出错 (B) 程序运行时产生出错信息
(C) 程序输出大写字母D (D) 程序输出小写字母d
62
下面程序代码段输出的结果是
int x=2, y=5;
printf("%fn", (float)(x / y));
(A) 0.000000 (B) 0
(C) 0.40000 (D) 0.4
63
当输入数据形式为“25,13,10”时,下面程序代码段输出的结果是
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
printf("a+b+c=%dn", a+b+c);
(A) a+b+c=48 (B) a+b+c=35
(C) a+c=48 (D) 随机数
64
以下说法正确的是
(A) 输入项可以为一个实型常量,如scanf("%f", 3.5); (B) 只有格式控制,没有输入项,也
能进行正确输入,如scanf("a=%d,b=%d");
(C) 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f", &x);
(D) 当输入数据时,必须指明变量的地址,如scanf("%f", &x);
65
putchar函数可以向终端输出一个
(A) 整型变量表达式 (B) 实型变量值
(C) 字符串 (D) 字符或字符变量值
66
已知ch是字符变量,下面正确的赋值语句是
(A) ch = '123'; (B) ch = 'xff';
(C) ch = '08'; (D) ch = '';
67
若有a=1, b=0, c=2, d=3,则条件表达式a < b ? a : c < d ? c : d的值是
(A) 0 (B) 1
(C) 2 (D) 3
68
如果从键盘输入数据23,下面程序代码段输出的结果是
int x;
scanf("%d", &x);
if (x > 10)
{
printf("%d", x);
}
if (x > 20)
{
printf("%d", x);
}
if (x > 30)
{
printf("%d", x);
}
(A) 23 (B) 2323
(C) 232323 (D) 都不正确
69
下面程序代码段的输出结果是
int a=15, b=10, c=20, d;
d = a > 12 ? b : c;
switch(d)
{
case 5:
printf("%d,", a);
case 10:
printf("%d,", b);
case 20:
printf("%d,", c);
default:
printf("#n");
}
(A) 15,10,20,# (B) 10,20,#
(C) 10,20 (D) 10
70
下面程序代码段的输出结果是
int a=2, b=3, c=1;
switch(c)
{
case 0:
a++;
case 1:
a++;
b++;
case 2:
b++;
}
printf("a=%d,b=%dn", a, b);
(A) a=3,b=5 (B) a=3,b=4
(C) a=4,b=4 (D) a=4,b=5
71关于为什么要学习C语言,以下描述错误的是
(A) C语言早就过时了,应该学习最流行的语言。 (B) 通过对C语言的学习,可以培养工程
推理和解决问题的能力。
(C) C语言是结构化程序设计语言,是面向对象程序设计的基础。 (D) 非计算机专业同
学学习C语言,可以培养使用计算机解决问题的思维和能力。
72
执行了以下程序段后x,w的值为
int x=0, y=1, z=2, w;
if (x++)
{
w = x;
}
else if (x++ && y >= 1)
{
w = y;
}
else if (x++ && z > 1)
{
w = z;
}
(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("ok");”的循环次数为
for (i=5; i; i--)
{
for (j=0; j<4; j++)
{
printf("ok");
}
}
(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("k=%d,k=%o,k=%x", k, k, k);
(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:
a += 2;
case 1:
case 2:
a += 3;
default:
a += 5;
}
}
printf("%dn", a);
(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("%dn", a);
(A) 21 (B) 32
(C) 33 (D) 11
84
以下程序段的输出结果是
int a, b;
for (a=1, b=1; a<=100; a++)
{
if (b >= 10)
{
break;
}
if (b % 3 == 1)
{
b += 3;
continue;
}
}
printf("%dn", a);
(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("%dn", sum);
(A) 15 (B) 14
(C) 不确定 (D) 0
87
以下程序段的输出结果是
int x = 3;
do
{
printf("%d ", x -= 2);
} 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("%d %d ", x--, y);
}
(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("%c", i + 32);
}
(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("%d,%dn", v1, v2);
(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("x=%dn", x);
(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("%d ", j);
}
(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("%d", i);
}
}
}
}
(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("%d %d %dn", m, n, k);
(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("%dn", s);
(A) 4 (B) 5
(C) 6 (D) 7
98
以下程序段的输出结果是
int i=10, j=0;
do
{
j = j + i;
i--;
} while (i > 2);
printf("%dn", j);
(A) 52 (B) 25
(C) 54 (D) 48
99
以下程序段运行时,如果从键盘输入1298再回车,则输出结果为
int n1, n2;
scanf("%d", &n2);
while (n2 != 0)
{
n1 = n2 % 10;
n2 = n2 / 10;
printf("%d", n1);
}
(A) 8921 (B) 1298
(C) 1 (D) 9
100
以下程序段的输出结果是
int x=0, y=5, z=3;
while (z-- > 0 && ++x < 5)
{
y--;
}
printf("%d,%d,%dn", x, y, z);
(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("k=%d,s=%d", k, s);
(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("%ld#", number);
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("%d%s", x, y); (B) scanf("%d%s", &x, y);
(C) scanf("%d%s", x, &y); (D) scanf("%d%s", &x, &y);
107
下面能正确定义一维数组的选项是
(A) int num[]; (B) int 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[] = "string"; (B) int a2[5] = {1, 2, 3, 4, 5, 6};
(C) char a3 = {"string"}; (D) char a4[] = {1, 2, 3, 4, 5, 6};
111
如果有语句:char a[] = "string", b[] = {'s', 't', 'r', 'i', 'n', 'g'};,则下面叙述中正确的是
(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("%d ", x[j][2-j]);
}
(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("%dn", n[1]);
(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("%dn", k);
(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("%d ", m[k][i]);
}
(A) 3 6 9 (B) 4 5 6
(C) 2 5 8 (D) 7 8 9
120
下列选项中正确的语句是
(A) char *s; s = "Beijing"; (B) char *s; s = {"Beijing"};
(C) char s[8]; s = "Beijing"; (D) char s[8]; s = {"Beijing"};
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[]="abcdefg", b[10]="abcdefg";
printf("%d %dn", sizeof(a), sizeof(b));
(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("%d %d %d %dn", a[0], a[1], b[0], b[1]);
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("%d ", aa[i]);
printf("n");
return 0;
}
void sort(int a[], int n)
{
int i, j, t;
for (i=0; i for (j=i+2; j if (a[i] < a[j]) { t = a[i];
}
(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("%d,", aa[i]);
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
a[i] = a[j]; a[j] = t; }
126
以下程序段运行后的输出结果是
char ch[3][5] = {"AAAA", "BBB", "CC"};
printf(""%s"n", ch[1]);
(A) "AAAA" (B) "BBB"
(C) "BBBCC" (D) "CC"
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("%dn", t);
(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("%dn", s);
(A) 19 (B) 20
(C) 11 (D) 13
129
以下程序段的运行结果是:
char s[10], s="abcd";
printf("%s", s);
(A) abcd (B) a
(C) ab cd (D) 编译不通过
130
对于定义char s[] = ""NameAddress"n";,字符串s所占字节数是
(A) 16 (B) 14
(C) 15 (D) 19
131
以下程序段的运行后结果是
char str[] = "abn012"";
printf("%d", strlen(str));
(A) 6 (B) 12
(C) 3 (D) 4
132
对于定义char c[8] = "Tianjin"和int j,下面的输出函数调用中错误的是
(A) printf("%s", c); (B) puts(c);
(C) for (j=0; j<8; j++)
{
printf("%c", c[j]);
} (D) for (j=0; j<8; j++)
{
puts(c[j]);
}
133
对于定义char a[10] = {0};和int j;,下面输入函数调用中错误的是
(A) scanf("%s", a); (B) gets(a);
(C) for (j=0; j<9; j++)
{
scanf("%c", a[j]);
} (D) for (j=0; j<9; j++)
{
scanf("%c", &a[j]);
}
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("%dn", s);
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("%ldn", func(5));
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("%dn", c);
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("%fn", x);
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("%dn", s);
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("%d, %d", &a, &b);
c = __________________;
printf("max is %d", c);
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);
(C) max(x, y) (D) int max(int a, int b)
154
下面程序中应该补充(填写在横线位置)的代码中,有错的是
#include
______________________________
int main(void)
{
int a, b, c;
scanf("%d, %d", &a, &b); c = min(a, b);
printf("min is %d", c);
return 0;
}
//函数功能:求两数中的较大数
int min(int x, int y)
{
int z;
z = x < y ? x : y;
return z;
}
(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("%d,%d,%d,%dn", x3, x4, x1, x2);
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("%d ", x);
}
(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
为了进行写操作而打开二进制文件的正确写法是
(A) fp = fopen("", "r"); (B) fp = fopen("", "w");
(C) fp = fopen("", "rb"); (D) fp = fopen("", "wb");
162
下面的语句中,将fp定义为文件型指针的是
(A) file fp; (B) file *fp;
(C) FILE fp; (D) FILE *fp;
163
以下要作为fopen函数中第一个参数的正确格式是
(A) "c:" (B) "c:"
(C) "" (D) "c:"
· 试题讲评
字符常量反斜线()的书写形式是''(转义符方式)
164
若执行fopen函数时发生错误,则函数的返回值是
(A) 0(NULL) (B) 1
(C) -1(EOF) (D) 地址值
165
当顺利执行了文件关闭操作时,fclose函数的返回值是
(A) -1 (B) 1
(C) TRUE (D) 0
166
如果不能实现文件“打开”的任务,fopen函数将会带回一个出错信息。以下对出错原因描
述错误的是
(A) 用"r"方式打开一个并不存在的文件 (B) 磁盘出故障
(C) 磁盘已满无法建立新文件 (D) 用"w"方式打开文件时,没有先建立文件
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("c:xxxfile.c", "r");
if (NULL == fp1)
{
printf("cannot open file in disk c!n"); exit(1);
}
fp2 = fopen("d:file.c", "w");
if (NULL == fp2)
{
printf("cannot open file in disk d!n"); fclose(fp1); exit(2);
}
while(!feof(fp1)) fputc(fgetc(fp1), fp2);
printf("copy success!n"); 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
当已存在一个文件时,执行函数fopen("", "r+")的功能是
(A) 打开文件,清除原有的内容 (B) 打开文件,只能写入新的内容
(C) 打开文件,只能读取原有内容 (D) 打开文件,可以读取和写入新的
内容
171
fopen(filename, mode)函数的mode取值"r"和"w"时,它们之间的差别是
(A) "r"可向文件输入,"w"不可向文件输入 (B) "r"不可向文件输入,"w"可向文件输入
(C) "r"不可由文件输出,"w"可由文件输出 (D) 文件不存在时,"r"建立新文件,"w"出错
172
若用fopen函数打开一个新的二进制文件,该文件可以读也可以写,则文件打开模式是
(A) "ab+" (B) "wb+"
(C) "rb+" (D) "ab"
· 试题讲评
"rb+":为了读和写,打开一个二进制文件,若指定文件不存在则出错;"wb+":为了读和写,
打开一个新的二进制文件,若指定文件不存在,则建立新文件。
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[] = "HELLO";
fp = fopen("CON", "w");
if (NULL == fp)
{
printf("file open error!n"); 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) "r" (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("", "w");
if (NULL == fp) { printf("file open error!"); exit(1); }
while ((ch=getchar()) != '@')
{
fputc(ch ,fp); putchar(ch);
}
fclose(fp); return 0;
}
(A) 把从键盘输入的字符依次输出到名为的磁盘文件中(用@作为输入结束标
志),同时在屏幕上显示这些字符。 (B) 把从键盘输入的字符依次输出到名为
的磁盘文件中(用@作为输入结束标志)。
(C) 把从键盘输入的字符输出到屏幕(用@作为输入结束标志)。 (D) 从名为
的磁盘文件中读入字符(用@作为输入结束标志),并在屏幕上显示这些字符。
182
下面程序的功能是将数组str的4个元素写到名为的二进制文件中。程序中需
要补充的语句是
#include
#include
int main(void)
{
FILE *fp;
char str[] = "abcd";
fp = fopen("", "wb");
if (NULL == fp) { printf("file open error!"); 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
下面的程序执行后,文件中的内容是
#include
#include
#include
void fun(char *fname, char *st);
int main(void)
{
fun("", "How are you!"); fun("", "Fine, thank you!");
return 0;
}
void fun(char *fname, char *st)
{
FILE *fp;
int len, i;
fp = fopen(fname, "w");
if (NULL == fp) { printf("file open error!"); exit(1); }
len = strlen(st);
for (i=0; i fclose(fp);
}
(A) Fine, thank you! (B) How are you!Fine, thank you!
(C) How are you! (D)
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("%dn", sizeof(struct dt));
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) = 2003;
= 5;
= 1; (B) year = 2003;
month = 5;
day = 1;
(C) = 2003;
= 5;
= 1; (D) = 2003;
= 5;
= 1;
202
若有以下定义,则下面各输出语句中能输出字母J的是
struct student
{
int num;
char name[20];
} ;
struct student school[10000] = {{1001, "Mike"}, {1002, "James"}, {1003, "Tom"}};
(A) printf("%c", school[0].name[0]); (B) printf("%c", school[1].name[0]);
(C) printf("%c", school[2].name[0]); (D) printf("%c", school[1].name);
203
若有以下定义,则下面各输入语句中不正确的是
struct student
{
int num;
char name[20];
char sex;
float score;
} student1, *p = &student1;
(A) scanf("%d", &); (B) scanf("%s", &);
(C) scanf("%c", &(*p).sex); (D) scanf("%f", &(p->score));
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("%d,%4.0fn", stu[0].num, stu[0].score);
return 0;
}
void fun(struct student tmp)
{
struct student stu[2] = {{1003, 450}, {1004, 250}};
= 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, "Liu"}, {1004, 250, "Tao"}};
fun(stu);
printf("%d,%3.0f,%sn", stu[0].num, stu[0].score, stu[0].name);
return 0;
}
void fun(struct student *p)
{
struct student stu[2] = {{1001,650, "He"}, {1002,550, "Li"}}, *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, "Liu", 21}, {11102, "Tao", 22}, {1103, "Xu", 23}};
func(stu + 1);
return 0;
}
void func(struct student *p) { printf("%s", p->name); }
(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("%d,%d", (p+1)->num, *((p+1)->q));
return 0;
}
(A) 1003,17 (B) 1001,16
(C) 1005,18 (D) 1003,16
发表评论