单项选择

题号: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、staticregister
  • B、autostatic
  • C、externregister
  • D、autoregister

答案:
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语言中whiledo-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、#defineprintf 都不是 C 语句
  • B、#defineprintf 都是 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&12xmonthstudent_n!
  • B、D56r_1_2name_st_1
  • C、S.bsumaverage_above
  • D、classdaylotus_12day

答案:
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

设变量aint型,ffloat型,idouble型,则表达式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=3b=5c=9d=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

p1p2是指向同一个字符串的指针变量,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