当前位置: 首页 > news >正文

【笔试题】【day3】

目录

第一题(Switch后面没有break的问题)

第二题 (return只能return一个数据类型)

第三题(循环)

第四题(二维变量的大小)

第五题(大小端存储(函数栈帧))


第一题(Switch后面没有break的问题)

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

#include <iostream>
int main()
{
    int x=3,y=3;
    switch(x%2)
    { 
        case 1:
        switch (y)
        { 
            case 0:
            cout<<"first";
            case 1:
                cout<<"second";
                break;
            default:
                cout<<"hello";
        }
        case 2:
            cout<<"third";
    }
    return 0;
}

A second third
B hello
C first second
D hellothird 

 这里我们的x=3,y=3,在switch判断的时候x%2也就是1,进入case 1的判断,因为switchy并没有case3,所以我们进入到default模块,也就是打印hello,而我们这里的default后面没有break,所以会往下继续执行,打印case2中的third,所以一共就是打印hellothird

D

第二题 (return只能return一个数据类型)

能把函数处理结果的二个数据返回给主调函数,在下面的方法中不正确的是()

A return这二个数
B 形参用数组
C 形参用二个指针
D 用两个全局变量

这里的return所返回的只有一个数据类型,并不能返回两个数据,除非放到数组或者容器里面返回出来

第三题(循环)

设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是(    )

A n=0;while(ch=getchar()!='\n')n++;

B n=0;while(getchar()!='\n')n++;
C for(n=0;getchar()!='\n';n++);
D n=0;for(ch=getchar();ch!='\n';n++);

A:n初始化为0,然后while循环,先getchar,获取到一个字符,然后将这个字符赋值给ch,然后再将ch和'\n'进行比较,如果不等于'\n'就继续++,是就结束循环

B:B和A的区别在条件判断部分,它是拿getchar的值直接跟'\n'进行比较的,也是可以的!

C:用for循环的初始化为n=0然后条件判断getchar获取到一个字符和'\n'进行比较,如果不等于'\n'就继续++,等于'\n'就停止

D:for循环的初始化的部分只会初始化一次,也就是只会读取第一个字符。

D

第四题(二维变量的大小)

32位系统中,定义**a[3][4],则变量占用内存空间为()。

A 4
B 48
C 192
D 12 

三行四列的一个数组,数组中存放的是**,也就是指针类型,也就是12个指针类型,一个指针在32位的系统平台下所占的是4个字节,所以4×12一共是48个字节

([]的优先级高于*,所以先和[]结合,变成数组)

第五题(大小端存储(函数栈帧))

假设在一个 32 位 little endian 的机器上运行下面的程序,结果是多少?

#include <stdio.h>
int main(){
    long long a = 1, b = 2, c = 3;
    printf("%d %d %d\n", a, b, c);
    return 0;
}

A 1,2,3
B 1,0,2
C 1,3,2
D 3,2,1

什么是大小端?

大端:低位存高地址。

小端:低位存低地址

int i=1;

大端:00 00 00 01(数字1的低位)

小端:01 00 00 00(数字1的高位)

        (低地址)-> (高地址)

long long类型占8个字节,我们不妨将abc三个变量的地址按照低地址到高地址写出来

a:01 00 00 00 00 00 00 00

b:02 00 00 00 00 00 00 00 

c:03 00 00 00 00 00 00 00

printf在调用的时候也会创建一个函数栈帧,栈是从高地址向低地址增长的

(函数调用栈)

(低地址(栈顶))<-----------------------------------------------(高地址(栈底))

入栈的时候是从右往左入栈的。

printf("%d %d %d\n", a, b, c);

所以我们根据上面的printf中的a,b,c从右往左入栈的话就是c先入栈,再b再a

(低地址(栈顶))<-----------------------------------------------(高地址(栈底))

01 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00

然后从栈顶开始出栈,%d的话就是打印一个四字节的元素,

也就是栈顶开始的01 00 00 00

然后再是后面的   00 00 00 00

然后再打印后面的02 00 00 00

也就是输出1 0 2

相关文章:

  • 微信小程序|基于小程序实现人脸识别对比
  • [附源码]Java计算机毕业设计SSMJava商场会员管系统
  • 多模态学习、迁移学习、元学习、联邦学习、表示学习、知识图谱、无监督学习、半监督学习、弱监督学习、自监督学习简介
  • 剑指offer 63. 和为S的两个数字
  • 【VUE基础】webpack
  • 机器人轨迹规划中经常用到的曲线特性小结:Cn连续与Gn连续、Frenet标架、曲率和挠率
  • 【深度学习】卷积神经网络CNN入门介绍
  • Android Studio 提示:更新 TKK 失败,请检查网络连接
  • 枚举类型详解
  • 机器学习笔记 - 在Vehicles数据集上训练 YOLOv5 目标检测器
  • win10系统安装虚拟机centos
  • 从零备战蓝桥杯——二叉树及相关题目(基础篇)
  • 软件企业和双软企业的区别
  • 字节跳动安全Ai挑战赛-基于文本和多模态数据的风险识别总结
  • DRF-(10)
  • 时间复杂度分析经典问题——最大子序列和
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • es6(二):字符串的扩展
  • ES6简单总结(搭配简单的讲解和小案例)
  • ES6之路之模块详解
  • exif信息对照
  • iOS 颜色设置看我就够了
  • Iterator 和 for...of 循环
  • Koa2 之文件上传下载
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • react-native 安卓真机环境搭建
  • tab.js分享及浏览器兼容性问题汇总
  • Vue--数据传输
  • 前端性能优化——回流与重绘
  • 删除表内多余的重复数据
  • 深度学习在携程攻略社区的应用
  • 微信开源mars源码分析1—上层samples分析
  • 一个项目push到多个远程Git仓库
  • 做一名精致的JavaScripter 01:JavaScript简介
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • Nginx实现动静分离
  • ​TypeScript都不会用,也敢说会前端?
  • #Spring-boot高级
  • (1)(1.11) SiK Radio v2(一)
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (论文阅读11/100)Fast R-CNN
  • (生成器)yield与(迭代器)generator
  • (算法)前K大的和
  • (一) storm的集群安装与配置
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .NET CLR Hosting 简介
  • .NET 的程序集加载上下文
  • .NET 发展历程
  • .net 微服务 服务保护 自动重试 Polly