c语言每日一练(10)

前言:
每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情况更新。

 五道选择题:

1、如果 x=2014 ,下面函数的返回值是( )

int fun(unsigned int x)
{
int n = 0;
while(x + 1)
{
n++;
x = x | (x + 1);
} 
return n;
}

 A、20   B、21    C、23     D、25

解析:观察代码,发现代码的主要构成是一个循环,且每进行一次循环,n+1,最后返回的值为n的大小,那么我们的目标就是计算循环的次数。循环内部是x和x+1进行|(或)运算,|运算的规则是位上只要有一个为真便为真,两个同时为假才为假。

而和比自己大1的数进行|运算就会稳定地使x上的位为0的变为位为1的,直到全部都变为1,再进一次循环就为0。2014,可写作0000.......0111 1101 1110,总计有9个1,23个0,那么当循环23次之后,也就是n为23时,x为1111.......1111,32位均是1,想要再次循环,但x+1为0,不满足循环条件,故结束循环,返回23。因此答案选C

 2、如下函数 fun 计算 prod=1*2*3*…*n ,并返回计算结果值。但当 n>12 时,返回值不正确。要找出该程序的错误,正确的调试方法是( )

int fun(int n)
{
int prod = 1 , i = 0;
for(i = 1;i <= n;i++)
{
prod *= i;
}
return prod;
}

A、监视变量prod的值,在prod *= i;行处设置断点,然后单步运行,直到发现错误原因
B、监视变量prod的值,在return prod;行处设置断点,程序中断后,即可发现错误原因
C、在prod=1;处设置断点,然后在函数调用堆栈中即可发现错误原因
D、监视变量i的值,在for (i=1; i<=n; i++)行处设置断点,然后单步运行,直到发现错误原因

解析:依题目已知情况,当n<=12时结果是正确的,说明是随着参数的变大计算过程中哪里出了问题,故而要在prod *= i;处设断点,查看原因。错误原因是数据过大时整型溢出,故答案选A

3、请问下列代码的输出结果有可能是哪些【多选】( )

#include <stdio.h>
typedef union
{int a;struct{short b;short c;};
}X;
int main()
{X x;x.a = 0x20150810;printf("%x,%x\n", x.b, x.c);return 0;
}

A、2015,810      B、50810,201     C、810,2015    D、20150,810

解析:对于0x20150810
如果按照大端模式存储:

从低地址到高地址:20 15 08 10 输出从低地址到高地址:20 15 08 10
如果按照小端模式存储:

从低地址到高地址:10 08 15 20 输出从高地址到低地址:08 10 20 15
此数以int类型赋值给联合体x.a,而以结构成员b和c分开访问,分别拿到低地址的2个字节和高地址的2个字节,大端下是2015和810,小端下是810和2015,故答案选AC

4、运行以下程序后,如果从键盘上输入 65 14<回车> ,则输出结果为( )

#include<stdio.h
int main()
{
int m, n;
printf("Enter m,n\n");
scanf("%d %d", &m,&n);
while (m!=n) //1
{
while(m>n) m=m-n; //2
while(n>m) n=n-m; //3
}
printf("m=%d\n",m);
return 0;
}

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

解析:观察代码发现它主要实现了一个功能就是,将输入进来的两个数互相减来减去,直到它们两个相等,中止循环,数据不大,可以直接代入进去,65-14=51,51-14=37,37-14=23,23-14=9,14-9=5,9-5=4,5-4=1,4-1=3,3-1=1,2-1=1,1==1中止循环,打印1,故答案选C。当数据不大的时候我们可以直接代入得结果,但当数据大到一定程度的时候还是需要通过分析两个数据之间的联系,具体情况具体分析。

5、若运行以下程序时,从键盘输入ADescriptor<回车> ,则下面程序的运行结果是( )

#include <stdio.h>
int main()
{char c;int v0 = 0, v1 = 0, v2 = 0;do{switch (c = getchar()){case'a':case'A':case'e':case'E':case'i':case'I':case'o':case'O':case'u':case'U':v1 += 1;default: v0 += 1; v2 += 1;}} while (c != '\n');printf("v0=%d,v1=%d,v2=%d\n", v0, v1, v2);return 0;
}

A、v0=7,v1=4,v2=7 B、v0=8,v1=4,V2=8    C、v0=11,v1=4,v2=11 D、v0=12,v1=4,v2=12 

解析:观察代码发现,主要构成就是一个循环包着一个switch,它的switch语句从我们输入的字符中读取,并通过读取的字符进行一系列的计算。但要注意的一点便是,它的switch中没有break,也就是说,它一旦执行了上面的,它就会一直往下走,直到走完,再通过循环判断。 ADescriptor<回车>。一共11个字符,a,e,i,o,u大小写,加起来有4个,令v1=v0=v2=4,剩下7个字符令v0+7,v2+7,所以最后v1=4,v0=v2=11,看上去好像就是这样,但需要注意的一点就是,它是dowhile循环,也就是先执行循环内容再判断,也就是说'\n'这个回车它也要执行1次,最后令v1=4,v0=v2=12,选D

 编程题1:

