c语言经典测试题10

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.hqwc.cn/news/504409.html

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

相关文章

详解队列的接口函数

队列的定义 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。 进行插入操作的…

CleanMyMac X2024免费Mac电脑清理和优化工具

CleanMyMac X是一款专业的 Mac 清理和优化工具,它具备一系列强大的功能,可以帮助用户轻松管理和维护他们的 Mac 电脑。以下是一些关于 CleanMyMac X 的主要功能和特点: 智能清理:CleanMyMac X 能够智能识别并清理 Mac 上的无用文件…

AJAX实例

AJAX - Asynchronous JavaScript and XML - 异步的JavaScript与XML,不是一门新技术,只是一个新的术语。(老技术新玩法) - 使用AJAX,网页能够将增量更新呈现在页面上,而不需要刷新整个页面。 - 虽然X代表…

考研机试C++题目精选

更多内容会在godownio.github.io更新 算法练习(C代码) 考研上机或C语言代码笔试准备,暨大机试原题letcode牛客中南大等高校机试 快速幂算法 题目:输入一个整数 n ,求 n^n 的个位数是多少。 快速幂算法:…

初识C语言—常见关键字

变量的命名最好有意义 名字必须是字母&#xff0c;数字&#xff0c;下划线组成&#xff0c;不能有特殊字符&#xff0c;同时不能以数字开头 变量名不能是关键字 typedef---类型定义&#xff0c;类型重命名 #include <stdio.h>typedef unsigned int uint; //将unsigne…

第七十二天 漏洞发现-Web框架中间件联动GobyAfrogXrayAwvsVulmap

第72天 漏洞发现-Web框架中间件&联动&Goby&Afrog&Xray&Awvs&Vulmap 知识点&#xff1a; 1、Bup简单介绍&使用说明 2、Xray简单介绍&使用说明 3、AWWS简单介绍&使用说明 4、Goby简单介绍&使用说明 5、Afrog简单介绍&使用说明 6、…

Qt/自定义控件的封装

新建文件&#xff0c;选择Qt设计师界面类 创建空界面 这是自己控件封装的文件&#xff0c;双击跳转到设计界面进行设计 跳转到其他的ui界面&#xff0c;创建一个widget 右键&#xff0c;选择提升为 在提升的类名称输入刚刚创建的类名&#xff0c;添加后选择提升&#xff0c;勾选…

2024年经典【自动化面试题】附答案

一、请描述一下自动化测试流程&#xff1f; 自动化测试流程一般可以分为以下七步&#xff1a; 编写自动化测试计划&#xff1b; 设计自动化测试用例&#xff1b; 编写自动化测试框架和脚本&#xff1b; 调试并维护脚本&#xff1b; 无人值守测试&#xff1b; 后期脚本维…

C++:内存管理|new和delete

创作不易&#xff0c;感谢三连支持&#xff01; 一、内存分布 为什么需要内存管理呢&#xff1f;&#xff1f;因为我们在程序的运行过程中会需要各种各样的数据&#xff0c;而我们根据数据的不同存储在不同的区域里面&#xff0c;是为了更高效地处理数据。而C语言相比Java来说…

可视化场景(1):销售业绩大屏-是骡子是马,牵出溜溜

销售业绩可视化大屏的是一种有力的销售数据管理工具&#xff0c;贝格前端工场分享一批给友友们&#xff0c;如需要定制&#xff0c;可以与我们联络&#xff0c;开始了。 销售业绩可视化大屏是一种将销售数据以图表、数字、文字等形式展示在大屏幕上的数据可视化工具。它的作用主…

flutter 文字一行显示,超出换行

因为app有多语言&#xff0c;中文和其他语言长度不一致&#xff0c;可能导致英文会很长。 中文样式 英文样式 代码 Row(mainAxisAlignment: MainAxisAlignment.end,crossAxisAlignment: CrossAxisAlignment.end,children: [Visibility(visible: controller.info.fee ! null,ch…

图论 - Trie树(字符串统计、最大异或对)

文章目录 前言Part 1&#xff1a;Trie字符串统计1.题目描述输入格式输出格式数据范围输入样例输出样例 2.算法 Part 2&#xff1a;最大异或对1.题目描述输入格式输出格式数据范围输入样例输出样例 2.算法 前言 本篇博客将介绍Trie树的常见应用&#xff0c;包括&#xff1a;Trie…