c语言每日一练(10)

news2024/11/17 11:27:29

前言:
每日一练系列,每一期都包含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;
    }
    else
        return 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.coloradmin.cn/o/906278.html

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

相关文章

计算机农业类重点SCIE征稿中

SciencePub学术 刊源推荐: 计算机农业类重点SCIE征稿中&#xff01;信息如下&#xff0c;录满为止&#xff1a; 一、期刊概况&#xff1a; 计算机农业类重点SCIE 【期刊简介】IF&#xff1a;3.0-3.5&#xff0c;JCR2区&#xff0c;中科院4区&#xff1b; 【版面类型】正刊&a…

传统车间VS数字化车间,以MES为核心打造智能工厂!

传统车间的生产制造场景往往存在着信息沟通不顺畅&#xff0c;传达不到位的情况&#xff0c;导致生产效率受影响。 其次车间数据的“缓存期”偏短&#xff0c;无法进行长时间的复盘总结&#xff0c;从而难以发现企业管理问题&#xff0c;无法持续改善。 随着大数据、工业互联…

Gate相关记录

1 如何在virtual box里面创建共享文件夹 如果没有设置密码&#xff0c;密码就是默认的virtual 需要现在设置-共享文件夹-设置windows的共享路径&#xff0c;然后再执行下面的命令&#xff0c;Gateshare是我自己建的在windows里面的共享文件夹名字 sudo mount -t vboxsf GateS…

中期国际:外汇新手必读:常见的外汇交易误区与避免方法

对于外汇交易的新手来说&#xff0c;了解和避免常见的交易误区是非常重要的。在本文中&#xff0c;我们将带您一起探讨一些常见的误区&#xff0c;并提供一些实用的避免方法&#xff0c;帮助您在外汇市场上取得更好的交易结果。 误区一&#xff1a;盲目跟单 很多新手会犯一个错…

推特营销6大策略助您制霸国际市场

策略一&#xff1a;专业推文中的链接数量 推特群推王研究发现&#xff0c;无链接的推文策略更能激发粉丝互动。因此&#xff0c;并非每条推文都必须附带链接&#xff0c;要保证链接内容与推文实质相关。通过限制带链接推文的数量&#xff0c;能提升粉丝参与度。 策略二&#…

手机直播源码开发,协议讨论篇(三):RTMP实时消息传输协议

实时消息传输协议RTMP简介 RTMP又称实时消息传输协议&#xff0c;是一种实时通信协议。在当今数字化时代&#xff0c;手机直播源码平台为全球用户进行服务&#xff0c;如何才能增加用户&#xff0c;提升用户黏性&#xff1f;就需要让一对一直播平台能够为用户提供优质的体验。…

IntelliJ IDEA下基于Scala实现的Git检查工具

本文使用Scala实现自定义的Git检查工具,读者可以基于本文的示例进行扩展与实现,也可以进行其他应用方向的尝试。 01、Git检查工具 在实现Git检查工具之前需要知道程序究竟要做什么。我们知道,在管理Git分支时可以进行代码合并操作,这样可以将其他开发者提交的内容同步到当前分支…

cloud 问题

eureka 自我保护机制 eureka 是定时去拿 统计最近15分钟的eureka实例正常的心跳占比&#xff0c;如果低于85%&#xff0c;那么就会触发自我保护机制。 触发了自我保护机制&#xff0c;eureka 暂时会把失效的服务保护起来&#xff0c;不让其过期&#xff0c;但是这些服务也不是…

Amazon S3 对象存储Java API操作记录(Minio与S3 SDK两种实现)缘起

缘起 今年(2023年) 2月的时候做了个适配Amazon S3对象存储接口的需求&#xff0c;由于4月份自学考试临近&#xff0c;一直在备考就拖着没总结记录下&#xff0c;开发联调过程中也出现过一些奇葩的问题&#xff0c;最近人刚从考试缓过来顺手记录一下。 S3对象存储的基本概念 …

Git:本地仓库创建和远程绑定

创建远程仓库 登录git网站&#xff0c;创建一个远程仓库 创建时可以选择仓库属性&#xff0c;公共/私有。仓库命名之类。创建完毕后可以在网站上看到仓库所在网址。 创建本地仓库 打开一个文件夹&#xff0c;鼠标右键Git Bash Here&#xff0c;打开git的命令行 git init//…