9. 回文数 - 力扣(LeetCode)  

思路:通过取模的计算将后一位剥离出来,在通过/10不断地寻找下一位的同时,对储存颠倒过来的数不断*10使其恢复位数,最后比对即可。需要注意的一点就是负数不可能是回文数。 

bool isPalindrome(int x) {if (x < 0)//当x为-1时,倒过来为1-,可看出,负数不可能为回文数{return false;}long long int sum = 0; long long int x1 = x;while (x1){sum = sum * 10 + x1 % 10;x1 /= 10;}if (sum == x){return true;}elsereturn false;
}

编程题2:

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

思路:通过我们手中的5美元和10美元钞票的数量进行判断,需要注意的便是,一开始我们是没有钱的,只能收5美元,别的遇到便找不开了。 

bool lemonadeChange(int* bills, int billsSize) {//一开始我们是穷光蛋,一块钱都找不出if (bills[0] != 5)return false;int five = 0; int ten = 0;//只需要计算5块钱和10块钱的数目即可,因为找钱不可能拿20找int i = 0;for (i = 0; i < billsSize; i++){if (bills[i] == 5)//给我们5美元的时候,直接收就行{five += 1;}if (bills[i] == 10)//10美元就一种情况,找5美元,收10美元{five -= 1;if (five < 0){return false;}ten += 1;}if (bills[i] == 20)//两种情况,找3张5或1张10和1张5{if (five >= 3 && ten < 1)//确实没有办法了,就找3张5出去,可以找的时候找1张5和1张10//因为5相比10适用范围更大{five -= 3;}else{five -= 1;ten -= 1;}if (five < 0 || ten < 0){return false;}}}return true;
}

  好了,今天的练习到这里就结束了,感谢各位友友的来访,祝各位友友前程似锦O(∩_∩)O

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/46108.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

验证评估守护关基安全 赛宁数字孪生靶场创新实践

​​近日&#xff0c;由赛宁网安主办&#xff0c;ISC互联网安全大会组委会协办的第十一届互联网安全大会&#xff08;ISC 2023&#xff09;安全运营实践论坛圆满结束。赛宁网安产品总监史崯出席并作出主题演讲&#xff1a;《基于数字孪生靶场如何开展验证评估》&#xff0c;同时…

Linux工具【2】(调试器gdb、项目自动化构建工具make/Makefile)

gdb、make/Makefile 引言调试器gdb介绍常用指令 自动化构建工具make/Makefile介绍使用依赖关系与依赖方法编辑Makefile伪目标 总结 引言 在上一篇文章中介绍了Linux中的编辑器vim与编译器gcc与g&#xff1a; 戳我看vim与gcc详解哦 在本篇文章中将继续来介绍Linux中的工具&…

【Apollo学习笔记】——规划模块TASK之LANE_CHANGE_DECIDER

文章目录 前言LANE_CHANGE_DECIDER功能简介LANE_CHANGE_DECIDER相关配置LANE_CHANGE_DECIDER总体流程LANE_CHANGE_DECIDER相关子函数PrioritizeChangeLaneUpdateStatusIsClearToChangeLaneHysteresisFilter 参考 前言 在Apollo星火计划学习笔记——Apollo路径规划算法原理与实…

TCP定制协议,序列化和反序列化

目录 前言 1.理解协议 2.网络版本计算器 2.1设计思路 2.2接口设计 2.3代码实现&#xff1a; 2.4编译测试 总结 前言 在之前的文章中&#xff0c;我们说TCP是面向字节流的&#xff0c;但是可能对于面向字节流这个概念&#xff0c;其实并不理解的&#xff0c;今天我们要介…

nginx反向代理后实现nginx和apache两种web服务器能够记录客户端的真实IP地址

一.构建环境 二.配置反向代理 1.基于源码安装的nginx环境下修改nginx.conf&#xff08;设备1&#xff09; 2.通过windows powershell进行修改hosts文件并测试 3.设备2和设备3上查看日志&#xff0c;可以看到访问来源都是代理服务器&#xff08;2.190&#xff09;而不是真实…

WebSocket服务端数据推送及心跳机制(Spring Boot + VUE)

一、WebSocket简介 HTML5规范在传统的web交互基础上为我们带来了众多的新特性&#xff0c;随着web技术被广泛用于web APP的开发&#xff0c;这些新特性得以推广和使用&#xff0c;而websocket作为一种新的web通信技术具有巨大意义。WebSocket是HTML5新增的协议&#xff0c;它的…

Python Web开发 Django 简介

今天来为大家介绍 Python 另一个 Web 开发框架 Django&#xff0c;它是一个基于 Python 定制的开源 Web 应用框架&#xff0c;最早源于一个在线新闻 Web 网站&#xff0c;后于2005年开源。Django 的功能大而全&#xff0c;它提供的一站式解决的思路&#xff0c;能让开发者不用在…

支持https访问

