C语言--每日选择题--Day31

第一题

  1. 下面程序 i的值为()
cpp 复制代码
int main()
{
    int i = 10;
    int j = 0;
    if (j = 0)
        i++; 
    else
        i--;        
    return 0;
}

A:11

B:9

答案及解析 B

if语句中的条件判断为赋值语句的时候,因为赋值语句的返回值是右操作数;

比如 if(j = 1) 相当于 if(1),if(j = 0) 相当于if(0)

所以在了解这里之后,就可以得出答案啦

第二题(注意细节)

  1. 下面程序的输出结果为()
cpp 复制代码
#include <stdio.h>
void fun(int *s) 
{
    static int j = 0;

    do 
    {
        s[j] += s[j + 1];
    } while (++j < 2);
}
int main() 
{
    int i, a[10] = {1, 2, 3, 4, 5};

    for (i = 1; i < 3; i++)
        fun(a);

    for (i = 1; i < 5; i++)
        printf("%d", a[i]);
    printf("\n");

    return 0;
}

A:34756

B:5745

C:5795

D:35745

答案及解析 B

本题考查的是局部static变量和do-while循环的认识;

局部static变量,只会初始化一次,因为是存在静态区的,值不会被刷新;

do-while循环,先执行语句,再判断条件
所以我们这里是进入2次fun函数,最后打印的时候是打印下标为1~4的哦,这里要注意;
在fun函数内部:

第一次进入函数:先初始化一下static变量j = 0;之后进入两次do-while循环;j = 2的时候循环结束,函数也结束;

第二次进入函数:不会执行初始化j,虽然j = 2;但是先执行do-while内部的语句,再判断;

最后数组元素分别为:3 5 7 4 5

输出结果为 5 7 4 5;

第三题

  1. 下列代码的结果是
cpp 复制代码
#include<stdio.h>
int main() 
{ 
    int a[5] = {1, 2, 3, 4, 5}; 
    int *ptr = (int *)(&a + 1); 
    printf("%d,%d", *(a + 1), *(ptr - 1)); 
    return 0;
}

A:3,5

B:2,4

C:2,5

D:3,4

答案及解析 B

本题是考查你对指针和数组的认识,我们来一步一步分析:

数组名代表首元素地址,但是有2个例外:sizeof(数组名),&数组名,数组名都表示整个数组
在了解上面的知识之后:

先看&a,这里表示的取整个数组的地址

对指针的加法,移动的字节数是根据这个指针指向的内容的数据类型算的,数据类型是什么,对指针加的数字就乘这个内容的数据类型的字节数;

&a指向的内容是整个数组,数组的数据类型是int [5]

所以&a+1,是移动的整个数组的大小,也就是1 * (5 * 4)字节,移动的也就是整个数组的大小;

但是这个指针被强制转换为int*类型,也就是指向的内容的数据类型为int,加减就不一样了;

则ptr - 1,就是减小一个int类型,4个字节,而不是整个数组的大小了;

第四题

  1. 执行下面程序段后, x 的值是( )
cpp 复制代码
int a = 14, b = 15, x;
char c = 'A';
x = (a && b) && (c < 'B');

A:true

B:false

C:0

D:1

答案及解析 D

首先我们来看x = (a&&b)&&(c < 'B')

&&是与操作符,是双目操作符,结合性是从左到右;

我们要知道条件判断操作符,真为1,假为0

先算右边的操作数(a&&b)

因为a = 14,b = 15 ;上面就转换为(14 && 15)为真;

所以1 && (c < 'B')

右边c = 'A' ,c < 'B'成立,为真;

最后x = 1 && 1;

所以都为1,为真,x = 1;

第五题

  1. while 循环语句的循环体至少执行一次,请问这句话的说法是正确的吗?
    A:正确

B:错误

答案及解析 B

只有do-while才会至少执行一次,先执行语句后判断;

相关推荐
один but you9 分钟前
从可变参数到 emplace:现代 C++ 性能优化的核心组合
java·开发语言
MY_TEUCK1 小时前
【Java 后端 | Nacos 注册中心】微服务治理原理、选型与注册发现实战
java·开发语言·微服务
测试员周周1 小时前
【Appium 系列】第13节-混合测试执行器 — API + UI 的协同执行
开发语言·人工智能·python·功能测试·ui·appium·pytest
m0_629494731 小时前
LeetCode 热题 100-----26.环形链表 II
数据结构·算法·leetcode·链表
壹号用户2 小时前
用队列实现栈
数据结构·算法
光泽雨2 小时前
c#中的Type类型
开发语言·前端
做人求其滴2 小时前
面试经典 150 题 380 274
c++·算法·面试·职场和发展·力扣
见叶之秋2 小时前
C++基础入门指南
开发语言·c++
daad7772 小时前
记一组无人机IMU传感器数据
算法
计算机安禾2 小时前
【c++面向对象编程】第42篇:模板特化与偏特化:为特定类型定制实现
开发语言·c++·算法