c语言经典测试题10

news2024/11/15 23:46:21

1.题1

int fun( int x)
{
	int n = 0;
	while (x + 1)
	{
		n++;
		x = x | (x + 1);
	}
	return n;
}
int main()
{
	int ret = fun(2014);
	printf("%d", ret);
	return 0;
}

上述代码运行结果是什么呢?

我们来分析一下:这里的fun函数有一个while循环,其判断条件为x+1会使每次的x加1,我们的if中x=x|(x+1),这里的按位或操作符,计算规则为只要有1就为1,同时为0才为0,这里的n是用来记录总共循环的次数。第一次循环:

    x的补码为:0000 0000 000 0000 0000 0111 1101 1110 

 x+1的补码为:0000 0000 000 0000 0000 0111 1101 1111

经过按位或运算后的补码为:0000 0000 000 0000 0000 0111 1101 1111

第二次循环:

    x的补码为:0000 0000 000 0000 0000 0111 1101 1111

 x+1的补码为:0000 0000 000 0000 0000 0111 1110 0000

经过按位或运算后的补码为:0000 0000 000 0000 0000 0111 1111 1111

我们发现每循环一次,补码中就会少一个0,所以这个fun函数其实是计算x的补码中0的个数,while循环的判断条件是x+1=0,当x的补码全部为1是值为-1,此时停止循环,n记录了循环的次数,也是该补码中0的个数。

我们运行看看:

2.题2

以下选项中,对基本类型相同的两个指针变量不能进行运算的运算符是( )

A: +  B: -  C: =  D: ==

我们来分析一下:"两个指针的基本类型相同"是指两个指针变量的存储地址的数据类型相同。例如,如果两个指针变量都是整型指针(int*),则它们的基本类型相同。这意味着这两个指针变量都可以指向相同类型的内存地址,并且可以在需要时进行赋值、比较或者进行其他操作。所以A是错的,因为两个地址相加无意义也可能越界,所以规定不允许指针相加。B选项,可以求出两个数据元素储存位置之间的相隔同数据类型的元素个数,C选项,赋值,没问题,D选项,判断两指针是否相同。

3.题3

int fun(char *s)
{
char *t = s;
while(*t++);
return(t-s);
}

有以下函数,该函数的功能是( )

A: 比较两个字符的大小 B: 计算s所指字符串占用内存字节的个数

C: 计算s所指字符串的长度 D: 将s所指字符串复制到字符串t中

我们来分析一下:fun函数中while循环的条件为*t++,所以这个*t为\0时循环停止,并返回首元素地址减去尾元素地址,我们知道首减尾指针结果为其中元素的个数,所以这个函数可以计算s指针指向的字符串的元素个数,所以B正确,但是C选项不包括\0.

4.题4

int main()
{
	float a[3] = { 1.5,2.5,3.5 };
	float *pa = a;
	*(pa++) *= 3;
	printf("%.1f", *pa);
	return 0;
}

上述代码的运行结果是什么呢? 

A: 1.5 B: 2.5 C: 3.5 D: 4.5

我们来分析一下:一开始pa保存的是a[0]的地址,*(pa++)*=3,将a[0]放大三倍,此时的*pa大小为4.5,但是由于还有后置++的存在此时的pa就指向a[1]所以*pa为2.5

5.题5

单词倒排

 void upendprint(char*s)
{
	if (*s != '\0')
	{
		upendprint(s + 1);
		printf("%c", *s);
	}
}
int main()
{
	char arr[1000] = { 0 };
	gets(arr);
	upendprint(arr);
	return 0;
}

我们来测试一下:

 大家也可以试试。

谢谢

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

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

相关文章

uniApp 调整小程序 单个/全部界面横屏展示效果

我们打开uni项目 小程序端运行 默认是竖着的一个效果 我们打开项目的 pages.json 给需要横屏的界面 的 style 属性 加上 "mp-weixin": {"pageOrientation": "landscape" }界面就横屏了 如果是要所有界面都横屏的话 就直接在pages.json 的 gl…

14-Linux部署Hadoop集群

Linux部署Hadoop集群 简介 1)Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 2)主要解决,海量数据的存储和海量数据的分析计算问题。 Hadoop HDFS 提供分布式海量数据存储能力 Hadoop YARN 提供分布式集群资源管理能力 Hadoop…

Django后端开发——cookies和session

文章目录 参考资料会话保持Cookiesviews.pyurls.py Sessionviews.pyurls.py Cookies和session对比 参考资料 B站网课:点击蓝色字体跳转 或复制链接至浏览器:https://www.bilibili.com/video/BV1vK4y1o7jH/?p29&spm_id_from333.1007.top_right_bar_…

Android Gradle开发与应用 (四) : Gradle构建与生命周期

