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才会至少执行一次,先执行语句后判断;

相关推荐
liulilittle28 分钟前
LinkedList 链表数据结构实现 (OPENPPP2)
开发语言·数据结构·c++·链表
无聊的小坏坏1 小时前
三种方法详解最长回文子串问题
c++·算法·回文串
长路 ㅤ   1 小时前
Java后端技术博客汇总文档
分布式·算法·技术分享·编程学习·java后端
2401_891957311 小时前
list的一些特性(C++)
开发语言·c++
秋说1 小时前
【PTA数据结构 | C语言版】两枚硬币
c语言·数据结构·算法
二十雨辰1 小时前
[尚庭公寓]07-Knife快速入门
java·开发语言·spring
Python大数据分析@1 小时前
Origin、MATLAB、Python 用于科研作图,哪个最好?
开发语言·python·matlab
qq_513970441 小时前
力扣 hot100 Day37
算法·leetcode
编程零零七2 小时前
Python巩固训练——第一天练习题
开发语言·python·python基础·python学习·python练习题
不見星空2 小时前
leetcode 每日一题 1865. 找出和为指定值的下标对
算法·leetcode