c语言每日一练(10)

news/2024/5/20 8:36:26/文章来源:https://blog.csdn.net/fq157856469/article/details/132402270

前言:
每日一练系列,每一期都包含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.luyixian.cn/news_show_159474.aspx

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

相关文章

【Linux】Centos安装 mariadb 并授权远程登陆

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

ubuntu 20.04 安装 高版本cuda 11.7 和 cudnn最新版

一、安装显卡驱动 参考另一篇文章&#xff1a;Ubuntu20.04安装Nvidia显卡驱动教程_ytusdc的博客-CSDN博客 二、安装CUDA 英伟达官网&#xff08;最新版&#xff09;&#xff1a;CUDA Toolkit 12.2 Update 1 Downloads | NVIDIA Developer CUDA历史版本下载地址&#xff1a;C…

干货!一文告诉你SCRM和CRM有什么区别和联系?

在现代商业领域&#xff0c;我们经常听到两个缩写词&#xff0c;即"SCRM"和"CRM"。它们都与客户关系管理有关&#xff0c;但具体是什么意思&#xff1f;本文将用通俗易懂的方式解释这两个概念&#xff0c;以实例分析SCRM和CRM的功能并探讨它们之间的区别和…

【搭建WebDAV服务手机ES文件浏览器远程访问】

文章目录 1. 安装启用WebDAV2. 安装cpolar3. 配置公网访问地址4. 公网测试连接5. 固定连接公网地址6. 使用固定地址测试连接 有时候我们想通过移动设备访问群晖NAS 中的文件,以满足特殊需求,我们在群辉中开启WebDav服务,结合cpolar内网工具生成的公网地址,通过移动客户端ES文件…

一种新型的4H-SiC超结共模场效应晶体管(UMOSFET),具有异质结二极管,以提高反向恢复特性

标题&#xff1a;A novel 4H-SiC super junction UMOSFET with heterojunction diode for enhanced reverse recovery characteristics 摘要 摘要—本文提出并通过数值模拟研究了一种新型的碳化硅&#xff08;SiC&#xff09;超结共模场效应晶体管&#xff08;UMOSFET&#xf…

发布python模仿2023年全国职业的移动应用开发赛项样式开发的开源的新闻api,以及安卓接入案例代码

python模仿2023年全国职业的移动应用开发赛项样式开发的开源的新闻api&#xff0c;以及原生安卓接入案例代码案例 源码地址:keyxh/newsapi: python模仿2023年全国职业的移动应用开发赛项样式开发的开源的新闻api&#xff0c;以及安卓接入案例代码 (github.com) 目录 1.环境配…

WSL2和本地windows端口互通

众所周知 WSL 默认安装后&#xff0c;只允许windows访问 Windows Subsystem for Linux&#xff0c;而WSL是不能反之访问本地windows。我之前用vmware的思路认为是nat的网络模式&#xff0c;于是改成了桥接&#xff0c;结果wsl的桥接模式被我改的能访问本地&#xff0c;但是却不…

Jmeter 接口测试总结

背景介绍 对于 Android 项目来说&#xff0c;使用的是 Java 开发&#xff0c;网络请求接口的数量庞大且复杂&#xff0c;测试人员无法很直观的判断、得出网络请求是否存在问题。另一方面&#xff0c;为了验证请求接口是否能够在大负荷条件下&#xff0c;长时间、稳定、正常的运…

3、Spring之底层架构核心概念解析

BeanDefinition BeanDefinition表示Bean定义,BeanDefinition中存在很多属性用来描述一个Bean的特点。比如: class,表示Bean类型scope,表示Bean作用域,单例或原型等lazyInit:表示Bean是否是懒加载initMethodName:表示Bean初始化时要执行的方法destroyMethodName:表示Be…

善于打仗的人,没有特别大的名气和勇功

善于打仗的人&#xff0c;没有特别大的勇功 【安志强趣讲《孙子兵法》第15讲】 【原文】 见胜不过众人之所知&#xff0c;非善之善者也&#xff1b;战胜而天下曰善&#xff0c;非善之善者也。 【趣讲白话】 预判胜负没有超出常人的见识&#xff0c;算不上高明中最高明的&#x…

