2025年9月计算机二级C语言程序设计——选择题打卡Day4

计算机二级C语言选择题解析

备考计算机二级 C 语言 程序设计考试,选择题是不容忽视的重要部分。

今天为大家带来 10 道选择题,聚焦函数定义、调用及指针基础,助力突破重点难点。

1、有如下程序

#include <stdio.h>
int change(int* data)
{
    *data = *data % 2;
    return (*data) + 1;
}
main()
{
    int data =12;
    change (&data);
    printf("%d, ", data);
    data = change (&data);
    printf("%d,", data);
}

程序运行后的输出结果是( )
A. 1, 2,
B. 0, 1,
C. 12, 13,
D. 0, 0,

答案:B

分析:第一次调用change*data=12%2=0,data 变为 0,返回 0+1=1,输出 “0,”;第二次调用,*data=0%2=0,返回 1,data 被赋值为 1,输出 “1,”,故结果为 “0, 1,”。

2、以下选项中,能够正确利用随机函数 rand (),产生一个英文字母的表达式是( )
A. rand ()%20 ? rand ()%26+‘A’ : rand ()%26+‘a’
B. rand ()%2
0 ? rand ()%‘A’ : rand ()%‘a’
C. rand ()%26+‘A’ || rand ()%26+‘a’
D. rand ()%26+‘A’ && rand ()%26+‘a’

答案:A

分析:rand ()%2==0 时生成大写字母(‘A’+025),否则生成小写字母(‘a’+025),A 正确;B 中rand()%'A'错误(‘A’ 的 ASCII 值为 65,无意义);C、D 是逻辑运算,结果为 0 或 1,错误。

3、以下针对相应语句的注释中,说法错误的是( )
A. int pt[2]; / pt 是一个指针数组名 */
B. int pt(); / pt 是一个函数名 */
C. int (pt) (); /*pt 是指向函数的指针*/
D. int (*pt) [2]; /* pt 是一维数组名
/

答案:D

分析:D 中int (*pt)[2]表示 pt 是指向 “包含 2 个 int 的数组” 的指针,并非数组名,注释错误;A、B、C 注释正确。

4、以下选项中表示空函数的是( )
A. int fun () {return 0;}
B. void fun ();
C. int fun (int a, int b) { return 1;}
D. void fun (){}

答案:D

分析:空函数是指无参数、无返回值且函数体为空的函数。A、C 有返回值,B 是函数声明,D 是正确的空函数定义。

5、有下列程序

#include <stdio.h>
void fun(int a[], int n, int flag)
{
    int i=0,j, t;
    for (i=0;i<n-1;i++)
        for(j=i+1;j<n;j++)
            if (flag ? (a[i] < a[j]):(a[i] > a[j]))
            {t= a[i]; a[i]=a[j]; a[j]=t;}
}
main()
{
    int c[10]={7,9,10,8,3,5,1,6,2,4},i;
    fun(c,10,1);
    fun(c,5,0);
    for (i=0;i<10;i++)
        printf("%d, ", c[i]);
}

程序执行后的输出结果是( )
A. 6,7,8,9,10,5,4,3,2,1,
B. 6,7,8,9,10,1,2,3,4,5,
C. 5,4,3,2,1,6,7,8,9,10,
D. 10,9,8,7,6,1,2,3,4,5,

答案:A

分析:fun函数根据 flag 排序:flag=1 时降序(a [i]<a [j] 则交换),flag=0 时升序(a [i]>a [j] 则交换)。第一次调用对 10 个元素降序:10,9,8,7,6,5,4,3,2,1;第二次对前 5 个元素升序:6,7,8,9,10,最终结果为 A。

6、以下说法正确的是( )
A. 函数返回值只能是基本数据类型的数值或指针
B. 函数返回值可以是一个指向函数的指针
C. 函数可以返回另一个函数的整个函数体
D. 函数返回值可以是一个数组,同时返回多个值

答案:B

分析:函数返回值可以是指针(包括函数指针),B 正确;A 错误,还可返回结构体等;C 错误,函数不能返回函数体;D 错误,C 函数不能直接返回数组,需通过指针间接返回。

7、若有定义:int a [5], *p=a; 则对 a 数组元素地址的正确引用是( )
A. &p
B. &(a+1)
C. p+5
D. &a [0]

答案:D

分析:A 是指针 p 的地址,不是数组元素地址;B 中a+1是地址,取地址无意义;C 指向数组越界后的位置,不是有效元素地址;D 是 a [0] 的地址,正确。

8、有以下程序

#include <stdio.h>
int f(int x)
{
    static int y=0;
    y +=x;
    return y;
}
main()
{
    int a=2, b=3, c=4, r;
    r=f(a);
    r=f(b);
    r=f(c);
    printf("%d\n", r);
}

程序运行后的输出结果是( )
A. 4
B. 5
C. 9
D. 10

答案:C

分析:静态变量 y 只初始化一次,多次调用累加。第一次 f (2):y=2,返回 2;第二次 f (3):y=5,返回 5;第三次 f (4):y=9,返回 9,故输出 9。

9、以下叙述中正确的是( )
A. 数组元素下标可以是非整数
B. 若有定义 char array [4]; 则语句 printf (“% c”, array [“3”]); 是合法的
C. 数组说明符的一对方括号中不能使用表达式
D. char c1, *c2, *c3 [10]; 是合法的变量定义语句

答案:D

分析:A 错误,下标必须是整数;B 错误,“3” 是字符串,不能作为下标;C 错误,方括号中可使用表达式(如 a [i+1]);D 正确,c1 是字符,c2 是字符指针,c3 是指针数组。

10、使用数组名作为函数的实参时,传递给形参的是( )
A. 数组第一个元素的值
B. 数组中全部元素的值
C. 数组元素的个数
D. 数组的首地址

答案:D

分析:数组名作为实参时,隐式转换为指向首元素的指针,传递的是首地址,故 D 正确。

希望这 10 道题能帮助大家对计算机二级 C 语言的知识点有更深入的理解和掌握。如果想要获取完整版 PDF(含二级更多题目题库)

夸克网盘分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值