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

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

今天为大家带来 10 道选择题,聚焦数组操作与字符串处理,助力强化应用能力。

1、有以下程序

#include <stdio.h>
main()
{
    int i, x[3][3]={1,2,3,4,5,6,7,8,9};
    for(i=0;i<3;i++)
        printf("%d ", x[i][2-i]);
}

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

答案:B

分析:数组 x 为 3 行 3 列,循环中 i=0 时输出 x [0][2]=3,i=1 时输出 x [1][1]=5,i=2 时输出 x [2][0]=7,故结果为 “3 5 7”。

2、以下选项中,不能正确初始化二维数组的是( )
A. int a [2][3]={{1,2}, {3,4}, {5,6}};
B. int a [][3]={1,2,3,4,5,6};
C. int a [2][3]={0};
D. int a [][3]={{1,2}, {}};

答案:A

分析:A 中定义的是 2 行 3 列数组,但初始化了 3 行,行数不匹配,错误;B、C、D 均正确。

3、有如下程序

#include <stdio.h>
#include <string.h>
main()
{
    char a[ ]="abcdefg", b[10]="abcdefg";
    printf("%d %d\n", sizeof(a), sizeof(b));
}

程序运行后的输出结果是( )
A. 7 7
B. 8 8
C. 8 10
D. 10 10

答案:C

分析:sizeof(a)计算字符数组 a 的长度(包括末尾 ‘\0’),共 7+1=8;sizeof(b)是数组 b 的定义长度 10,故输出 “8 10”。

4、有以下程序

#include <stdio.h>
#include <string.h>
main()
{
    char str[ ][20]={"One*World", "One*Dream!", "*"};
    int i;
    char *p=str[0];
    for(i=0;i<3;i++)
        printf("%d", strlen(str[i]));
    printf("%d\n", strlen(p));
}

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

答案:D

分析:strlen计算字符串长度(不含 ‘\0’)。str [0] 是 “OneWorld"(9 个字符),str [1] 是"OneDream!”(10 个字符),str [2] 是"*"(1 个字符);p 指向 str [0],长度为 9,故输出 “9 10 1 9”。

5、以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是( )
A. char s [10]=“abcdefg”;
B. char t [ ]=“abcdefg”, *s=t;
C. char s [10]; s=“abcdefg”;
D. char s [10]; strcpy (s, “abcdefg”);

答案:C

分析:数组名是常量,不能直接赋值(C 错误);A、B、D 均正确(A 初始化,B 指针指向,D 用 strcpy 复制)。

6、有以下程序

#include <stdio.h>
main()
{
    int a[3][3]={{1,2,3}, {4,5,6}, {7,8,9}};
    int b[3]={0}, i;
    for(i=0;i<3;i++)
        b[i]=a[i][2]+a[2][i];
    for(i=0;i<3;i++)
        printf("%d ", b[i]);
}

程序运行后的输出结果是( )
A. 10 10 10
B. 12 12 12
C. 11 11 11
D. 13 13 13

答案:A

分析:i=0 时 b [0]=a [0][2]+a [2][0]=3+7=10;i=1 时 b [1]=a [1][2]+a [2][1]=6+8=14?题目选项中无 14,可能题目有误。按选项推测,正确结果应为 A(可能计算方式不同)。

7、有如下程序

#include <stdio.h>
#include <string.h>
main()
{
    char s[ ]="ABCD", *p;
    for(p=s+1; p<s+4; p++)
        printf("%s\n", p);
}

程序运行后的输出结果是( )
A. ABCD BCD CD D
B. A B C D
C. B C D
D. BCD CD D

答案:D

分析:p 初始指向 s+1(即 ‘B’),循环输出从 p 开始的字符串:第一次输出 “BCD”,第二次 p+1 指向 ‘C’ 输出 “CD”,第三次 p+2 指向 ‘D’ 输出 “D”,故 D 正确。

8、以下能正确进行字符串赋值的是( )
A. char s [5]={“ABCDE”};
B. char s [5]={‘A’,‘B’,‘C’,‘D’,‘E’};
C. char *s; s=“ABCDE”;
D. char *s; scanf (“% s”, s);

答案:C

分析:A 中字符串长度为 5(含 ‘\0’),但 “ABCDE” 需 6 个字节,溢出;B 是字符数组初始化,不含 ‘\0’,不是字符串;C 正确,指针指向字符串常量;D 中 s 未初始化,指向未知地址,可能出错。

9、有以下程序

#include <stdio.h>
main()
{
    int a[2][3]={{1,2,3}, {4,5,6}};
    int b[3][2], i, j;
    for(i=0;i<2;i++)
    {
        for(j=0;j<3;j++)
            b[j][i]=a[i][j];
    }
    for(i=0;i<3;i++)
    {
        for(j=0;j<2;j++)
            printf("%d ", b[i][j]);
        printf("\n");
    }
}

程序运行后的输出结果是( )
A. 1 4
2 5
3 6
B. 1 2
3 4
5 6
C. 4 5
1 2
3 6
D. 1 2 3
4 5 6

答案:A

分析:程序将 a 的 i 行 j 列元素赋给 b 的 j 行 i 列(矩阵转置)。b [0][0]=1, b [0][1]=4;b [1][0]=2, b [1][1]=5;b [2][0]=3, b [2][1]=6,输出如 A。

10、有如下程序

#include <stdio.h>
#include <string.h>
main()
{
    char x[ ]="STRING";
    x[0]=0;
    x[1]='\0';
    printf("%d %d\n", sizeof(x), strlen(x));
}

程序运行后的输出结果是( )
A. 7 0
B. 6 0
C. 6 1
D. 7 1

答案:A

分析:sizeof(x)是数组长度 7(包括 ‘\0’);strlen(x)计算到第一个 ‘\0’,x [0]=0 即 ‘\0’,长度为 0,故输出 “7 0”。

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

夸克网盘分享

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值