怎么查题,怎么复制,在此就不再赘述了,下面看视频!

这绝对是全网最好的题库,尤其是编程题容不得一个符号错误,所以我整理了这个题库,好不好用自己品,细品!

练习1

第1 题

CPU包含( )。

A. 运算器和控制器
B. 运算器和存储器
C. 控制器和存储器
D. 运算器、控制器、存储器、输入设备和输出设备

【参考答案】 A

第2 题

在计算机中,一个字节的二进制位数为( )。

A. 16
B. 8
C. 32
D. 由 CPU的型号决定

【参考答案】 B

第3 题

在计算机中,一个字长的二进制位数是( )。

A. 16
B. 8
C. 32
D. 由 CPU的型号决定

【参考答案】 D

第4 题

软件与程序的区别是( )。

A. 程序价格便宜、软件价格昂贵
B. 程序是用户自己编写的,而软件是由厂家提供的
C. 程序是用高级语言编写的,而软件是由机器语言编写的
D. 软件是程序以及开发、使用和维护所需要的所有文档的总称,而程序只是软件的一部分

【参考答案】 D

第5 题

CPU能直接识别的是( )。

A. 汇编语言
B. 自然语言
C. 机器语言
D. 高级语言

【参考答案】 C

第6 题

算法是一个计算过程,是程序设计的基础和精髓。一个有效的算法应该具有如下特点,其中错误的是( )。
A. 零个或多个输入及一个或多个输出
B. 无穷性
C. 可行性
D. 确定性

【参考答案】 B

第7 题

一般编写并执行C程序的过程,第一步应该是( )。
A. 使用文本编辑程序,录入源程序,保存文件
B. 使用链接程序进行链接,把.obj文件以及需要的库函数连接到一起,生成可执行的机器语言程序
C. 使用C编译程序编译C源程序文件,生成.obj文件
D. 执行程序,得到运行结果

【参考答案】 A

第8 题

一个用C语言编写的可执行程序必须有的一个函数是( )。

A. 主调函数
B. main函数
C. 被调函数B
D. 子函数

【参考答案】 B

第9 题

一个用C语言编写的可执行程序,总是从( )开始执行。

