视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
湖北大学软件工程专业2020年C语言程序设计期末综合考试
2025-09-26 21:43:41 责编:小OO
文档
湖北大学软件工程专业2020年C语言程序设计期末综合考试

基本信息:[矩阵文本题] *

姓名:________________________
学号:

________________________
1. C语言源程序名的后缀是( )。 [单选题] *

.exe
.obj
.c(正确答案)

.cp
2. 以下叙述正确的是( )。 [单选题] *

C语言程序总是从main函数开始执行(正确答案)

C语言程序总是从最前面的函数开始执行

C语言程序所调用的函数必须放在main函数的前面

C语言程序中main函数必须放在程序的开始位置

3. 表达式3.6-5/2+1.2+5%2的值是( )。 [单选题] *

4.8
3.3
3.8(正确答案)

4.3
4. 若有定义语句:

int x=12,y=8,z;

在其后执行语句

z=0.9+x/y;

则z的值为( )。 [单选题] *

2.4
1(正确答案)

2
1.9
5. 以下选项中,能用作用户标识符的是( )。 [单选题] *

void
_0_(正确答案)

8_8
unsigned
6. 有以下程序

#include

main()

    int a=1, b=0;

    printf("%d,", b=a+b);

    printf("%d\\n", a=2*b);

}

程序运行后的输出结果是( )。 [单选题] *

0,0

3,2

1,2(正确答案)

1,0

7. 若有以下程序

#include 

main()

    char c1,c2;

    c1='C'+'8'-'3'; 

    c2='9'-'0';

    printf("%c %d\\n", c1, c2);

}

则程序的输出结果是( )。 [单选题] *

H 9(正确答案)

表达式不合法输出无定值
F '9'
H '9'
8. 若有定义:

    float x=1.5;

    int a=1,b=3,c=2;

则正确的switch语句是( )。 [单选题] *

