C语言程序设计真题-单项选择
单项选择
题号:9545
设有语句 char A="\\65";,则变量 a:
- A、a为不合法的定义形式
- B、包含3个字符
- C、包含1个字符
- D、包含4个字符
答案:
C
题号:12031
设有定义:
struct complex
{
int real, unreal;
} datal = {1, 8}, data2;
则以下赋值语句中错误的是:
- A、
data2.rea1=data1.real; - B、
data2=data1; - C、
data2.real=datal.unreal; - D、
data2=(2,6);
答案:
D
题号:11638
以下叙述中,不正确的是:
- A、表达式
a != b等价于a = a ! b - B、表达式
a |= b等价于a = a | b - C、表达式
a &= b等价于a = a & b - D、表达式
a ^= b等价于a = a ^ b
答案:
A
题号:11086
在 C 语言中,只有在使用时才占用内存单元的变量,其存储类型是:
- A、
static和register - B、
auto和static - C、
extern和register - D、
auto和register
答案:
D
题号:10461
有以下程序:
main()
{
int k = 33;
printf("%d,%o,%x", k, k, k);
}
执行后的输出结果是:
- A、33,033,0x21
- B、33,033,21
- C、33,041,021
- D、33,41,21
答案:
D
题号:2450
下列程序的输出结果是:
main()
{
int a = 011;
printf("%d\n", ++a);
}
- A、12
- B、10
- C、11
- D、9
答案:
B
题号:8723
以下程序段的输出结果是:
int i, j, m = 0;
for (i = 1; i <= 15; i += 4)
for (j = 3; j <= 19; j += 4)
m++;
printf("%d\n", m);
·1
- A、20
- B、15
- C、25
- D、12
答案:
A
题号:1520
若有定义:char *p1,*p2,*p3,*p4,ch;
则不能正确赋值的程序语句为:
- A、
p4=&ch; *p4=getchar(); - B、
p2=(char *)malloc(1); scanf("%c",p2); - C、
p1=&ch; scanf("%c",p1); - D、
*p3=getchar();
答案:
D
题号:7457
下列叙述中正确的是:
- A、一个算法的时间复杂度大,则其空间复杂度必定小
- B、一个算法的空间复杂度大,则其时间复杂度必定小
- C、其他三种说法都不对
- D、一个算法的空间复杂度大,则其时间复杂度也必定大
答案:
C
题号:7321
下列有关数据库的描述,正确的是:
- A、数据库设计是指设计数据库管理系统
- B、数据库是一个独立的系统,不需要操作系统的支持
- C、数据库技术的根本目标是要解决数据共享的问题
- D、数据库系统中数据的物理结构必须与逻辑结构一致
答案:
C
题号:7428
下列关于数据库设计的叙述中正确的是:
- A、在物理设计阶段建立数据字典
- B、在逻辑设计阶段建立数据字典
- C、在概念设计阶段建立数据字典
- D、在需求分析阶段建立数据字典
答案: D
题号:8274
下列程序的输出结果是:
#include <stdio.h>
void main()
{
int a = 0, b = 1, c = 2;
if (++a > 0 || ++b > 0)
++c;
printf("%d,%d,%d", a, b, c);
}
- A、1,2,2
- B、0,1,2
- C、1,1,3
- D、1,2,3
答案: C
题号:9497
以下程序的输出结果是:
main()
{
int a, i = 4;
a = i++;
printf("a=%d,i=%d\n", a, i);
}
- A、a=4,i=4
- B、a=5,i=5
- C、a=4,i=5
- D、a=5,i=4
答案: C
题号:11463
函数rewind(fp)的作用是:
- A、使fp指定的文件的位置指针重新定位到文件的开始位置
- B、将fp指定的文件的位置指针指向文件中,所要求的特定位置
- C、使fp指定的文件的位置指针自动移至下一个字符位置
- D、使fp指定的文件的位置指针向文件的末尾
答案: A
题号:11881
以下叙述错误的是:
- A、函数允许递归调用
- B、函数调用可以作为一个函数的形参
- C、函数调用可以出现在一个表达式中
- D、函数调用可以作为一个函数的实参
答案: B
题号:3148
C语言中,double类型数据占:
- A、4个字节
- B、8个字节
- C、1个字节
- D、2个字节
答案: B
题号:425
对于定义char *aa[2]={"abcd","ABCD"},选项中说法正确的是:
- A、aa数组元素的值分别是"abcd"和"ABCD"
- B、aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
- C、aa数组的两个元素中各自存放了字符’a’和’A’的地址
- D、aa是指针变量,它指向含有两个数组元素的字符型一维数组
答案: C
题号:11291
有以下程序:
#include <stdio.h>
struct tt
{
int x;
struct tt *y;
} *p;
struct tt a[4] = {20, a + 1, 15, a + 2, 30, a + 3, 17, a};
main()
{
int i;
p = a;
for (i = 1; i <= 2; i++)
{
printf("%d,", p->x);
p = p->y;
}
}
程序的运行结果是:
- A、20,15,
- B、15,30,
- C、20,30,
- D、30,17
答案: A
题号:961
C语言中while和do-while循环的主要区别是:
- A、while的循环控制条件比do-while的循环控制条件更严格
- B、do-while的循环体至少无条件执行一次
- C、do-while的循环体不能是复合语句
- D、do-while允许从外部转到循环体内
答案: B
题号:11117
有以下程序:
#include <string.h>
void f(char p[][10], int n) /*字符串从小到大排序 */
{
char t[10];
int i, j;
for (i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++)
if (strcmp(p[i], p[j]) > 0)
{
strcpy(t, p[i]);
strcpy(p[i], p[j]);
strcpy(p[i], t);
}
}
main()
{
char p[5][10] = {"abc", "aabdfg", "abbd", "dcdbe", "cd"};
f(p, 5);
printf("%d\n", strlen(p[0]));
}
程序运行后的输出结果是:
- A、3
- B、6
- C、2
- D、4
答案: A
题号:5219
以下字符中不是转义字符的是()。
- A、‘\\’
- B、‘\c’
- C、‘\t’
- D、‘\b’
答案: B
题号:1353
对于基本类型相同的两个指针变量之间,不能进行的运算是()。
- A、+
- B、<
- C、=
- D、-
答案: A
题号:10539
设指针变量占2个字节的内存空间,若有声明 "char *p="123";int c;",则执行语句 "c=sizeof(p);" 后,c的值为()。
- A、2
- B、3
- C、4
- D、1
答案: A
题号:10614
在C语言中,int、char 和 short 三种类型数据在内存中,所占用的字节数()。
- A、是任意的
- B、均为2个字节
- C、由用户自己定义
- D、由所用机器的机器字长决定
答案: D
题号:2865
以下程序的输出结果是:
main()
{
int k = 4, m = 1, p;
p = func(k, m);
printf("%d,", p);
p = func(k, m);
printf("%d\n", p);
}
func(int a, int b)
{
static int m, i = 2;
i += m + 1;
m = i + a + b;
return (m);
}
- A、8,20
- B、8,17
- C、8,8
- D、8,16
答案: B
题号:8361
以下程序的运行结果是()。
#include <stdio.h>
int a = 1;
int f(int c)
{
static int a = 2;
c = c + 1;
return (a++) + c;
}
main()
{
int i, k = 0;
for (i = 0; i < 2; i++)
{
int a = 3;
k += f(a);
}
k += a;
printf("%d\n", k);
}
- A、14
- B、15
- C、17
- D、16
答案: A
题号:10965
C语言中,字符(char)型数据在微机内存中的存储形式是:
- A、反码
- B、ASCII码
- C、EBCDIC码
- D、补码
答案: B
题号:628
以下程序段的执行结果是()。
double x;
x = 218.82631;
printf("%-6.2e\n", x);
- A、输出为21.38e+01
- B、输出为-2.14e2
- C、输出为2.2e+02
- D、输出格式描述符的域宽不够,不能输出
答案: C
题号:4399
以下程序的执行结果是________。
main()
{
int num = 0;
while (num <= 2)
{
num++;
printf("%d,", num);
}
}
- A、1,2,3,
- B、1,2,3,4,
- C、1,2,
- D、0,1,2
答案: A
题号:9367
以下程序的输出结果是()。
int x = 1;
fun(int p)
{
int x = 4;
x += p++;
printf("%d", x);
}
main()
{
int a = 3;
fun(a);
x += a++;
printf("%d\n", x);
}
- A、8 4
- B、3 7
- C、7 4
- D、4 7
答案: D
题号:7978
若 x=2, y=3,则 x & y 的结果是()。
- A、3
- B、5
- C、0
- D、2
答案: D
题号:4234
当定义一个结构体变量时,系统分配给它的内存是()。
- A、结构中最后一个成员所需内存量
- B、结构中第一个成员所需内存量
- C、成员中占内存量最大者所需的容量
- D、各成员所需内存量的总和
答案: D
题号:9588
以下程序的输出结果是()。
main()
{
float x = 3.6;
int i;
i = (int)x;
printf("x=%f,i=%d\n", x, i);
}
- A、x=3,i=3
- B、x=3.600000,i=4
- C、x=3 i=3.600000
- D、x=3.600000,i=3
答案: D
题号:2565
以下程序的输出结果是:
main()
{
int a = 5, b = 6, c = 7, d = 8, m = 2, n = 2;
printf("%d\n", (m = a > b) & (n = c > d));
}
- A、0
- B、3
- C、1
- D、2
答案: A
题号:8972
以下程序的输出结果是:
main()
{
char ch[2][5] = {"6937", "8254"}, *p[2];
int i, j, s = 0;
for (i = 0; i < 2; i++)
p[i] = ch[i];
for (i = 0; i < 2; i++)
for (j = 0; p[i][j] > '\0' && p[i][j] <= '9'; j += 2)
s = 10 * s + p[i][j] - '0';
printf("%d\n", s);
}
- A、6385
- B、69825
- C、63825
- D、693825
答案: A
题号:6265
执行下列程序后,其输出结果是()。
main()
{
int a = 9;
a += a -= a + a;
printf("%d\n", a);
}
- A、18
- B、-18
- C、-9
- D、9
答案: B
题号:7448
下列叙述中不属于设计准则的是()。
- A、设计成多入口,多出口模块
- B、设计功能可预测的模块
- C、提高模块独立性
- D、使模块的作用域在该模块的控制域中
答案: A
题号:11914
在下列叙述中,错误的是()。
- A、C语言中,二维数组或多维数组是按行存放的
- B、
char a[1]; a[0]='A'与int a[1]; a[0]='A'等价 - C、数组名后的方括号内可以为常量表达式,也可以为变量
- D、赋值表达式
b[1][2] = a[2][3]是正确的
答案: C
题号:7779
已知有声明 "int a=3,b=4;",则下列表达式合法的是()。
- A、
a+b=7 - B、
a=|b| - C、
(a++)++ - D、
a=b=0
答案: D
题号:4437
设 char 型变量 x 中的值为 10100111,则表达式 (2+x)^(~3) 的值是()。
- A、10101001
- B、01010101
- C、11111101
- D、10101000
答案: B
题号:9326
若有下面的说明和定义,则 sizeof(struct aa) 的值是()。
struct aa
{
int r1;
double r2;
float r3;
union uu
{
char u1[5];
long u2[2];
} ua;
} maya;
- A、29
- B、24
- C、22
- D、30
答案: C
题号:8917
已知字符 '0' 的 ASCII 码值的十进制数是 48,且数组的第 0 个元素在低位,以下程序的输出结果是()。
main()
{
union
{
int i[2];
long k;
char c[4];
} r, *s = &r;
s->i[0] = 0x39;
s->i[1] = 0x38;
printf("%x\n", s->c[0]);
}
- A、38
- B、39
- C、8
- D、9
答案: B
题号:183
若变量已正确定义并赋值,下面符合 C 语言语法的表达式是()。
- A、
int 18.5%3 - B、
a:=b+1 - C、
a=a+7=c+b - D、
a=b=c+2
答案: D
题号:7777
以下选项中,不合法的用户标识符是()。
- A、
main() - B、
file - C、
wb-1 - D、
printf
答案: C
题号:6823
若有宏定义如下:
#define MOD(x, y) x % y
则执行以下程序段的输出为:
int z, a = 15, b = 100;
z = MOD(b, a);
printf("%d\n", z++);
- A、11
- B、6
- C、10
- D、5
答案: C
题号:7491
以下说法中,正确的是()。
- A、
#define和printf都不是 C 语句 - B、
#define和printf都是 C 语句 - C、
#define是 C 语句,而printf不是 - D、
printf是 C 语句,但#define不是
答案: A
题号:8226
sizeof(char) 是()。
- A、一个整型表达式
- B、一个不合法的表达式
- C、一种函数调用
- D、一个字符型表达式
答案: A
题号:11516
如果一个程序中有若干函数,它们分布在不同源文件中,且共用同一变量,需使用的存储类型是()。
- A、
register - B、
static - C、
extern - D、
auto
答案: C
题号:8908
以下程序段给数组所有元素输入数据,应在下划线处填入的是:
main()
{
int a[10], i = 0;
while (i < 10)
scanf("%d", ______);
...
}
- A、
&a[i+1] - B、
a + i - C、
&a[++i] - D、
a + (i++)
答案: D
题号:4791
有以下程序:
float fun(int x, int y)
{
return (x + y);
}
main()
{
int a = 2, b = 5, c = 8;
printf("%3.0f\n", fun((int)fun(a + c, b), a - c));
}
程序运行后的输出结果是:
- A、21
- B、9.0
- C、编译出错
- D、9
答案: D
题号:11018
对于定义 char *aa[2]={"abcd","ABCD"},选项中,说法正确的是()。
- A、aa是指针变量,它指向含有两个数组元素的字符型一维数组
- B、aa数组的两个元素中,分别存放的是上述两个字符串的首地址
- C、aa数组元素的值分别是"abcd"和"ABCD"
- D、aa数组的两个元素中,各自存放了上述两个字符数组的首地址
答案: B
题号:12109
以下叙述中,不正确的是()。
- A、在C语言中,外部变量的隐含类别是动态存储类别
- B、在C语言中,函数中的自动变量可以赋初值,每调用一次,赋一次初值
- C、在C语言中,函数形参可以声明为register变量
- D、在C语言中,在调用函数时,实参和形参的类型必须一致或赋值兼容
答案: A
题号:2748
以下程序的输出结果是:
main()
{
int i = 2, p;
p = f(i, i + 1);
printf("%d", p);
}
int f(int a, int b)
{
int c;
c = a;
if (a > b)
c = 1;
else if (a == b)
c = 0;
else
c = -1;
return (c);
}
- A、-1
- B、1
- C、2
- D、0
答案: A
题号:10901
有以下程序:
void fun(int x, int y, int *cp, int *dp)
{
*cp = x + y;
*dp = x - y;
}
main()
{
int a, b, c, d;
a = 10;
b = 60;
fun(a, b, &c, &d);
printf("%d,%d\n", c, d);
}
输出结果是()。
- A、70,-50
- B、60,10
- C、10,60
- D、70,50
答案: A
题号:6738
判断 char 型变量 cl 是否为小写字母的正确表达式是()。
- A、
(cl>=a)&&(cl<=z) - B、
'a'<=cl<='z' - C、
('a'>=cl)||('z'<=cl) - D、
(cl>='a')&&(cl<='z')
答案: D
题号:7628
以下符号中,不属于转义字符的是()。
- A、
"\x12" - B、
"\011" - C、
"\07" - D、
"\\"
答案: D
题号:7650
下列可用于 C 语言用户标识符的一组是()。
- A、
a33, 123, Car - B、
for, -abc, IF case - C、
void, define, WORD - D、
2a, DO, sizeof
答案: A
题号:9838
若从终端输入以下数据,要给变量 c 赋以 283.19,则正确的输入语句是()。
- A、
scanf("%8f", &c); - B、
scanf("%6.2f", &c); - C、
scanf("%8.4f", &c); - D、
scanf("%f", c);
答案: A
题号:11139
有以下程序:
#include <stdio.h>
main()
{
int a = 1, b = 0;
printf("%d,", b = a + b);
printf("%d\n", a = 2 * b);
}
程序运行后的输出结果是()。
- A、1,2
- B、0,0
- C、3,2
- D、1,0
答案: A
题号:364
以下程序的输出结果是:
void fun(int *s)
{
static int j = 0;
do
s[j] += s[j + 1];
while (++j < 2);
}
main()
{
int k, a[10] = {1, 2, 3, 4, 5};
for (k = 1; k < 3; k++)
fun(a);
for (k = 0; k < 3; k++)
printf("%d", a[k]);
}
- A、34756
- B、23445
- C、35745
- D、12345
答案: C
题号:11683
现有格式化输入语句:scanf("x=%d ],sum] y=%d,line] z=%dL ", &x, &y, &z); 已知在输入数据后,x、y、z 的值分别是 23、56、78,则下列选项中正确的输入格式是()。
- A、
x=23,y=56,z=78<Enter> - B、
x=23 ],sum] y=56,line] z=78<Enter>(注:" ]"表示空格,<Enter>表示回车) - C、
x=23C,sumy=56,z=78<Enter> - D、
23,56,78<Enter>
答案: B
题号:8998
若有 char c[] = "abc"; int i = 0;,则执行以下程序段的输出结果为()。
do ;
while (c[i++] != '\0');
printf("%d", i - 1);
- A、abc
- B、2
- C、3
- D、ab
答案: C
题号:10363
对于建立函数的目的,正确的说法是()。
- A、提高程序的可读性
- B、减少程序的篇幅
- C、提高程序的执行效率
- D、减少程序文件所占的内存
答案: A
题号:12197
设有如下说明:
typedef struct ST
{
long a;
int b;
char c[2];
} NEW;
以下说法正确的是()。
- A、其他说明形式非法
- B、NEW 是一个结构体类型
- C、NEW 是一个结构体变量
- D、ST 是一个结构体类型
答案: B
题号:7824
下面程序的输出结果是()。
main()
{
int i = 2, p;
p = f(i, i + 1);
printf("%d", p);
}
int f(int a, int b)
{
int c;
c = a;
if (a > b)
c = 1;
else if (a == b)
c = 0;
else
c = -1;
return c;
}
- A、0
- B、1
- C、2
- D、-1
答案: D
题号:9401
以下叙述正确的是()。
- A、可以把 define 和 if 定义为用户标识符
- B、可以把 if 定义为用户标识符,但不能把 define 定义为用户标识符
- C、define 和 if 都不能定义为用户标识符
- D、可以把 define 定义为用户标识符,但不能把 if 定义为用户标识符
答案: D
题号:11609
下列叙述中正确的是()。
- A、有一个以上根结点的数据结构不一定是非线性结构
- B、只有一个根结点的数据结构不一定是线性结构
- C、循环链表是非线性结构
- D、双向链表是非线性结构
答案: B
题号:7285
下列叙述中不属于软件需求规格说明书的作用的是()。
- A、作为确认测试和验收的依据
- B、便于用户、开发人员进行理解和交流
- C、便于开发人员进行需求分析
- D、反映出用户问题的结构,可以作为软件开发工作的基础和依据
答案: C
题号:11808
下列叙述中正确的是()。
- A、顺序存储结构能存储有序表,链式存储结构不能存储有序表
- B、顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的
- C、链式存储结构比顺序存储结构节省存储空间
- D、顺序存储结构只针对线性结构,链式存储结构只针对非线性结构
答案: B
题号:1220
以下不是无限循环的语句为()。
- A、
for (; ; x++ = i); - B、
while (1) { x++; } - C、
for (y = 0, x = 1; x > ++y; x = i++) i = x; - D、
for (i = 10; ; i--) sum += i;
答案: C
以下程序段给数组所有元素输入数据,应在下划线处填入的是
main()
{
int a[10], i = 0;
while (i < 10)
scanf("%d", );
...
}
- A、
&a[i+1] - B、
a+i - C、
&a[++i] - D、
a+(i++)
答案:
D
题号:956
用下列语句定义a,b,c,然后执行b=a、c=‘b’+b,则b,c的值是()。
long a=0xffffff;
int b; char c;
- A、指向同一地址
- B、-1和98
- C、-1和97
- D、0ffffff 和0x61
答案:
C
题号:10627
设有定义: float x=123.4567; 则执行以下语句后的输出结果是().
printf("%f\n",(int)x*100+0.5)/100.0;
- A、123.450000
- B、123.460000
- C、123.456700
- D、123
答案:
B
题号:12026
下列叙述中正确的是().
- A、有一个以上根结点的数据结构不一定是非线性结构
- B、双向链表是非线性结构
- C、只有一个根结点的数据结构不一定是线性结构
- D、循环链表是非线性结构
答案:
C
题号:9370
若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句是
- A、
t=a;a=b;b=t; - B、
t=b;b=a;a=t; - C、
a=a+b,b=a-b,a=a-b; - D、
a=t;t=b;b=a;
答案:
D
题号:11157
以下程序运行后的输出结果是()。
char *fun(char *str, int n)
{
int i;
char *p = str;
for (i = 0; i < n; i++, str++)
*str = 'a' + i;
return ++p;
}
main()
{
char a[10];
printf("%s\n", fun(a, 10));
}
- A、EFGHIJABCD
- B、不确定的值
- C、bcdefghij
- D、abdefcghij
答案:
C
题号:5300
以下程序的输出结果是
main()
{
int a[] = {1, 2, 3, 4}, i, x = 0;
for (i = 0; i < 4; i++)
{
sub(a, &x);
printf("%d ", x);
}
pritnf("\n");
}
sub(int *s, int *y)
{
static int t = 3;
*y = s[t];
t--;
}
- A、4 4 4 4
- B、0 0 0 0
- C、1 2 3 4
- D、4 3 2 1
答案:
D
题号:9049
已知有声明 "char s[80];", 若需要将键盘输入的一个不含空格的字符串保存到s数组中则下列语句正确的是().
- A、
s=getchar(); - B、
scanf("%s",s); - C、
scanf("%s",s[0]); - D、
s=gets();
答案:
B
题号:8844
下列叙述中正确的是().
- A、软件调试后一般不需要再测试
- B、软件测试的目的是发现程序中的错误
- C、软件测试的目的是确定程序中错误的位置
- D、软件调试的目的是发现程序中的错误
答案:
B
题号:7279
数据库的故障恢复一般是由()来执行恢复.
- A、电脑用户
- B、系统普通用户
- C、数据库管理员
- D、数据库恢复机制
答案:
C
题号:7282
对建立良好的程序设计风格,下面描述正确的是().
- A、充分考虑程序的执行效率
- B、程序的注释可有可无
- C、符号名的命名只要符合语法
- D、程序应简单,清晰,可读性好
答案:
D
题号:3087
下列字符序列中,可用作C标识符的一组字符序列是()。
- A、
#md,&12x,month,student_n! - B、
D56,r_1_2,name,_st_1 - C、
S.b,sum,average,_above - D、
class,day,lotus_1,2day
答案:
B
题号:11429
若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为().
- A、0
- B、1
- C、一个非0值
- D、-1
答案:
A
题号:4057
有如下程序
main()
{
int x = 1, a = 0, b = 0;
switch (x)
{
case 0:
b++;
case 1:
a++;
case 2:
a++;
b++;
}
printf("a=%d,b=%d\n", a, b);
}
该程序的输出结果是
- A、a=1,b=1
- B、a=2,b=1
- C、a=1,b=0
- D、a=2,b=2
答案:
B
题号:7960
下面四个选项中均是不合法的用户标识符的选项是().
- A、
A P_0 do - B、
b-a goto int - C、
_123 temp int - D、
float la0 _A
答案:
B
题号:11216
下面程序的运行结果是().
y = 5;
x = 14;
y = ((x = 3 * y, x + 6), x - 1);
printf("x=%d,y=%d", x, y);
- A、x=15,y=14
- B、x=12,y=13
- C、x=y=27
- D、x=27,y=27
答案:
A
题号:5802
下列正确的标识符是
- A、
%y - B、
a+b - C、
6a - D、
_do
答案:
D
题号:6402
为表示关系 x≥y≥z,应使用的C语言表达式是______ 。
- A、
(x>=y)& (y>=z) - B、
(x>=y)&&(y>=z) - C、
(x>=y>=z) - D、
(x>=y)AND(y>=z)
答案:
B
题号:6428
C语言中函数调用的方式有()。
- A、函数调用作为语句或函数表达式两种
- B、函数调用作为语句一种
- C、函数调用作为语句、函数表达式或函数参数三种
- D、函数调用作为函数表达式一种
答案:
C
题号:3571
若变量已正确说明,要求用以下语句给c1赋予字符%、给c2赋予字符#、给a赋予2.0、给b赋予4.0,则正确的输入形式是
scanf("%f%c%f%c", &a, &c1, &b, &c2);
- A、2.0%4.0#
- B、2% 4#
- C、2.0 % 4.0 #
- D、2 % 4 #
答案:
A
题号:8546
有以下程序
#include <stdio.h>
main()
{
int y = 9;
for (; y > 0; y--)
if (y % 3 == 0)
printf("%d", --y);
}
程序的运行结果是().
- A、875421
- B、741
- C、963
- D、852
答案:
D
题号:1496
C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符()。
- A、必须为下划线
- B、可以是字母,数字和下划线中任一字符
- C、必须为字母
- D、必须为字母或下划线
答案:
D
题号:11945
以下说法正确的是().
- A、C语言中,允许有零个main()函数
- B、C语言中,必须有main()函数和其他函数
- C、C语言中,允许有多个main()函数
- D、C语言只能有一个main()函数
答案:
D
题号:3647
若有定义和语句:
int a[4][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, (*prt)[3] = a, *p[4], i;
for (i = 0; i < 4; i++)
p[i] = a[i];
则不能够正确表示a数组元素的表达式是
- A、
(*(p+1))[1] - B、
a[4][3] - C、
p[0][0] - D、
prt[2][2]
答案:
B
题号:10631
当运行以下程序时输入OPEN THE DOOR<CR>,则输出结果是
#include <stdio.h>
char fun(char *c)
{
if (*c <= 'Z' && *c >= 'A')
*c -= 'A' - 'a';
return *c;
}
main()
{
char s[8], *p = s;
gets(s);
while (*p)
{
*p = fun(p);
putcahr(*p);
p++;
}
putchar('\n');
}
- A、Open The Door
- B、OPEN THE DOOR
- C、open the door
- D、oPEN tHE dOOR
答案:
C
题号:3843
以下程序的运行结果是
main()
{
int a = 2, b = -1, c = 2;
if (a < b)
if (b < 0)
c = 0;
else
c += 1;
printf("%d\n", c);
}
- A、0
- B、2
- C、1
- D、3
答案:
B
题号:7638
下列语句中符合C语言语法的赋值语句是().
- A、
i=7+1,i++,1+4 - B、
i=1+j+k=i+2; - C、
1=1+i++=i+5; - D、
i=1+2,k=j+2;
答案:
D
题号:11108
有下列程序:
main()
{
int a = 0, b = 0;
a = 10;/*给a赋值
b=20; 给b赋值*/
printf("a+b=%d\n", a + b); /*输出计算结果*/
}
程序运行后的输出结果是().
- A、30
- B、a+b=10
- C、出错
- D、a+b=30
答案:
B
题号:457
设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是
- A、6.000000
- B、5.500000
- C、6
- D、6.500000
答案:
A
题号:7854
设有定义:int x=2;,以下表达式中值不为6的是().
- A、
x++ ,2*x - B、
2*x,x+=2 - C、
x*=x+1 - D、
x*=(1+x)
答案:
B
题号:1971
以下能正确进行字符串赋值的语句是
- A、
char s[5] = "good!"; - B、
char s[5] = {'a', 'e', 'i', 'o', 'u'}; - C、
char s[5]; s = "good!"; - D、
char *s; s = "good!";
答案:
D
题号:11134
设有说明: char w; int x; float y; double z; 则表达式 w*x+z-y 值的数据类型为().
- A、 double
- B、char
- C、float
- D、int
答案:
A
题号:7621
以下不符合C语言语法的赋值语句是().
- A、
j++; - B、
k=2*4,k*4; - C、
j=j=5; - D、
y=float(j);
答案:
D
题号:10042
以下叙述中,正确的是().
- A、构成C程序的基本单位是函数
- B、
main()函数必须放在其它函数之前 - C、所有被调用的函数一定要在调用之前进行定义
- D、可以在一个函数中,定义另一个函数
答案:
A
题号:9278
若有说明: int a[3][4]; 则数组a中各元素().
- A、可在程序的运行阶段得到初值0
- B、可在程序的编译或运行阶段得到初值0
- C、可在程序的编译阶段得到初值0
- D、不能得到确定的初值
答案:
D
题号:9620
已有定义: char c; 程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是().
- A、
c<=('z'-32)&&('a'-32)<=c - B、
isupper(c) - C、
'A'<=c&&c<='Z' - D、
'A'<=c<='Z'
答案:
D
题号:11012
下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空.
#include <stdio.h>
main()
{
int i = 0, j, k;
do
{
i++;
k = 316 - 13 * i;
} while ();
j = k / 11;
printf("316=13*%d+11*%d", i, j);
}
- A、
k/11 - B、
k%11 - C、
k/11==0 - D、
k%11==0
答案:
B
题号:10229
下列叙述中错误的是().
- A、在C语言中随机文件以二进制代码形式存储数据
- B、C语言中的文本文件以ASCⅡ码形式存储数据
- C、在C语言中对二进制文件的访问速度比文本文件快
- D、语句
FILE fp;定义了一个名为fp的文件指针
答案:
D
题号:10843
int i,j,a[2][3]; 按照数组a的元素在内存的排列次序,希望将1,2,3,4,5,6存入a数组中,以下语句无法实现的是().
- A、
for(i=0;i<2;i++) for(j=0;j<3;j++) a[i][j]=i*3+j+1; - B、
for(i=0;i<3;i++) for(j=0;j<2;j++) a[j][i]=j*3+i+1; - C、
for(i=1;i<=6;i++) a[i][i]=i; - D、
for(i=0;i<6;i++) a[i/3][i%3]=i+1;
答案:
C
题号:4294
以下正确的函数定义形式是()。
- A、
double fun(int x,y); - B、
double fun(int x,int y); - C、
double fun(int x;int y) - D、
double fun(int x,int y)
答案:
D
题号:10963
有以下程序:
#include <stdio.h>
void fun(char *c, int d)
{
*c = *c + 1;
d = d + 1;
printf("%c,%c,", *c, d);
}
main()
{
char b = "a", a = "A";
fun(&b, ) a;
printf("%c,%c\n", b, a);
}
程序运行后的输出结果是().
- A、
b,B,b,A - B、
a,B,a,B - C、
a,B,B,a - D、
b,B,B,A
答案:
A
题号:8119
下列程序的输出结果是().
#include<stdio.h>
void main()
{
int a = 0, b = 1, c = 2;
if (++a > 0 || ++b > 0)
++c;
printf("%d,%d,%d", a, b, c);
}
- A、
1,2,2 - B、
0,1,2 - C、
1,1,3 - D、
1,2,3
答案:
C
题号:10371
当x为偶数或奇数时(0除外),其值都为0的表达式是:()
- A、
!x !=0 - B、
x%2==0 - C、
!(x%2) - D、
(x/2*2-x)==0
答案:
A
题号:11249
下面程序的运行结果是().
for(i=3;i<7;i++)printf((i%2)?("**%d\n"):("##%d\n"),i);
- A、
##3 **4 ##5 **6 - B、
##3 **4 ##5 ##6 - C、
**3 ##4 **5 ##6 - D、
**3 ##4 **5 **6
答案:
C
题号:1982
下列运算符中优先j级别最低的运算符是
- A、+
- B、!=
- C、||
- D、<=
答案:
C
题号:10063
若下列选项中的各变量均为整型且已有值,其中,不正确的赋值语句是().
- A、
++i; - B、
k=i=j; - C、
n1=(n2/(n3=2)); - D、
a=b+c=2;
答案:
D
题号:6031
若有语句int *point,a=4;和 point=&a;下面均代表地址的一组选项是()。
- A、
&*a,&a,*point - B、
a,point,*&a - C、
*&point,*point,&a - D、
&a,&*point,point
答案:
D
题号:7405
某二叉树中,度为2的结点有10个,则该二叉树中,有()个叶子结点.
- A、11
- B、12
- C、9
- D、10
答案:
A
题号:8805
从循环体内某一层跳出,继续执行循环外的语句是().
- A、空语句
- B、 return语句
- C、continue语句
- D、break语句
答案:
D
题号:7496
现有定义int a;double b;floatc;char k;,则表达式a/b+c-k值的类型为:.
- A、float
- B、double
- C、int
- D、char
答案:
B
题号:10597
设变量a是int型,f是float型,i是double型,则表达式10+'a'+i*f值的数据类型为。
- A、
float - B、
int - C、不确定
- D、
double
答案:
D
题号:9181
若有说明:int a[10];,则对a数组元素的正确引用是()。
- A、
a[3,5] - B、
a[10-10] - C、
a(5) - D、
a[10]
答案:
B
题号:9479
有以下程序:
#include <stdio.h>
fun(int x, int y)
{
static int m = 0, i = 2;
i += m + 1;
m = i + x + y;
return m;
}
main()
{
int j = 1, m = 1, k;
k = fun(j, m);
printf("%d,", k);
k = fun(j, m);
printf("%d\n", k);
}
执行后的输出结果是()。
- A、11,5
- B、5,11
- C、5,5
- D、11,11
答案:
B
题号:10683
若有定义语句:double x,y,*px,*py; 执行了 px=&x; py=&y; 之后,正确的输入语句是()。
- A、
scanf("%lf %le",px,py); - B、
scanf("%f %f",x,y); - C、
scanf("%f %f"&x,&y); - D、
scanf("%lf %lf",x,y);
答案:
A
题号:9126
有以下程序:
main()
{
int a[][3] = {{1, 2, 3}, {4, 5, 0}}, *pa[3], i;
pa = a;
for (i = 0; i < 3; i++)
{
if (i < 2)
pa[1][i] = pa[1][i] - 1;
else
pa[1][i] = 1;
}
printf("%d\n", a[0][1] + a[1][1] + a[1][2]);
}
执行后输出结果是()。
- A、9
- B、7
- C、0
- D、8
答案:
B
题号:8401
下面程序段的运行结果是()。
a = 1;
b = 2;
c = 2;
while (a < b < c)
{
t = a;
a = b;
b = t;
c--;
}
printf("%d,%d,%d", a, b, c);
- A、1,2,0
- B、2,1,1
- C、1,2,1
- D、2,1,0
答案:
A
题号:5608
有以下程序:
main()
{
int i;
for (i = 0; i < 3; i++)
switch (i)
{
case 1:
printf("%d", i);
case 2:
printf("%d", i);
default:
printf("%d", i);
}
}
执行后输出结果是:
- A、011122
- B、120
- C、012020
- D、012
答案:
A
题号:9395
若变量已正确定义,有以下程序段:
i = 0;
do
printf("%d,", i);
while (i++);
printf("%d\n", i);
其输出结果是()。
- A、1,1
- B、程序进入无限循环
- C、0,1
- D、0,0
答案:
C
题号:10221
以下叙述中,正确的是()。
- A、
main()可作为用户标识符,用以命名任意一个函数作为主函数 - B、C语言程序将从源程序中,第一个函数开始执行
- C、可以在程序中,由用户指定任意一个函数作为主函数,程序将从此开始执行
- D、C语言规定必须用
main()作为主函数名,程序将从此开始执行,在此结束
答案:
D
题号:6740
在C语言中,形参的缺省存储类是()。
- A、
extern - B、
register - C、
auto - D、
static
答案:
C
题号:8121
当a=3,b=5,c=9,d=7时,执行下面的程序段后,x的值为( )。
if (a < b)
if (c < d)
x = 4;
else if (a < c)
if (b < d)
x = 6;
else
x = 8;
else
x = 9;
else
x = 14;
- A、4
- B、9
- C、14
- D、6
答案:
D
题号:10910
设有关键码序列(Q,G,M,Z,A,N,B,P,X,H,Y,S,T,L,K,E),采用堆排序法进行排序,经过初始建堆后关键码值B在序列中的序号是()。
- A、3
- B、1
- C、9
- D、7
答案:
A
题号:6554
定义结构体的关键字是:
- A、
struct - B、
union - C、
enum - D、
typedef
答案:
A
题号:6976
语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是(说明:\b是退格符):
- A、
a\bre\'hi\'y\\\bou - B、
re'hi'you - C、
abre'hi'y\bou - D、
a\bre\'hi\'y\bou
答案:
B
题号:10603
若有int a=5,b=1;,则执行下列程序段后的输出结果为( ):
printf("%d",(a -=b,a *=b+9/5));
- A、5
- B、9
- C、6
- D、8
答案:
D
题号:7748
使用白盒测试方法时,确定测试数据应根据 ___ 和指定的覆盖标准。
- A、程序的内部逻辑
- B、程序的外部逻辑
- C、程序的复杂结构
- D、使用使用说明书
答案:
A
题号:10520
以下正确的说法是( )。
- A、定义函数时,形参的类型说明可以放在函数体内
- B、如果形参与实参类型不一致,以实参类型为准
- C、如果函数值的类型与返回值类型不一致,以函数值类型为准
- D、
return后边的值不能为表达式
答案:
C
题号:3759
运行以下程序后,输出的结果是:
main()
{
int k = -3;
if (k <= 0)
printf("****\n"), else printf("&&&&\n");
}
- A、
**** - B、有语法错误不能通过编译
- C、
&&&& - D、
****&&&&
答案:
A
题号:9670
C语言中,规定,程序中,各函数之间( )。
- A、既允许直接递归调用也允许间接递归调用
- B、允许直接递归调用不允许间接递归调用
- C、不允许直接递归调用允许间接递归调用
- D、不允许直接递归调用也不允许间接递归调用
答案:
A
题号:11051
有以下程序:
#include <stdio.h>
void fun(char *a, char *b)
{
while (*a == '*')
a++;
while (*b = *a)
{
b++;
a++;
}
}
main()
{
char *s = "*****a*b****", t[80];
fun(s, t);
puts(t);
}
程序的运行结果是()。
- A、
a*b**** - B、
*****a*b - C、
ab - D、
a*b
答案:
A
题号:5214
应用缓冲文件系统对文件进行读写操作,打开文件的函数名为()。
- A、
close - B、
fopen - C、
fclose - D、
open
答案:
B
题号:7567
下列语句中符合C语言语法的赋值语句是()
- A、
x=7+y,y++,x++ - B、
x=7+y++=x+7; - C、
x=7+y+z=x+z; - D、
x=7+y,z=x+7;
答案:
D
题号:6123
设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是()。
- A、
p1=p2; - B、
c=*p1+*p2; - C、
c=*p1*(*p2); - D、
p2=c;
答案:
D
题号:10981
阅读下列程序段,程序的输出结果为。
#include "stdio.h"
#define M(X, Y) X *Y
#define N(X, Y) X / Y
main()
{
int a = 5, b = 6, c = 8, k;
k = N(M(a, b), c);
printf("%d\n", k);
}
- A、6
- B、8
- C、3
- D、5
答案:
C
题号:10798
下面函数的功能是()。
sss(s, t) char *s, *t;
{
while (*s)
;
while (*t)
*(s++) = *(t++);
return s;
}
- A、将字符串
s复制到字符串t中 - B、求字符串的长度
- C、将字符串
t续接到字符串s中 - D、比较两个字符串的大小
答案:
C
题号:9682
已知函数func的功能是求两个参数之和,若有int a=1,b=2,c=3,d=4,e=5;,则执行以下语句后的输出结果为()。
printf("%d\n",func((a+b,b+c,c+a),(d+e)));
- A、函数调用出错
- B、9
- C、13
- D、15
答案:
C
题号:10741
下列程序段的输出结果是:()。
void fun(int *x, int *y)
{
printf("%d %d", *x, *y);
*x = 3;
*y = 4;
}
main()
{
int x = 1, y = 2;
fun(&y, &x);
printf("%d %d", x, y);
}
- A、1 2 1 2
- B、2 1 1 2
- C、1 2 3 4
- D、2 1 4 3
答案:
D
题号:7721
字符串"\\\"WWW\123\xCC\t"的长度为()
- A、14
- B、9
- C、8
- D、10
答案:
C
题号:7436
C语言中,定义结构体的保留字是()。
- A、
enum - B、
union - C、
struct - D、
typedef
答案:
C
题号:10929
有以下程序:
#include <stdio.h>
#define PT 3.5;
#define S(x) PT * x * x;
main()
{
int a = 1, b = 2;
printf("%4.1f\n", S(a + b));
}
程序运行后的输出结果是()。
- A、7.5
- B、31.5
- C、14
- D、程序有错无输出结果
答案:
D
题号:442
已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是:
- A、
scanf("%d %d %d",&i,&j,&k); - B、
scanf("%d,%d,%d",&i,&j,&k); - C、
scanf("%2d%2d%2d",&i,&j,&k); - D、
scanf("i=%d,j=%d,k=%d",&i,&j,&k);
答案:
B
题号:13714
以下不符合C语言语法的赋值语句是()。
- A、
a=b=5; - B、
y=(a=3,6*5); - C、
a=1,b=2 - D、
j=j+1;
答案:
C
题号:13712
语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是 (说明:\b是退格符)()。
- A、
re'hi'you - B、
a\bre\'hi\'y\\\bou - C、
abre'hi'y\bou - D、
a\bre\'hi\'y\bou
答案:
A
题号:4832
有以下程序:
main()
{
int a = 5, b = 4, c = 3, d = 2;
if (a > b > c)
printf("%d\n", d);
else if ((c - 1 >= d) == 1)
printf("%d\n", d + 1);
else
printf("%d\n", d + 2);
}
执行后输出结果是:
- A、2
- B、4
- C、编译时出错
- D、3
答案:
D
题号:1457
下面的程序片断所表示的数学函数关系是:
y = 0;
if(x != 0) y = 1;
if(x > 0) y = 1;
else y = 0;
- A、分段函数:当x>0时y=1,当x<=0时y=0
- B、分段函数:当x>0时y=1,当x=0时y=0,当x<0时y=-1
- C、分段函数:当x>0时y=1,当x<=0时y=-1
- D、分段函数:当x>0时y=1,当x=0时y=0,当x<0时y=1
答案:
A
题号:3853
在C语言中,if语句后的一对圆括号中,用以决定分支的流程的表达式()。
- A、只能用关系表达式
- B、只能用逻辑表达式
- C、只能用逻辑表达式或关系表达式
- D、可用任意表达式
答案:
D
题号:4436
t为int类型,进入下面的循环之前,t的值为0:
while( t=1 )
{ ...... }
则以下叙述中正确的是 ___ 。
- A、循环控制表达式不合法
- B、循环控制表达式的值为1
- C、循环控制表达式的值为0
- D、以上说法都不对
答案:
B
题号:5751
选择结构中的条件与循环结构中循环成立的条件,在写法上可以是任一表达式,但其值只能被判断为"真"或"假"。哪个数作为逻辑"假"值()。
- A、-1
- B、非零的数
- C、1
- D、0
答案:
D
题号:13798
以下程序的运行结果是()。
#include <stdio.h>
void main()
{
int i = 1, sum = 0;
while (i < 10)
{
sum = sum + 1;
i++;
}
printf("i=%d,sum=%d", i, sum);
}
- A、运行出现错误
- B、i=9,sum=9
- C、i=2,sum=1
- D、i=10,sum=9
答案:
A
题号:13875
设有数组定义:char array[]="China"; 则数组 array所占的空间为()。
- A、4个字节
- B、6个字节
- C、5个字节
- D、7个字节
答案:
B
题号:13833
若有说明:int a[10]; 则对a数组元素的正确引用是()。
- A、
a(5) - B、
a[3,5] - C、
a[10-10] - D、
a[10]
答案:
C
题号:13866
若有说明:int a[3][4]={0}; 则下面正确的叙述是()。
- A、数组a中每个元素均可得到初值0
- B、只有元素
a[0][0]可得到初值0 - C、数组a中各元素都可得到初值,但其值不一定为0
- D、此说明语句不正确
答案:
A
题号:3277
C语言函数内定义的局部变量的隐含存储类别是:
- A、
auto - B、
extern - C、
static - D、
register
答案:
A
题号:5419
在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。
- A、传递方式由用户指定
- B、地址传递
- C、由实参传给形参,再由形参传回实参
- D、单向值传递
答案:
D
题号:4707
若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()。
- A、函数调用可以出现在表达式中
- B、函数调用可以作为独立的语句存在
- C、函数调用可以作为一个函数的实参
- D、函数调用可以作为一个函数的形参
答案:
D
题号:2743
下列选项中正确的语句组是()。
- A、
char s[8]; s={"Beijing"}; - B、
char *s; s="Beijing"; - C、
char s[8]; s="Beijing"; - D、
char *s; s={"Beijing"};
答案:
B
题号:13960
关于指针概念说法不正确的是()。
- A、一个指针变量只能指向同一类型变量
- B、指针变量可以直接把一个整数赋值给它,而浮点数不可以
- C、一个变量的地址称为该变量的指针
- D、只有同一类型变量的地址才能放到指向该类型变量的指针变量之中
答案:
B
题号:13998
当说明一个结构体变量时系统分配给它的内存是()。
- A、各成员所需内存量的总和
- B、成员中占内存量最大者所需的容量
- C、结构中最后一个成员所需内存量
- D、结构中第一个成员所需内存量
答案:
A
题号:13996
相同结构体类型的变量之间,可以()。
- A、赋值
- B、比较大小
- C、相加
- D、地址相同
答案:
A
题号:964
C语言中,文件由()。
- A、记录组成
- B、由字符(字节)序列组成
- C、由数据块组成
- D、由数据行组成
答案:
B