文章目录 1. 打开自己的云服务器的 80 和 443 端口2. 安装 nginx3. 安装 snapd4. 安装 certbot5. 生成证书6. 拷贝生成的证书到项目工作目录7. 修改 main.go 程序如下8. 编译程序9. 启动程序10. 使用 https 和端口 8081 访问页面成功11. 下面修改程序&#xff0c;支持 https 和…

C++中function,bind,lambda

c11之前&#xff0c;STL中提供了bind1st以及bind2nd绑定器 首先来看一下他们如何使用&#xff1a; 如果我们要对vector中的元素排序&#xff0c;首先会想到sort&#xff0c;比如&#xff1a; void output(const vector<int> &vec) {for (auto v : vec) {cout <&l…

js 中的原型

JavaScript规定&#xff0c;每一个构造函数都有一个prototype属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象。这个对象可以挂载函数&#xff0c;对象实例化不会多次创建原型上函数&#xff0c;节约内存。我们可以把那些不变的方法&#xff0c;直接定义在p…

【Linux】传输层协议:UDP和TCP

争做西格玛男人 文章目录 一、UDP协议1.端口号2.理解UDP报头3.UDP的特点&#xff08;面向数据报&#xff0c;全双工&#xff09; 二、TCP协议1.理解TCP报头某些TCP的策略1.1 TCP报头字段&#xff08;TCP的黏包问题&#xff09;1.2 网络协议栈和linux系统的联系&#xff08;以p…

聚观早报|京东称在技术投入没有止境;木蚁机器人完成B2轮融资

【聚观365】8月18日消息 京东零售CEO表示在技术上投入没有止境 木蚁机器人完成B2轮超亿元融资 耐能推出AI芯片KL730 三星电子泰勒晶圆厂首家客户是AI半导体厂商 韩国新能源汽车7月出口额同比大增36% 京东零售CEO表示在技术上投入没有止境 近日&#xff0c;京东零售CEO辛利…

0基础学习VR全景平台篇 第88篇:智慧眼-成员管理

一、功能说明 成员管理&#xff0c;是指管理智慧眼项目的成员&#xff0c;拥有相关权限的人可以进行添加成员、分配成员角色、设置成员分类、修改成员以及删除成员五项操作。但是仅限于管理自己的下级成员&#xff0c;上级成员无权管理。 二、前台操作页面 登录智慧眼后台操…

Maven之Servlet 版本问题

maven-archetype-webapp 骨架的 Servlet 版本问题 通过 maven-archetype-webapp 骨架去创建 java web 项目时&#xff0c;自动生成的 web.xml 配置文件所使用的 Servlet 的版本比较低&#xff08;2.3&#xff09;&#xff0c;而在低版本的 Servlet 中 EL 表达式默认是关闭的。…

iPhone卫星通信SOS功能如何在灾难中拯救生命

iPhone上的卫星紧急求救信号功能在从毛伊岛野火中拯救一家人方面发挥了至关重要的作用。这是越来越多的事件的一部分&#xff0c;在这些事件中&#xff0c;iPhone正在帮助人们摆脱危及生命的情况。 卫星提供商国际通信卫星组织负责移动的高级副总裁Mark Rasmussen在接受Lifewir…

docker compose部署zookeeper

单机部署 新建docker-compose.yaml version: 3 services:zookeeper:image: zookeeper:3.5.7container_name: base-zookeeperhostname: zookeeperprivileged: truerestart: alwaysports:- 2181:2181environment:TZ: "Asia/Shanghai"volumes:- ./volumes/zookeeper/d…

Python web实战之Django的国际化和本地化详解

关键词&#xff1a;Django、Python、Web开发、国际化&#xff08;i18n&#xff09;、本地化&#xff08;l10n&#xff09; 今天我要和大家分享一下 Python Web 开发中的一个重要话题——Django 的国际化和本地化。 1. 国际化和本地化 你有没有想过如何让你的网站在全球范围内…

fastadmin 下拉多级分类

要实现下图效果 一、先创建数据表 二、在目标的controll中引入use fast\Tree; public function _initialize() {parent::_initialize();$this->model new \app\admin\model\zxdc\Categorys;$tree Tree::instance();$tree->init(collection($this->model->order(…

框架分析(1)-IT人必须会

框架分析&#xff08;1&#xff09;-IT人必须会 专栏介绍当今主流框架前端框架后端框架移动应用框架数据库框架测试框架 Angular关键特点和功能&#xff1a;组件化架构双向数据绑定依赖注入路由功能强大的模板语法测试友好 优缺点分析优点缺点 总结 专栏介绍 link 主要对目前市…

NineData x SelectDB 完成产品兼容互认证

近日&#xff0c;新一代实时数据仓库厂商 SelectDB 与云原生智能数据管理平台 NineData 完成产品兼容互认证。经过严格的联合测试&#xff0c;双方软件完全相互兼容、功能完善、整体运行稳定且性能表现优异。基于本次的合作&#xff0c;双方将进一步为数据管理与大数据分析业务…