1. 前言 前几篇文章,我们对Gradle中的基本知识,包括Gradle项目结构、Gradle Wrapper、GradleUserHome、Groovy基础语法、Groovy语法概念、Groovy闭包等知识点,这篇文章我们接着来介绍Gradle构建过程中的知识点。 2. Project : Gradle中构建…

Linux - 基本开发工具

1、软件包管理器 yum 1.1、什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方…

接口测试(全)

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 大多数人对于接口测试都觉得是一种高大上的测试,觉得…

Flutter开发之CupertinoApp

Flutter开发之CupertinoApp 最近由于使用Flutter编程更多,使用Flutter更顺手,相对于其他前端框架来说,Flutter在跨平台、响应式UI、自绘引擎、即插即用的组件和庞大的社区生态支持方面有更大的优势;Flutter拥有更低的学习成本&am…

前端monorepo大仓共享复杂业务组件最佳实践

一、背景 在 Monorepo 大仓模式中,我们把组件放在共享目录下,就能通过源码引入的方式实现组件共享。越来越多的应用愿意走进大仓,正是为了享受这种组件复用模式带来的开发便利。这种方式可以满足大部分代码复用的诉求,但对于复杂…

AutoEncoder和 Denoising AutoEncoder学习笔记

参考: 【1】 https://lilianweng.github.io/posts/2018-08-12-vae/ 写在前面: 只是直觉上的认识,并没有数学推导。后面会写一篇(抄)大一统文章(概率角度理解为什么AE要选择MSE Loss) TOC 1 Au…

Java进阶-IO(1)

进入java IO部分的学习,首先学习IO基础,内容如下。需要了解流的概念、分类还有其他一些如集合与文件的转换,字符编码问题等,这次先学到字节流的读写数据,剩余下次学完。 一、IO基础 1、背景 1.1 数据存储问题 变量…

Day21-磁盘管理之raid及分区

Day21-磁盘管理之raid及分区 1 Raid技术1.1 什么是Raid?1.2 为什么服务器需要Raid?1.3 什么是Raid级别?1.4 Raid有哪些实现方式?1.5 什么是RAID0?(图)1.6 什么是RAID1?(图)1.7 什么是RAID5&a…

Python爬虫Cookies 池的搭建

Cookies 池的搭建 很多时候,在爬取没有登录的情况下,我们也可以访问一部分页面或请求一些接口,因为毕竟网站本身需要做 SEO,不会对所有页面都设置登录限制。 但是,不登录直接爬取会有一些弊端,弊端主要有…

[HackMyVM] 靶场 Wave

kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (Un…

学习助手:借助AI大模型,学习更高效!

在当今的数字时代,人工智能(AI)的崛起已经彻底改变了我们获取信息、处理数据以及学习新知识的方式。AI大模型,特别是如OpenAI开发的GPT-4这类先进的技术,已成为学习和教育领域的一大助力。本文旨在探索如何借助AI大模型…

tritonserver学习之八:redis_caches实践

tritonserver学习之一:triton使用流程 tritonserver学习之二:tritonserver编译 tritonserver学习之三:tritonserver运行流程 tritonserver学习之四:命令行解析 tritonserver学习之五:backend实现机制 tritonserv…

javaWebssh票据管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh票据管理系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模 式开发。开发环境为TOMCAT7.0,My…

Vue+SpringBoot打造高校大学生创业管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统公告模块2.2 创业项目模块2.3 创业社团模块2.4 政府政策模块2.5 创业比赛模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 系统公告表3.2.2 创业项目表3.2.3 创业社团表3.2.4 政策表 四、系统展示五、核心代码5.…

MutationObserver是一个可以监听DOM结构变化的接口,请停用DOMContentLoaded

DOMContentLoaded已经要被放弃使用了,所以官方推荐使用MutationObserver来监听页面发生变化。但是如果你想继续使用也是可以的;Document: DOMContentLoaded event - Web APIs | MDN MutationObserver官方文档:MutationObserver - Web APIs |…

Python 自动化给女友发邮件:含新闻、天气、每日一句、图片 最全攻略系列02 如何添加emoji

Python 自动化给女友发邮件:含新闻、天气、每日一句、图片 最全攻略系列 是否想在女友面前展示程序员炫酷的一面? 是否想给她每日问候但是害怕忘记固定时间发送信息? 是否也羡慕别人可以优雅使用Python定时发送邮件? 欢迎来到Python自动化发邮件最全攻略系列,本系列将…

《剑指 Offer》专项突破版 - 面试题 65、66 和 67 : 关于前缀树应用的面试题(C++ 实现)

目录 面试题 65 : 最短的单词编码 面试题 66 : 单词之和 面试题 67 : 最大的异或 面试题 65 : 最短的单词编码 题目: 输入一个包含 n 个单词的数组,可以把它们编码成一个字符串和 n 个下标。例如,单词数组 ["time", "me&…