C语言—每日选择题—Day46

2023-12-13 03:59:30

第一题

1. 下列程序段的输出结果是()

#include <stdio.h>
int 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);
    return 0;
}

A:a=2,b=1

B:a=1,b=1

C:a=1,b=0

D:a=2,b=2

答案及解析 A

switch语句记住一点就是,当满足case的条件,如果case里面没有break,就会继续执行下面的所有语句;

所以x = 1;执行了case1,case2的语句;

第二题

2. 若二维数组a有m列,则在a[ i ] [ j ]前的元素个数为()

A:j * m + i

B:i * m + j

C:i * m + j - 1

D:i * m + j + 1

答案及解析 B

第i行,前面肯定是有0~i - 1行的,因为别忘了是从0下标开始的

所以0 ~ i - 1行一共有 i 行,每行有 m 列,那前 i 行一共就是? i * m 列?

那这一行 j 前面下标是 0 ~ j - 1,就是 j 个元素;

所以在a[ i ][ j ]之前的元素一共是i *m + j

第三题

3. 以下数据中,不正确的数值或字符常量是( )

A:c

B:66

C:0xaa

D:50

答案及解析 A

A:错误,单独的c,并不是 'c' ,所以不是表示的字符,这样直接的c,可以理解为16进制,但是前面没有0x,所以也不是16进制的表示方法,既不正确;

B:就是正常的int类型的数据

C:0x开头的是表示16进制的数字,范围就是0~9,a~f

D:正常的int类型

第四题(好题)

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

#include <stdio.h>
int x = 3;
void incre() 
{
    static int x = 1;
    x *= x + 1;
    printf("%d", x);
}
int main() 
{
    int i;
    for(i = 1; i < x; i++) 
    {
        incre();
    }
    return 0;
}

A:33

B:22

C:26

D:25

答案及解析 C

本题涉及同名全局变量和静态变量;

局部静态变量只会初始化一次,在局部变量和全局变量名一样的时候,优先使用局部变量

所以在incre函数内部压根不会用到全局变量的x,在main函数中的x也不会用到incre的x,因为静态变量x的生命周期和作用域都是在incre上,所以即使是静态的,但是出了自己的作用域也不会发挥作用;最后我们只需要分清,在main函数的x是全局变量,在incre函数的x是static的局部变量就OK了;

第一次进入循环就是2;

第二次进入循环,由于静态局部变量只会初始化一次,所以x依旧是2,之后进行计算得6;

打印结果就是26;

第五题

5. 有以下程序,程序运行后的输出结果是()

float fun (int x, int y) 
{
    return (x+y);
}
int main() 
{
    int a=2, b=5, c=8;
    printf("%3.0f\n", fun( (int)fun(a+c, b) ,  a-c) );
    return 0;
}

A:编译出错

B:? ?9

C:21

D:9.0

答案及解析 B

本题涉及的知识点还是蛮杂的,涉及了强制类型转换,格式化打印格式和函数的调用做参数;这里直接讲解重点:

大家肯定是会算出来fun里面的fun(a+c, b)的值为15.000000

所以fun( (? int)fun(a + c, b)? ?,? ?a-c? ?) = fun(? (int)15.000000? ,? ?a-c )

强制类型转换为int类型,舍去小数部分为 fun(15, a-c) = 9.000000;

但是在格式化打印这里是规定的? %3.0f

这里小数点后面的数字是表示 保留几位小数,所以这里为0,就是不保留小数,也就是9;

但是小数点前面的数字表示的就是右对齐,数字是几,就右对齐几个空格位置,所以这里其实是先输出3个空格位置,再输出3;

这里我用hhh来区分,看的更明显

文章来源:https://blog.csdn.net/2302_76941579/article/details/134959254
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。