C语言—每日选择题—Day64

前言

        两天没更新了,作者在复习期末考试,更新一波,祝大家都能顺利通过期末考试!!!

指针相关博客

打响指针的第一枪:指针家族-CSDN博客

深入理解:指针变量的解引用 与 加法运算-CSDN博客

第一题

1. 下面程序段的运行结果是( )【多选】

char s[] = "12345", *p = s;
printf("%d\n", *(p+5));

A:字符 '\0' 的 ASCII 码值

B:0

C:字符 '5' 的地址

D:字符 '5'

答案及解析 AB

本题考查的是对指针➕整数和指针解引用

详谈【指针解引用】与【指针加整数】_指针解引用之后-CSDN博客

最后p + 5是 到达的\0的地址,解引用拿出来的就是\0,ASCII就是0

第二题

2. 以下程序中,while循环的次数是(   )

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

A:1

B:10

C:6

D:死循环,不能确定次数

答案及解析 D

本题考查的是对while循环中的continue和break语句的认识

continue语句,不执行后面语句,直接返回循环条件部分

break语句,跳出当前循环

所以本题就是一直都是i = 0 < 1 ,一直循环

第三题

3. 下面3段程序代码的效果一样吗?

int b;
(1)const int *a = &b;
(2)int const *a = &b;
(3)int *const a = &b;

A:(2) = (3)

B:(1) = (3)

C:(1) = (2)

D:都不一样

E:都一样

答案及解析 C

const在*左边:指针指向的内容不可以改变,pointer to const

const在*右边,指针本身不可被改变,const pointer

第四题

4. 有定义 int a=2.b=3,c=4; 表达式的值为()

 (a < b && !c)? ++b: a-- 

A:1

B:2

C:3

D:4

答案及解析 B

先大体来看这是一个条件表达式  x ?y:z

x为真,执行y,反之执行z

所以我们要先判断 a < b && !c 的真假

&&是与,有0则0,运算顺序从左往右

a < b 为真,继续看右边 !c,c为4,0为假,非0为真,所以 c为真,!c为假 

那?前面的语句就是假,执行a--,后置--,表达式结果是--之前的值,所以就是2

第五题

5. 下列代码的输出是()

#include <stdio.h> 
void print(char *s)
{
    if(*s)
    {
        print(++s);
        printf("%c", *s); 
    }
}
int main()
{     
    char str[] = "Geneius";
    print (str);
    return 0;
}

A:\0suiene

B:neius

C:run-time error

D:suieneG

答案及解析 A

本题考查的是函数递归

在s取到\0的地址的时候结束递归,反向输出

猜你喜欢

转载自blog.csdn.net/2302_76941579/article/details/135254504
今日推荐