什么是室温超导?室温超导意味着什么?

前言&#xff1a; 7月22日&#xff0c;韩国一个科学团队发布论文声称“实现了室温超导”&#xff0c;引发了全球关注&#xff0c;全球很多科学实验室都开始着手按照论文来进行实验&#xff0c;尝试验证论文的真实性&#xff0c;因为如果真的可以实现室温超导&#xff0c;那么影…

REI EDI 项目测试流程

在此前的文章REI EDI 项目案例中&#xff0c;我们了解了REI EDI项目的需求以及实现&#xff0c;项目中采用的是知行之云 LIP 解决方案&#xff0c;供应商需要接收来自 REI 的 EDI 850采购订单、EDI 860 采购订单变更&#xff0c;向REI发送 EDI 856 提前发货通知以及EDI 810发票…

【C语言】选择排序

基本原理 先找到数组中最大的那个数&#xff0c;将最大的数放到数组最右端&#xff08;交换a[maxid]和a[len-1]这两个数的位置&#xff09;&#xff0c;然后继续从a[0]到a[len-2]中找到最大的数&#xff0c;然后交换a[maxid]和a[len-2]位置&#xff0c;依次查找交换&#xff0c…

Golang gorm many2many查询

多对多关系 多对多关系&#xff0c;需要用第三张表存储两张表的关系 多对多就必须得加上many2many的tag。article_tags是用来指定第三张表&#xff0c; package mainimport ("gorm.io/driver/mysql""gorm.io/gorm" )type Tag struct {ID uintName …

如何选择适合你的开源电商 ERP 系统

在这篇文章中&#xff0c;我们将分享一些有用的提示&#xff0c;帮助你在选择开源电商 ERP 系统时做出明智的决定。 开源电商 ERP 系统的重要性 开源电商 ERP 系统可以帮助你管理库存、订单和客户信息&#xff0c;使你的业务更加高效和可靠。与传统的ERP系统相比&#xff0c;…

打造全球浪漫:2023七夕节出海品牌的国际化营销创意

随着时间的流转&#xff0c;2023年的七夕节即将到来&#xff0c;这是一年一度的浪漫佳节&#xff0c;被众多情侣们期待已久。而对于出海品牌来说&#xff0c;七夕节不仅是一个传统的节日&#xff0c;更是一个极具营销价值的时刻。在这个浪漫的节日里&#xff0c;出海品牌可以借…

一文学会lua脚本

文章目录 0.前言背景应用 1. 学习大纲1. 学习基本语法&#xff1a;2. 理解函数和模块&#xff1a;3. 深入数据结构&#xff1a;4. 高级特性和技巧&#xff1a;5. 实践项目&#xff1a; 2. Lua脚本2.1 学习基本语法2.2 理解函数和模块2.3 深入数据结构2.4 高级特性和技巧 3. 高级…

无涯教程-PHP - XML GET

XML Get已用于从xml文件获取节点值。以下示例显示了如何从xml获取数据。 Note.xml 是xml文件&#xff0c;可以通过php文件访问。 <SUBJECT><COURSE>Android</COURSE><COUNTRY>India</COUNTRY><COMPANY>LearnFk</COMPANY><PRICE…

从月薪2300到年薪180万,流水线厂妹变身谷歌工程师,她靠什么逆天改命?

近日&#xff0c;一个90后女孩孙玲收到了谷歌的offer&#xff0c;年薪总包180万的她&#xff0c;顺利进阶为外界眼中闪闪发光的“高收入群体”。 她来自农村&#xff0c;曾2次被迫辍学。 好不容易争取到上学的机会&#xff0c;高考却只考了399分&#xff0c;没有大学可上。 …

Vulnhub系列靶机---Infosec_Warrior1

InfoSecWarrior CTF 2020: 01官网地址 难易程度&#xff1a;So Easy 信息收集 主机发现 arp-scan -l端口扫描 nmap -A -p- 192.168.80.145目录爆破 dirsearch -u 192.168.80.145 -i 200访问80端口&#xff0c;只能看出是Apache站点&#xff0c;没有别的 访问一下sitemap.xm…