switch(a+b) { case 1: printf("*\\n"); case c: printf("**\\n"); }
switch(x) { case 1.0: printf("*\\n' ); case 2.0: printf(" **n"); }
switch((int)x); { case 1: printf("*\\n"); case 2: printf("**\\n"); }
switch(a+b) { case 1: printf("*\\n"); case 2+1: printf("**\\n"); }(正确答案)

9.  以下程序段中的变量已正确定义

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

for(k=1;k<3;k++); printf("*” );

该程序段的输出结果是( )。 [单选题] *

****
********
*(正确答案)

**
10. 有以下程序

#include

main()

{

    int i;

    for(i=1;i<=40;i++)

    {

        if(i++%5==0)

            if(++i%8==0)    printf("%d",i);

    }

    printf("\\n");

}

执行后的输出结果是( )。 [单选题] *

32(正确答案)

5
40
24
11. 若有以下程序

#include

int f(int m) {

    static int n=0;

    int a=2;

    n++; 

    a++;

    return n+m+a;

}

main() {

    int k;

    for(k=0;k<4;k++) 

        print("%d",f(k));

}

程序运行的输出结果是( )。 [单选题] *

3,5,7,9,
4,7,10,13
4,6,8,10(正确答案)

4,5,6,7,
12. 若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确( )。 [单选题] *

函数的形参和实参分别占用不同的存储单元(正确答案)

同名的实参和形参占同一个存储单元
形参只是形式上的存在,不占用具体存储单元
函数的实参和其对应的形参共占同一存储单元
13. 有以下程序

#include .

int m1(int x,int y)

{    return x<=y?x:y; }

int m2(int x,int y)

{    return x<=y?y:x; }

int fun(int a, int b)

{    return a+b; }

main()

    int x=2,y=3,z=1;

    printf("%d\\n", fun(ml(x, y),m2(y, z)));

}

程序的运行结果是( )。 [单选题] *

3
4
5(正确答案)

6
14. 以下关于return语句叙述中正确的是( )。 [单选题] *

一个自定义函数中必须有一条return语句

一个自定义函数中可以根据不同情况设置多条return语句(正确答案)

定义void类型的函数中可以有带返回值的return语句

没有return语句的自定义函数在执行结束时不能返回到调用处

15. 有以下程序

#include

void f(int x) {

    if(x>=10)    {    printf("%d-",x%10);    f(x/10); }

    else    printf("%d", x);

}

main() {

    int z=123456;

    f(z);

}

程序运行后的输出结果是( )。 [单选题] *

1-2-3-4-5-6
6-5-4-3-2-1(正确答案)

1-2-3-4-5-6-
6-5-4-3-2-1-
16. 设有数组定义:char array[]="China"; 

则数组array所占的空间为( )。 [单选题] *

4个字节

5个字节

6个字节(正确答案)

7个字节

答案解析:字符数组是每个元素存放一个字符型数据的数组。C语言中约定用'\\0'作为字符串的结束标志,它占内存空间,但不计入字符串的长度。对数组array赋初值char array[]="China",此时系统自动在末尾加入一个'\\0',此时数组array的长度为6,所占用的空间为6个字节,即char array[]="China"等价于char array[]={'C','h','i','n','a','\\0'}。

17. 有如下程序 

void main() { 

    int i,sum;

    for(i=1;i<=3;sum++)

        sum+= i; 

    printf(" %d\\n",sum);

该程序的执行结果是( )。 [单选题] *

6
3
死循环(正确答案)

0
答案解析:在循环过程中,i的值一直没有被改变,所以这是一个死循环。

18. 以下叙述正确的是( )。 [单选题] *

do-while语句构成的循环不能用其它语句构成的循环来代替。

do-while语句构成的循环只能用break语句退出。

do-while语句构成的循环,在while后的表达式为非零时结束循环。

do-while语句构成的循环,在while后的表达式为零时结束循环。(正确答案)

答案解析:do-while语句构成的循环体可由其他语句构成的循环体代替,所以第一个选项不正确。

do-while语句构成的循环,当使用break语句或者条件表达式的值为0时,可结束循环,所以第二和第三个选项不正确。

19. 下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。

void main() { 

    int i,j;

    for(i=0;待填空1;i++)  { 

        j=i*10+6;

        if(待填空2) 

            continue;

        printf("%d",j);

    } 

} [单选题] *

待填空1应为i<10;待填空2应为j%3!=0(正确答案)

待填空1应为i<=10;待填空2应为j%3!=0

待填空1应为i<10;待填空2应为j%3==0

待填空1应为i<=10;待填空2应为j%3==0

答案解析:该程序的功能是:输出100以内能被3整除且个位数为6的所有整数。

在具体程序中,定义变量i存储十位数,所以i<10;定义变量j存储十位数为i、个位数为6的整数,if语句用于判断该整数是否能被3整除,不能被整除的话就跳过该次循环,执行下一次循环,所以if语句后面的判断表达式为j%3!=0或j%3。

20. 设a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>b)&&(n=c>d)后n的值为( )。 [单选题] *

0
1
2(正确答案)

7
答案解析:&&运算符的结合方向是从左到右,所以先计算左边括号中的m=a>b表达式,其中a>b等价于5>6不成立,故表达式a>b的值为0,即为0赋给m,因此&&左边表达式的值为0,0与任何值&&运算都为0,于是不再计算&&右边表达式的值(短路),所以此时的n仍然为2。

21. 以下关于运算符优先顺序的描述中正确的是( )。 [单选题] *

关系运算符 < 算术运算符 < 赋值运算符 < 逻辑运算符

逻辑运算符 < 关系运算符 < 算术运算符 < 赋值运算符

赋值运算符 < 逻辑运算符 < 关系运算符 < 算术运算符(正确答案)

算术运算符 < 关系运算符 < 赋值运算符 < 逻辑运算符

答案解析:参见教材P320页的附录B运算符的优先级和结合性

22. 能正确表示逻辑关系:"a≥10或a≤0"的C语言表达式是( )。 [单选题] *

a>=10 or a<=0
a>=0 | a<=10
a>=10 && a<=0
a>=10 ‖ a<=0(正确答案)

答案解析:"‖"表示或的意思,"|"是按位或的意思,"&&"是并且的意思,C语言中没有"or"。

23. 函数的实参传递到形参只有按值传递一种方式。 [单选题] *

正确
错误(正确答案)

答案解析:函数的实参传递到形参有值传递和地址传递两种方式。

24. 在if语句的三种形式中,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。 [单选题] *

正确(正确答案)

错误
25. continue不是结束本次循环,而是终止整个循环的执行。 [单选题] *

正确
错误(正确答案)

答案解析:continue是结束本次循环,直接进入到下次循环中,break用于循环语句中的作用是直接跳出本层循环。

26. 函数strlen("ASDFG\\n")的值是7。 [单选题] *

正确
错误(正确答案)

答案解析:strlen求的是字符串的长度,也就是从起始到\\0的字符个数,不包括'\\0'。并且,'\\n'是C语言字符表达的转义字符形式,代表换行。也就是说,'\\n'是一个字符,而不是'\\'和'n'两个字符。

27. do-while语句先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。 [单选题] *

正确(正确答案)

错误
28. 数组说明 int a[3][]={1,2,3,4,5}; 是正确的。 [单选题] *

正确
错误(正确答案)

答案解析:定义二维数组时,省略之后要让计算机能够确定定义的几行几列才可以,假如省略行数,但确定了列数,计算机会根据列数以及初始化时的数据,自动确定行数,因此行数可以省略。但是如果给了行数但没有确定列数,对于初始化的数据,计算机不知道怎么划分,会出现错误。

29. C语言允许用字符串的方式对数组作初始化赋值。 [单选题] *

正确(正确答案)

错误
30. 设有:int x=11;,则表达式 (x++ * 1/3) 的值是4。 [单选题] *

正确
错误(正确答案)

答案解析:当自加运算符做后缀表达式的时候,表达式的值不变,只有变量的值增加1,所以表达式(x++*1/3)相当于(11*1/3),值为3。下载本文
显示全文
专题