A. 程序中的第一个函数
B. 程序中第一条可执行语句
C. 第一个包含文件(#include)的第一个函数
D. 程序中唯一的main函数

【参考答案】 D

第10 题

以下正确的常量定义是( )。
A. #define S = 24
B. #define S 24;
C. #define S 24
D. #define S = 24;

【参考答案】 C

第11 题

在C语言中,main函数返回一个( )类型的值。

A. char
B. int
C. double
D. void

【参考答案】 B

第12 题

C程序是由( )组成的。

A. 函数
B. 过程
C. 主程序和子程序
D. 子程序

【参考答案】 A

第13 题

以下叙述中,正确的是( )。

A. C程序中注释部分可以出现在程序中任意合适的地方
B. 构成C程序的基本单位是函数,所有函数名都可以由用户命名
C. 花括号"{"和"}"只能作为函数体的定界符
D. 分号是C语句之间的分隔符,不是语句的一部分

【参考答案】 A

第14 题

C程序编译时,程序中的注释部分( )。

A. 参加编译,并会出现在目标程序中
B. 不参加编译,也不会出现在目标程序中
C. 不参加编译,但会出现在目标程序中
D. 参加编译,但不会出现在目标程序中

【参考答案】 B

第15 题

以下四个程序中,完全正确的是( )。

A.

#include <stdio.h>
int mian(void)
{
    printf("programming!\n");
    return 0;
}

B.

include <stdio.h>
void main(void)
{ 
   printf("programming!\n");
   return 0;
}

C.

#include <stdio.h>
int main(void);
{ 
   printf("programming!\n");
   return 0;
}

D.

#include <stdio.h>
int main(void)
{
   printf("programming!\n");
   return 0;
}

【参考答案】 D

练习2

第1 题

下列标识符中不合法的是( )。

A. DQ
B. Name
C. 2Dim
D. Li_Stone

【参考答案】 C

第2 题

不是C关键字的是( )。

A. sizeof
B. define
C. if
D. typedef

【参考答案】 B

第3 题

不正确的C数据类型关键字是( )。

A. int
B. char
C. signed
D. double

【参考答案】C

第4 题

不是C分隔符的是( )。

A. ;
B. ,
C. #
D. !

【参考答案】 D

第5 题

不是C运算符的是( )。

A. ==
B. ++
C. **
D. +=

【参考答案】C

第6 题

C语言程序中,表达式5%2的结果是( )。

A. 5
B. 1
C. 2.5
D. 2

【参考答案】 B

第7 题

语句:char ch='65';,则变量ch的值为( )。

A. 空
B. 2个字符
C. 3个字符
D. 1个字符

【参考答案】 D

第8 题

设变量A是int 型,B是float型,则表达式A+'q'+B结果的数据类型是( )。

A. 无法确定
B. int
C. float
D. cha

【参考答案】 C

第9 题

若有变量声明:double y; 则能通过scanf语句正确输入数据的语句是( )。

A. scanf("%f", &y);
B. scanf("%f", y);
C. scanf("%d", y);
D. scanf("%lf", &y);

【参考答案】 D

第10 题

已知摄氏温度(℃)与华氏温度(℉)的转换关系是:

如何填写________处才使该程序完成从摄氏温度(c)到华氏温度(f)数值的正确转换。

#include <stdio.h>
int main(void) {
    double c,  f;
    printf("请输入摄氏温度: ");
    scanf("%lf", &c);
    f= ________ / 5 * c + 32;
    printf("%f\n", f);
    return 0;
}

A. -9
B. +9
C. 9
D. 9.0

【参考答案】 D

第11 题

若有表达式:x&&1,和以下表达式( )是等价的。

A. x == 0
B. x != 1
C. x
D. x == 1

【参考答案】 C

第12 题

对于:int i, j=6;
以下( )说法是正确的。

A. 不能通过编译
B. i不会被初始化,而j是6
C. i和j的初始值都是6
D. i被初始化为0,而j是6

【参考答案】 B

第13 题

对于以下代码段:

int i;
scanf("%d", &i);
i %= 4;

执行后,i值会有( )种可能性。

A. 7
B. 0
C. 不好说
D. 2

【参考答案】 A

第14 题

对于语句:x *= y + 2;
还可以写为( )。

A. x = x * y + 2;
B. x = 2 + y * x;
C. x = x * (y + 2);
D. x = y + 2 * x;

【参考答案】 C

第15 题

设a为整型变量,不能正确表达数学关系:10<a<15的C语言表达式是( )。

A. 10<a<15
B. a == 11 ||a == 12 || a == 13 || a == 14
C. a > 10 && a < 15
D. !(a <= 10) && !(a >= 15)

【参考答案】 A

第16 题

设x、y、z均为int型变量,则执行以下语句后x、y、z的值为( )。
x=1; y=0; z=2; y++&&++z||++x;

A. 2、1、2
B. 2、1、3
C. 2、0、3
D. 2、2、3

【参考答案】 A

第17 题

在下列数学式中,变量x和y为double类型,而变量a和b为int类型,对应该数学式的正确表达式是( )。

A. 6/7*a*b/x/y
B.6/x*a*b/7/y
C. 6*a*b/7/x/y
D. 6*a*b/7*x*y

【参考答案】 B

第18 题

若有变量声明:
int a = 3, b = 4, c = 5; 下列表达式中,值为0的是( )。

A. 'a' && 'b'
B. a <= b
C. a || b + c && b - c
D. !(a< b && c < b || b)

【参考答案】 D

第19 题

若有变量声明:
int x = 5, y = 7, z = 8; 执行表达式:z += x++|| y++ || ++z后,x、y、z的值分别是( )。

A. 6,7,9
B. 6,8,10
C. 6,8,8
D. 6,8,1

【参考答案】 A

第20 题

若有变量声明:
int a, b;
执行语句:b = (a = 3* 5, a * 4), a + 15; 后,b的值为( )。

A. 15
B. 30
C. 60
D. 90

【参考答案】 C

第21 题

若a为整型变量,且其值为3,则执行完表达式:a += a -= a * a后,a的值是( )。

A. -3
B. 9
C. -12
D. 6

【参考答案】 C

第22 题

若有变量声明:int x = 10, y = 4, f; double m; 则执行表达式:f = m = x / y后,f、m的值分别是( )。

A. 2,2.5
B. 3,2.5
C. 2.5,2.5
D. 2,2.0

【参考答案】 D

第23 题

若a1、a2、a3和a4均为整型变量,则以下正确的表达式是( )。

A. a1 =25 % 3.3
B. a2 = a1 + a3 = 3 * 5
C. a3 =078
D. a4 = 0xa2

【参考答案】 D

第24 题

如果在主函数内声明一个整数变量a,但是没有给定初始值,那么当第一次使用a 时,其值为( )。 这里NULL表示空值。

A. 0
B. 任意值
C. 1
D. NULL

【参考答案】 B

第25 题

C语言用sizeof计算变量在内存中的字节数,其中sizeof是( )。

A. 语句
B. 一元运算符
C. 标识符
D. 函数

【参考答案】 B

第26 题

若有:int x, y, z, m = 10, n = 5;
执行以下语句:

x = (--m== n++) ? --m : ++n;
y = m++;
z = n;

则x、y、z的值分别为( )。

A. 7,9,7
B. 5,9,7
C. 6,11,5
D. 10,11,10

【参考答案】 A

第27 题

已定义ch为字符型变量,NULL表示空值,以下赋值表达式中错误的是( )。

A. ch = NULL
B. ch = '\xaa'
C. ch = 62+3
D. ch = '\'

【参考答案】 D

第28 题

( )是非法的C语言转义字符。

A. '\''
B. '\037'
C. '\0xf'
D. '\b'

【参考答案】 C

第29 题

关于C程序关系运算、逻辑运算后得到的逻辑值的表述中,正确的是( )。

A. 假为-1,真为1
B. 假为0,真为随机的一个非0值
C. 假为0,真为1
D. 假为0,真为不确定的值

【参考答案】 C

第30 题

判断年份y是否为闰年的表达式为( )。

A. y % 4 == 0 && y % 100 != 0
B. (y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)
C. (y % 4 == 0) || (y % 400 == 0 && y % 100 != 0)
D. y % 4 == 0

【参考答案】 B

练习3

第1 题

C语言的语句类型不包括( )。

A. 预处理命令
B. 简单语句
C. 复合语句
D. 控制语句

【参考答案】A

第2 题

以下叙述中,错误的是( )。

A. C语言的简单语句必须以分号结束
B. 复合语句在语法上被看作一条语句
C. 赋值表达式末尾加分号就构成赋值语句
D. 空语句出现在任何位置都不会影响程序运行

【参考答案】D

第3 题

关于C语言语句书写格式的说法,错误的是( )。

A. 允许将一个语句分成多行书写
B. 建议使用空格或Tab来做合理的间隔、缩进或对齐,使得程序形成逻辑相关的块状结构
C. 必须一行一个语句
D. 允许一行书写多个语句

【参考答案】 C

第4 题

以下关于C语言注释的说法,正确的是( )。

A. //注释表示从//开始直到本行末尾的所有字符均是注释内容
B. 注释将参与编译器编译,并形成指令
C. 写程序时必须书写注释,否则会对程序的功能造成影响
D. 可以采用/*……*/的形式书写多行注释,其中的注释内容可以是任何字符

【参考答案】 A

第5 题

以下叙述中错误的是( )。

A. 调用scanf函数时,每个输入项必须为地址形式
B. 调用scanf函数时,如果输入项个数比给定的格式说明符多,将会出现编译错误
C. 使用scanf函数时,必须在之前包含头文件stdio.h
D. 在C语言中,整数可以以多种进制例如十进制、八进制或十六进制的形式输入

【参考答案】 B

第6 题

若定义x为double型变量,则能正确输入x值的语句是( )。

A. scanf("%lf", &x);
B. scanf("%5.1f", &x);
C. scanf("%f", &x);
D. scanf("%f", x);

【参考答案】 A

第7 题

有输入语句:scanf("a=%d,b=%d,c=%d",&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,正确的数据输入方式是( )。↙表示回车,└┘表示空格。

A. a=1,b=3,c=2↙
B. 1,3,2↙
C. a=1└┘b=3└┘c=2↙
D. 132↙

【参考答案】 A

第8 题

已知如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是( )。↙表示回车,└┘表示空格。

int a1, a2;
char c1, c2;
scanf("%d%d", &a1, &a2);
scanf("%c%c", &c1, &c2);

A. 10└┘20↙
AB↙
B. 10└┘20└┘AB↙
C. 1020AB↙
D. 10└┘20AB↙

【参考答案】D

第9 题

阅读下述代码段,设变量c的值是68,运行结果是( )。提示:小写字母a的ASCII码是97, 大写字母A的ASCII码是65。

char c;
if(c >= 'A' && c <= 'Z')
    printf("%c\n", c+32);
else
    printf("%d\n", c);

A. D
B. 100
C. d
D. 68

【参考答案】 C

第10 题

对于以下代码段:

int i = 6;
if(i <= 6)
    printf("hello\n");;
else
    printf("bye-bye\n");;

下面( )是对的。

A. 打印出"hello"
B. 打印出"hello bye-bye"
C. 打印出"bye-bye"
D. 不能通过编译

【参考答案】 D

第11 题

阅读下面代码段,s 的值是( )。

int a = 1, b = 2, c = 6, s;
if(a <= b || c < 0 || b < c)
    s = b + c;
else
    s = a + b + c;   

A. 10
B. 8
C. 11
D. 9

【参考答案】 B

第12 题

如下代码段的功能是判断一个4位自然数个位和十位数字是否相同,在划线处________应该填写的表达式是( )。

int num;
scanf("%d", &num);
if(num >= 1000 && num < 10000)
    if ________)
        printf("该4位自然数个位和十位数字相同\n");
    else
        printf("该4位自然数个位和十位数字不同\n");

A. num %10 == num / 10 % 10
B. num / 1000 == num % 10
C. num /10 % 10 == num / 100 % 10
D. num / 100 % 10 == num % 10

【参考答案】 A

第13 题

下面程序的输出结果是( )。

#include <stdio.h>
int main(void) {
    int a = 1, b = 2, c = 3;
    if(a == 1 && b == 2)     
        if(b != 2 || c != 3)
            printf("%d,%d,%d\n", a, b, c);
        else
            printf("%d,%d,%d\n", a, b, c);
    else
        printf("%d,%d,%d\n", a, b, c);
    return 0;
}

A. 1,3,3
B. 1,3,2
C. 1,2,3
D. 3,2,1

【参考答案】 C

第14 题

以下代码段中与语句:k = a > b ? (b > c ? 1 : 0) : 0; 功能等价的是( )。

A.

if((a > b) && (b > c))
   k = 1;
else
   k = 0;

B.

if((a > b) || (b > c))
   k = 1;
else
   k = 0;`

C.

if(a <= b)
   k = 0;
else if(b <= c)
   k = 1;

D.

if(a > b)
   k = 1;
else if(b > c)
   K = 1;
else
   k = 0;

【参考答案】 A

第15 题

对于int x, y;语句

if(x < 0)
    y = -1;
else if(!x)
    y = 0;
else
    y = 1;

等价于( )。

A.

y = 0; 
if(x != 0) 
   if(x > 0) 
       y = 1; 
   else 
       y = -1;

B.

y = 0; 
if (x >= 0) 
   if(x) 
       y = 1; 
   else
       y = -1;

C.

if(x >= 0) 
   y = 0; 
if(x) 
   y = 1; 
else 
   y = -1;

D.

if(x != 0) 
   if(x > 0) 
       y = 1; 
   else 
       y = -1;

【参考答案】 A

第16 题

有以下代码段:

int a = 0, b = 2, c = 3;
if(c = a)
    printf("%d\n", c);
else
    printf("%d\n", b);

执行后,输出结果是( )。

A. 1
B. 2
C. 3
D. 编译有错

【参考答案】 B

第17 题

“if(表达式)”中的“表达式”( )。

A. 只能是算术表达式
B. 逻辑表达式、关系表达式和算术表达式都可以
C. 只能是逻辑表达式
D. 只能是关系表达式

【参考答案】 B

第18 题

对嵌套if语句的规定是else总是与( )配对。

A. 之前最近的尚未配对的if
B. 最前面的if
C. 第一个if
D. 缩进位置相同的if

【参考答案】A

第19 题

对于下面程序,( )是正确的判断。

#include <stdio.h>
int main(void) {
    int x,y;
    scanf("%d%d", &x, &y);
    if(x > y)
        x=y;
        y=x;
    else
        x++;
        y++;
    printf("%d,%d", x, y);
    return 0;
}

A. 有语法错误,不能通过编译
B. 若输入3和4,则输出4和5
C. 若输入4和3,则输出4和5
D. 若输入4和3,则输出3和4

【参考答案】 A

第20 题

对于下面程序段,( )是正确的。

int x = 0, y = 0, z = 0;
if(x = y + z)
    printf("***");
else
    printf("###");

A. 输出:***
B. 有语法错误,不能通过编译
C. 输出:###
D. 可以编译,但不能通过连接,所以不能运行

【参考答案】 C

第21 题

执行语句序列

int x;
scanf("%d", &x);
if(x > 250)
    printf("X");
if(x < 250)
    printf("Y");
else
    printf("X");

时,不可能出现的情况是( )。

A. 显示:Y
B. 显示:XY
C. 显示:X
D. 显示:XX

【参考答案】 B

第22 题

a = 1,b = 3,c = 5,d = 4,则执行下面程序段后x的值是( )。

if(a < b)
    if(c < d)
        x = 1;
    else
        if(a < c)
            if(b < d)
                x = 2;
            else
                x = 3;
        else
            x = 6;
else
    x = 7;

A. 4
B. 1
C. 3
D. 2

【参考答案】 D

第23 题

如下程序

#include <stdio.h>
int main() {
    int n = 0, m = 1, x = 2;
    if(!n) x -= 1;
    if(m) x -= 2;
    if(x) x -= 3;
    printf("%d", x);
    return 0;
}

的运行结果是( )。

A. 1
B. -4
C. 2
D. 0

【参考答案】 B

第24 题

关于switch语句的说法正确的是( )。

A. switch语句的每个case分支中只能设置一个语句
B. switch语句中default分支是可选的
C. switch语句后边的圆括号可以省略
D. switch语句中各个case分支顺序没有规定,但是default分支必须处在所有case分支之后,否则会影响程序执行效果

【参考答案】 B

第25 题

switch语句语法中的case分支必须是常量表达式且互不相同,值不能为( )类型。

A. 浮点型
B. 整型
C. 枚举型
D. 字符型

【参考答案】 A

第26 题

int i = 10; 执行下面程序段后,变量i的值是( )。

switch(i) { 
    case 9: i+=1;
    case 10: i+=1;
    case 11: i+=1;
    default: i+=1;
}

A. 13
B. 11
C. 12
D. 10

【参考答案】 A

第27 题

若int i = 1; 执行下面程序段后,变量i的值是( )。

switch (i) {
    case '1': i+=1;
    case '2': i+=1;
    case '3': i+=1;
    default: i+=1;
}

A. 3
B. 2
C. 5
D. 4

【参考答案】 B

第28 题

若有定义:float w; int a,b; 则合法的switch语句是( )。

A.

switch(a);
{
   case 1:printf("*\n");
   case 2:printf("**\n");
}

B.

switch(a+b);
{
   case 1:printf("*\n");
   case 2:printf("**\n");
   default:printf("\n");
}

C.

switch(b)
{
   case 1:printf("*\n");
   default:printf("\n");
   case 1+2:printf("**\n");
}

D.

switch(w)
{
   case 1.0:printf("*\n");
   case 2.0:printf("**\n");
} 

【参考答案】C

第29 题

下面代码段表示以下( )式子。

if(a < b) {
    if(c == d)
        x = 1;
}
else
    x = 2;

A.

B.

C.

D.

【参考答案】 A

第30 题

如有定义语句int a,b; double x; 则下列选项中没有错误的是( )。提示:(int)x 表示将变量x的值强制转换成int类型。若x初始值为3.2则(int)x的结果是int类型,值为3。

A.

switch(x%2) {
   case 0: a++; break;
   case 1: b++; break;
   default: a++; b++;
}

B.

switch((int)x%2 ) {
    case 0: a++; break;
    case 1: b++; break;
    default: a++; b++;
}

C.

switch(x%2) {
   case 0: a++; break;
   case 1.0: b++; break;
   default: a++; b++;
}

D.

switch((int)x%2.0) {
   case 0: a++; break;
   case 1: b++; break;
   default: a++; b++;
}

【参考答案】 B

练习4

第1 题

以下对枚举类型的声明中,正确的是( )。

A. enum a = {one, two, three};
B. enum a {one = 9, two = -1,three};
C. enum a = {"one", "two", "three"};
D. enum a {"one","two", "three"};

【参考答案】 B

第2 题

如下程序可以打印所有3位的Armstrong数,Armstrong数是指其值等于它本身每位数字立方和的数,如153就是一个Armstrong数。 请在划线处________填写适当内容,完成上述功能。

#include <stdio.h>
int main(void) {
    int i, bit0, bit1, bit2, tmp0;
    for(i = 100; i < 999; ++i) {
        bit0 = i % 10;
        bit1 = ________;
        bit2 =  i/ 100;
        if(bit0 * bit0 * bit0 + bit1 * bit1 * bit1 + bit2 * bit2 * bit2 == i)
            printf("%d\n", i);
    }
    return 0;
}

A. i % 10 / 100
B. i / 10 % 10
C. i / 100 % 10
D. i % 100

【参考答案】 B

第3 题

有以下代码段:

int s1 = 0, s2 = 0, s3 = 0, s4 = 0, t;
for(t = 1; t <= 4; ++t)
    switch(t) {
        case t >= 4:
            s1++;
            break;
        case t >= 3:
            s2++;
            break;
        case t >= 2:
            s3++;
        default:
            s4++;
    }
    printf("%d,%d,%d,%d\n",s1,s2,s3,s4);

执行后,输出结果是( )。

A. 1,1,2,2
B. 1,1,1,2
C. 1,2,3,2
D. 语法错,编译通不过

【参考答案】 D

第4 题

在代码:
`
while( !e)
`
中,!e等价于( )。

A. e == 0
B. e != 0
C. e == 1
D. e != 1

【参考答案】 A

第5 题

循环语句
`
while(x % 3)

a++;

`
中的表达式x % 3等价于( )。

A. x % 3 == 1
B. x % 3 != 0
C. x % 3 == 2
D. x % 3 == 0

【参考答案】 B

第6 题

循环语句
`
while (!x && !y)
`
中的循环条件表达式等价于( )。

A. x=0 && y=0
B. !(x|| y)
C. !(x == 0 || y == 0)
D. !(x == 0 && y == 0)

【参考答案】 B

第7 题

若k为整型,以下while循环执行( )次。

k = 2;
while(k = 0)
    printf("%d", k), k--;
printf("\n");

A. 无限次
B. 2次
C. 0次
D. 1次

【参考答案】 C

第8 题

若k为整型变量,则下面while循环执行的次数为( )。

k = 10;
while(k >= 5)
    k = k - 1;

A. 4次
B. 7次
C. 5次
D. 6次

【参考答案】 D

第9 题

有以下代码段:

int k =10;
while(k--);
printf("k=%d\n",k);

执行后,输出结果是( )。

A. k=0
B. k=-1
C. k=1
D. while构成无限循环

【参考答案】 B

第10 题

对于以下代码:

int i = 6;
do {
    printf("%d", i--);
} while(0);

( )是对的。

A. 打印不出东西
B. 打印出5
C. 打印出6
D. 因为while(0),无法编译

【参考答案】 C

第11 题

设整型变量x的当前值为1,执行以下循环语句后,输出结果是( )。

do {
    printf("%d ", x);
} while(!(--x));

A. 0
B. 1
C. 1 0
D. 死循环,输出很多值

【参考答案】 C

第12 题

以下叙述正确的是( )。

A. do-while语句构成的循环只能用break语句退出
B. 用do-while语句构成的循环,在while 后的表达式为非零时结束循环
C. 用do-while语句构成的循环,在while后的表达式为零时结束循环
D. do-while语句构成的循环不能用其他语句构成的循环来代替

【参考答案】 C

第13 题

对于以下代码:

int i;
for(i=0; i<10; i++)
    printf("%d", i);

for循环后,i的值是( )。

A. 9
B. i不存在
C. 10
D. i没有确定的值

【参考答案】 C

第14 题

以下( )语句是错误的。

A. for(i=0; i<10; i--);
B. for(i=0, j=0; i<10; i++; j++);
C. for(i=0; i<10, j<10; i++);
D. for(i=0; j<10; j++);

【参考答案】B

第15 题

对for(表达式1;;表达式3)

可理解为( )。

A. for(表达式1; 1; 表达式3)
B. for(表达式1; 表达式3; 表达式3)
C. for(表达式1; 表达式1; 表达式3)
D. for(表达式1; 0; 表达式3)

【参考答案】 A

第16 题

假设有变量声明:int k;

下面代码段编译运行的情况是( )。

for(k = 1; k; k++)
    printf("%d ", k);

A. 编译错误
B. 能运行,正常结束
C. 以上说法都不对
D. 能运行,是死循环

【参考答案】 B

第17 题

要使下面程序输出10个整数,则在划线处________填入正确的数是( )。

for(i = 0; i <= ________ ;)
    printf("%d\n", i += 2);

A. 18
B. 20
C. 9
D. 10

【参考答案】 A

第18 题

下面程序的输出结果是( )。

int main(void) {
    int s, k;
    for(s = 1, k = 2; k < 5; k++)
        s += k;
    printf("%d\n", s);
    return 0;
}

A. 9
B. 15
C. 1
D. 10

【参考答案】 D

第19 题

下面有关for循环的正确描述是( )。

A. for循环只能用于循环次数已经确定的情况
B. for循环是先执行循环体语句,后判断表达式
C. for循环的循环体可以包含多条语句,但必须用花括号括起来
D. 在for循环中,不能用break语句跳出循环体

【参考答案】 C

第20 题

在循环语句的循环体中使用break语句的作用是( )。

A. 结束本次循环
B. 终止当前整个循环的执行
C. 结束switch语句
D. 结束程序的执行

【参考答案】 B

第21 题

以下代码段的输出为( )。

counter = 0;
for(i =0; i < 10; ++i)
    for(j = 0; j < 10; ++j) {
        if(i == j)
            continue;
        counter++;
    }
printf("%d\n",counter);

A. 55
B. 90
C. 45
D. 100

【参考答案】 B

第22 题

以下代码段执行后的输出结果是( )。

int a = 1, b = 2, c = 3, t;
while(a < b < c) {
    t = a;
    a = b;
    b = t;
    c--;
}
printf("%d,%d,%d", a, b, c);

A. 2,1,0
B. 2,1,1
C. 1,2,1
D. 1,2,0

【参考答案】 C

第23 题

while循环和do-while循环的主要区别是( )。

A. while的循环控制条件比do-while的循环控制条件严格
B. do-while的循环体至少无条件执行一次
C. do-while的循环体不能是复合语句
D. do-while允许从外部转到循环体内

【参考答案】 B

第24 题

以下不是死循环的代码段是( )。

A.

int s = 36;
while(s); 
   --s;

B.

int i = 100;
while(1) {
   i = i % 100 + 1;
   if(i > 100)
       break;
}

C.

for( ; ; );

D.

int k = 0;
do {
   ++k;
} while(k >= 0);

【参考答案】 D

第25 题

以下是死循环的代码段是( )。

A.

i = 32767;
do { 
   if(i < 0)
       break; 
} while(++i);

B.

for(i = 1; ; ) {
   if(i++ % 2 == 0)
       continue;
   if(i++ % 3 == 0)
       break;
}

C.

for(i = 1; ; )
   if(++i < 10)
       continue;

D.

int k = 0;
i = 1;
while(i--);

【参考答案】 C

第26 题

下面关于循环语句的描述中,( )是错误的。

A. 循环体内可以包含有循环语句
B. 循环体内必须同时出现break语句和continue语句
C. 循环体内可以出现选择(分支)语句
D. 循环体内可以是空语句

【参考答案】 B

第27 题

对于break语句和continue语句,说法正确的是( )。

A. break语句只应用与循环体中
B. continue语句只应用于循环体中
C. break是无条件跳转语句,continue不是
D. break和continue的跳转范围不够明确,容易产生问题

【参考答案】 B

第28 题

下面代码段中while循环的循环次数是( )。

int i = 0;
while(i < 10) {
    if(i < 1)
        continue;
    if(i == 5)
        break;
    i++;
}

A. 1
B. 10
C. 6
D. 死循环,不能确定次数

【参考答案】 D

第29 题

下面程序执行后的输出结果是( )。

#include <stdio.h>
int main(void) {
    int i = 0, s = 0;
    for( ; ; ) {
        if(i == 3 || i == 5)
            continue;
        if(i == 6)
            break;
        i++;
        s += i;
    }
    printf("%d", s);
    return 0;
}

A. 10
B. 13
C. 21
D. 死循环

【参考答案】 D

第30 题

下面程序执行后的输出结果是( )。

#include <stdio.h>
int main(void) {
    int k = 0, m = 0, i, j;
    for(i = 0; i < 2; i++) {
        for(j = 0; j < 3; j++)
            k++;
        k -= j;
    }
    m =i + j;
    printf("k=%d,m=%d", k, m);
    return 0;
}

A. k=0,m=3
B. k=0,m=5
C. k=1,m=3
D. k=1,m=5

【参考答案】B

练习5

第1 题

以下正确的函数头是( )。

A. double fun(int x, int y)
B. double fun(int x; int y)
C. double fun(int x, y)
D. double fun(int x, y);

【参考答案】 A

第2 题

以下函数原型,错误的是( )。

A. int f(int i);
B. int f(i);
C. int f(int);
D. int f(void);

【参考答案】 B

第3 题

以下函数定义,能正确编译的是( )。

A.

double fun(int x, y) {
   int z = x + y;
   return z;
}

B.

double fun(int x, int y) {
   int x, y;
   double z;
   z = x + y;
   return z;
}

C.

double fun(int x, int y) {
   z = x + y;
   return z;
}

D.

double fun(int x, int y) {
   double z;
   z = x + y;
   return z;
}

【参考答案】D

第4 题

以下( )函数定义是错误的。

A.

void f() { }

B.

int f() {
   return 0;
}

C.

void f(int i) { 
   return i;
}

D.

int f(void) {
   return 0;
}

【参考答案】 C

第5 题

给定函数原型:void f(double dd); 和变量声明:double a;

下列函数调用( )是错误的。

A. f(1.0f);
B. f(1);
C. f(&a);
D. f(sizeof(a));

【参考答案】 C

第6 题

给定函数原型:int f(int x, int y); 则下列函数调用正确的是( )。

A.

int n, a = 0, b = 1;
n = f(int a, int b);

B.

int n, a = 0,b = 1;
n = int f(x, y);

C.

int n = 1 ,a = 0, b = 1;
n = f(a, n);

D.

int n;
n = f();

【参考答案】 C

第7 题

已知函数f的定义如下:

void f(void) {
    printf("That's great");
}

则调用函数f的正确形式是( )。

A. f;
B. f();
C. f(void);
D. f(1);

【参考答案】 B

第8 题

函数调用表达式fun((exp1,exp2), (exp3,exp4,exp5))中的参数个数是( )。

A. 1
B. 2
C. 3
D. 5

【参考答案】 B

第9 题

函数返回类型是void,下列说法正确的是( )。

A. 函数的返回值是0
B. 如果函数内部没有return语句,则执行到函数体结束处的右花括号时返回
C. 如果使用return语句返回,则 return 后面必须有一个整型表达式
D. 函数仅可以通过return 语句返回

【参考答案】 B

第10 题

函数返回类型是由( )决定的。

A. return语句中的表达式类型
B. 调用函数的主调函数类型
C. 调用函数时临时
D. 定义函数时所指定的函数类型

【参考答案】D

第11 题

在一个函数内使用 return 会( )。

A. 跳出该函数
B. 跳到该函数的起点
C. 跳到该函数的下一个 return
D. 跳出目前所在的循环

【参考答案】 A

第12 题

以下( )说法是正确的。

A. 所有自定义函数都需有相应的函数声明
B. 一个C程序中可以有多个main函数
C. 所有的函数都必须有返回结果
D. C程序由一个或多个函数组成

【参考答案】 D

第13 题

在函数体中,( )是正确的。

A. 可以定义和调用其它函数
B. 可以调用但不能定义其它函数
C. 不可调用但可以定义其它函数
D. 不可调用也不可定义其它函数

【参考答案】 B

第14 题

若有如下程序:

#include <stdio.h>
int func(int a, int b) {
    return (a + b);
}
int main(void) {
    int x = 2, y = 5, z = 8, r;
    r = func(func(x, y), z);
    printf("%d\n", r);
    return 0;
}

该程序的输出结果是( )。

A. 12
B. 13
C. 14
D. 15

【参考答案】 D

第15 题

在划线处________填写适当内容完成程序,本程序当输入字符是数字时输出字符串“number”,否则输出“none”

#include <stdio.h>
int check_number(char x) {
    if ((x >= '0') && (x <= '9'))
        return 1;
    else
        return 0;
}
int main(void) {
    char ch;
    while(1) {
        scanf("%c", &ch);
        if(ch=='#') break;
        if(________)
            printf("number\n");
        else 
            printf("none\n");
    }
    return 0;
}

A. check_number(!ch)
B. check_number(ch+1)
C. !check_number(ch)
D. check_number(ch)

【参考答案】 D

第16 题

以下叙述中正确的是( )。

A. C程序函数之间既允许直接递归调用也允许间接递归调用
B. C程序函数之间允许直接递归调用但不允许间接递归调用
C. C程序函数之间不允许直接递归调用但允许间接递归调用
D. C程序函数之间既不允许直接递归调用也不允许间接递归调用

【参考答案】 A

第17 题

以下叙述中不正确的是( )。

A. 在不同的函数中可以使用相同名字的变量
B. 函数中的形式参数是局部变量
C. 在一个函数内定义的变量只在本函数范围内有效
D. 在一个函数内的复合语句中定义的变量在本函数范围内有效

【参考答案】 D

第18 题

下列描述不正确的是( )。

A. 静态本地变量分配在全局变量所在的地方
B. 全局变量定义在函数外部
C. 本地变量定义在函数内部
D. 全局变量定义在函数内部

【参考答案】 D

第19 题

下面代码段执行后,输出结果是( )。

int i = 0;
if(i == 0) {
    int i = 3;
}
printf("%d\n", i);

A. 0
B. 2
C. 4
D. 1

【参考答案】 A

第20 题

若有以下函数:

void fun(…) {
    static int a = 1;
    …
}

则下列说法中错误的是( )。

A. 每次调用fun函数时,变量a的值是上次调用结束时a的值
B. 在fun函数外,可以用变量名a直接引用a的值
C. 在其它函数中,可以出现变量声明:double a = 2.5;
D. fun函数的形式参数不能取名为a

【参考答案】 B

第21 题

函数f定义如下,执行语句:sum =f(5) + f(3); 后,sum的值应为( )。

int f(int m) {
    static int i = 0;
    int s = 0;
    for(; i <= m; i++)
        s += i;
    return s;
}

A. 21
B. 16
C. 15
D. 8

【参考答案】 C

第22 题

以下对宏定义的描述中,错误的是( )。

A. 宏不存在类型问题,宏名无类型,它的参数也无类型
B. 宏替换不占用运行时间
C. 宏替换时先求出实参表达式的值,然后代入形参运算求值
D. 宏替换只不过是字符替代而已

【参考答案】 C

第23 题

执行下列代码后,变量t的值是( )。

#define fun(a) 4*a;
int t;
t = fun(1+2);

A. 4
B. 6
C. 12
D. 8

【参考答案】 B

第24 题

若有如下程序:

#include <stdio.h>
int x =1;
int f(int y) {
    return (x + y);
}
#define x 2
int main(void) {
    printf("%d\n", f(x));
    return 0;
}

该程序的输出结果是( )。

A. 1
B. 2
C. 3
D. 4

【参考答案】 C

第25 题

以下对预处理指令的描述中,正确的是( )。

A. 以“#”开头的行,可出现在函数体内或函数体外
B. 以“#”开头的行,后面不可有分号
C. 以“#”开头,可出现在一行中的任何位置
D. 以“#”开头的行,必须放在程序开头

【参考答案】 A

第26 题

编译以下程序时,( )。

#include <stdio.h>                /* 1行 */
#define AA 123;                     /* 2行 */
int main(void) {                      /* 3行 */
    printf("%d\n", AA);             /* 4行 */
    return 0;                             /* 5行 */
}

A. 第2行出错
B. 第4行出错
C. 第2行、第4行均出错
D. 无错误

【参考答案】 B

第27 题

若有以下宏定义和语句:

#define M(a, b) a * b;         /* 1行 */
int x = M(3 + 1, 5 + 6), y;   /* 2行 */
y = M(3, 4);                         /* 3行 */

则编译时,( )。

A. 第1行出错
B. 第2行出错
C. 第3行出错
D. 第2行和第3行出错

【参考答案】 D

第28 题

若有如下程序:

#define N 2
#define M N + 1
#define NUM 2 * M + 1
int main(void) {
    int i;
    for(i = 1; i <= NUM; ++i)
        printf("%d\n", i);
    return 0;
}

该程序中的for循环执行的次数是( )。

A. 5
B. 6
C. 7
D. 8

【参考答案】 B

第29 题

以下程序的输出结果是( )。

#include <stdio.h>
#define SQR(x) x * x
int main(void) {
    int a, k = 3;
    a = ++SQR(k + 1);
    printf("%d\n", a);
    return 0;
}

A. 8
B. 9
C. 17
D. 20

【参考答案】 B

第30 题

关于函数原型声明,以下叙述中错误的是( )。

A. 如果函数定义出现在函数调用之前,可以不必加函数原型声明
B. 函数在调用之前,一定要给出函数原型或函数定义,保证编译系统进行调用检查
C. 如果在所有函数定义之前,在函数外部已做了声明,则各个主调函数不必再做函数原型声明
D. 标准库函数不需要函数原型声明

【参考答案】D

练习6

第1 题

地址是指( )。

A. 变量的类型
B. 变量的值
C. 变量所在的内存单元编号
D. 变量本身

【参考答案】 C

第2 题

指针( )。

A. 的内容为指向内存的地址
B. 是一块内存区域的别名
C. .的内容不可变
D. 不能为空

【参考答案】 A

第3 题

若有变量定义
`
int x, y=5, *p = &x;
`
则下列能完成x = y功能的是( )。

A. *p = y;
B. *p = &y;
C. x = *p;
D. x = &y;

【参考答案】 A

第4 题

如果i是变量,而p是指向i的指针,则下列表达式( )可以代替i。

A. *&p
B. &i
C. &*i
D. *&i

【参考答案】 D

第5 题

如果i是int型的变量,且p和q都是指向i的指针,那么下列赋值( )是有效的。

A. *p = q
B. p = i
C. &p = q
D. p = &*q

【参考答案】 D

第6 题

两个指针变量,所指的类型相同,则它们之间不能进行的运算是( )。

A. <
B. -
C. +
D. ==

【参考答案】 C

第7 题

若有变量定义:
`
int a = 512, *p = &a;
`
*p的值为( )。

A. 变量a的地址
B. 512
C. 0
D. 无确定值

【参考答案】 B

第8 题

下面( )选项可以交换指针p和q所指的int型变量的值。

A.

temp = p; 
*p = *q; 
q = temp;

B.

temp = &p; 
*p = *q; 
q = *temp;

C.

temp = *p; 
*p = *q; 
*q = temp;

D.

temp = p; 
p = q; 
q = temp;

【参考答案】 C

第9 题

若有如下代码段:

int *p, a = 10, b = 1;
p = &a;
a = *p +b;

执行该代码段后,a的值为( )。

A. 12
B. 出错
C. 10
D. 11

【参考答案】D

第10 题

若有如下代码段:

int u =4, v = 8, *p = &u, *q = &v;
q = NULL;
p = q;
*p = 3;

*p + *q的结果是( )。

A. 出错
B. 8
C. 4
D. 12

【参考答案】 A

第11 题

若有函数原型:void f(int, int *);
和变量声明:int a =2, *p = &a;
则下列函数调用正确的是( )。

A. f(a, *p);
B. f(*p, a);
C. f(a, &p);
D. f(*p, &a);

【参考答案】 D

第12 题

以下函数的返回值是( )。

char *fun(char * p) {
    return p;
}

A. p自身的地址值
B. p[0]这个字符
C. p指向的地址值
D. 无意义的值

【参考答案】 C

最后修改:2020 年 06 月 19 日 01 : 27 PM
如果觉得我的文章对你有用,请随意赞赏