简单认识Docker的资源控制

文章目录 一、CPU资源限制1.设置CPU使用率上限2.设置CPU资源占用比&#xff08;设置多个容器才有效&#xff09;3.设置容器与CPU绑核 二、内存资源限制三、对磁盘I/O配额的限制 一、CPU资源限制 1.设置CPU使用率上限 Linux通过CFS&#xff08;Completely Fair Scheduler&#…

【C语言学习】二分法查找有序数组中的数

二分查找的基本原理 二分查找的基本逻辑就是每次找区间的中间数&#xff0c;然后与要查找的数进行比较&#xff0c;不断的缩小区间&#xff0c;最后区间中只剩一个数&#xff0c;即为要查找的数。如果不是&#xff0c;则没有该数。 二分查找只适用于有序数组 以数组中的数从左…

[oneAPI] 手写数字识别-VAE

[oneAPI] 手写数字识别-VAE oneAPIVAE模型实现手写数字识别任务定义使用包定义参数加载数据VAE模型与介绍训练过程结果 比赛&#xff1a;https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0517 Intel DevCloud for oneAPI&#xff1a;https://devcloud.intel.com/one…

web文件上传

文件上传指的是&#xff0c;将本地的图片、视频、音频上传到服务器&#xff0c;提供给其他用户浏览和下载的过程 前端需求 想要进行文件上传对于web前端来说有三个重要要素 1.<input type"file" name"image"> 提供这样的file文件上传格式 2. metho…

A - Bone Collector(01背包)

Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bones , such as dog’s , cow’s , also he went to the grave … The bone collector had a big bag with a volume of V ,and along his tr…

IP库新增经过实践的Verilog 库

网上严重缺乏实用的 Verilog 设计。Project F 库是尝试让 FPGA 初学者变得更好部分。 设计包括 Clock- 时钟生成 (PLL) 和域交叉Display - 显示时序、帧缓冲区、DVI/HDMI 输出Essential- 适用于多种设计的便捷模块Graphics- 绘制线条和形状Maths- 除法、LFSR、平方根、正弦....…

x86 Linux系统下构建交叉编译工具(3)

接前一篇文章&#xff1a;x86 Linux系统下构建交叉编译工具&#xff08;2&#xff09; 本文参考以下文章&#xff1a; 建立交叉编译器 for arm &#xff08;binutils-2.17 gcc-3.4.6 glibc-2.3.6&#xff09; 特此致谢&#xff01; 上一回构建了binutils的交叉环境&#xff0…

虚实相生,深兰科技“产业元宇宙”探索数字经济新模式

运用深兰科技数字孪生技术生成的武汉江汉路 不用出门&#xff0c;也能在武汉江汉路逛街&#xff1f;创建虚拟数字人形象&#xff0c;用户就可以在基于数字孪生平台打造的元宇宙街区逛街购物。路过滑板店&#xff0c;地上随机掉落神奇胶囊&#xff0c;打开即发现一张满500减200的…

多模双芯LC光纤跳线应用下的光模块方案之争

从40G QSFP SR4光模块产品开始&#xff0c;多模MPO光纤跳线 逐步进入光模块用户的视野。随着新建数据中心的增多&#xff0c;该类光纤跳线也开始普及并被广泛应用。然而&#xff0c;对于不少10G/25G时代就已经建设好的“老旧”机房来说&#xff0c;机房内基本全部部署的是多模L…

lwIP更新记10:IP 冲突检测

lwip-2.2.0-rc1 版本于 2023 年 6 月 29 日发布&#xff0c;带来了我期盼已久的 IPv4 冲突检测 功能。 lwip-2.2.0-rc1 版本重新回归了 master 分支&#xff08;主分支&#xff09;&#xff0c;不再使用单独的稳定分支。 master 分支 是一个 Git&#xff08;版本控制程序&…