C语言之练习题

在这里插入图片描述

欢迎来到我的:世界

希望作者的文章对你有所帮助,有不足的地方还请指正,大家一起学习交流 !


目录

  • 前言
  • 填空题:
    • 第一题
    • 第二题
    • 第三题
  • 编程题:
    • 第一题:不用加减乘除做加法
    • 第二题:完全数计算
    • 第三题:单词倒排
  • 总结

前言

今天是学校开学的第一天😊,真是个特殊的日子,步入写博客已经不知不觉有6个月了,我能感受写博客越来越从容了,那就让我俯视这我所热爱的一切。😎

在这里插入图片描述


填空题:

第一题

请问下列程序输出的结果是什么?

在这里插入图片描述

思路:无符号位char类型范围是:0~255
所以这题就是让我们寻找等于0的时候;
知道-211111110变成254;同理-111111111变成255,最后减到0的时候就跳出循环,不满足就继续循环;
7 4 1 -2 == > 共(7-1)/3+1=3次(1- 3 = -2,即254,继续循环)
254 251…5 2 -1 == > 共(254-2)/3+1=85次(2- 3 = -1 ,即255,继续循环 )
255 252…6 3 0 == > 共(255-5)/3+1=85次(3-3=0,退出循环)
所以一共循环了: 85+85+3=173次

第二题

请问下列程序输出的结果是什么?

在这里插入图片描述
思路:

这道题考察的是:隐式类型转换
x是有符号数-1,内存中是全1,当有符号的x和无符号数进行比较时,x会隐式类型转换被当做无符号数,是一个很大的数,所以会进入(x > y),且打印出:x is greater

第三题

在这里插入图片描述
思路:

我们首先要知道x|(x + 1)意味着什么?
假设x=3就是011,那么x+1=4就是100按照按位或|的运算原则:有1则为1,两者都为0,则为0;所以知道x|(x+1)111,从右往左数第一个0变成了1
总结:x|(x+1)作用是每次循环把x的二进制中从右往左数的最后一位0变成1;
x所有二进制位的都变成了1,那x+1就会溢出为0,循环结束;
2014的二进制序列是:0000 0000 000 0000 0000 0111 1101 1110,所以应该为23;

编程题:

第一题:不用加减乘除做加法


地址:oj地址


在这里插入图片描述
解题思路:

这道题考察的是:加法的运算原理
肯定要根据利用数据的二进制位来实现,那就需要运用了按位与&按位异或^
首先知道&的运算原则:有0则为0,两者都为1,则为1
^的运算原则:相同则为0,相异则为1;
如果用他们的二进制来计算:
假如不需要进位,则直接就可以得到答案:
51012010,不需要进位,则101 ^ 010等于1117
假如需要进位,则需要&找出需要进位值再进行<<1进位;
假设两个值 32,二进制分别为011010,结果应该为5,即101,那就来看二进制011 & 010,就可以找到需要进位的二进制位,再<<1,代表进1位;

知道了&的运算原则,那肯定可以用来进位的时候用;

代码实现:

int Add(int num1, int num2 ) {// write code hereint tem=num1;while(num2){tem=num1^num2;//不考虑进位num2=(num1&num2)<<1;//考虑进位num1=tem;}return tem;
}

第二题:完全数计算


地址:oj地址


在这里插入图片描述

解题思路:

思路:可以看出要为完全数,应该其所以的真因子之和要是该完全数的两倍;
要遍历该数的所有真因子在加起来,判断是否是该数的两倍,如果是那就是完全数,否则就不是;遍历完每个数记得将其记录真因子之和清空;

代码实现;

int main() {int n=0;scanf("%d",&n);int i=0;int count=0;//记录真因子之和int sum=0;//记录完全数的个数for(i=1;i<n;i++){int j=0;for(j=1;j<=i;j++){if(i%j==0)//是真因子就进入{count+=(i/j);}}if(count==2*i)//真因子之和是否为该数的两倍{sum++;}count=0;}printf("%d",sum);return 0;
}

第三题:单词倒排


地址:oj地址


在这里插入图片描述

解题思路:

思路:要满足题目要求的四个条件;
根据示例2:如果不是构成单词的字符只有26个大写或小写英文字母中的范围内,就打印空格.

如果要单词倒排,我们可以创造两个数组,一个数组存放的原输入的字符串,另一个数组用来存放倒排之后的字符串,然后打印出来就可以;

具体过程:
注意:设存放原输入的字符串的数组为 arr,另一个数组设为num;我们可以在输入进arr数组的时候就进行判断,如果不是 (构成单词的字符只有26个大写或小写英文字母)该范围里的,就输入一个空格‘ ’
设置一个指针指right向数组的最后一个元素,然后往前找空格,找到空格(记录该位置)就代表找到了最后一个单词的首字符,然后在依次输入num数组中,完成后,让指针又回到记录的那个空格的位置,判断是否为空格,如果是空格,就把空格输入num数组的同时指针right往前走,直到不是空格,这时指针指向的是倒数第二个单词的最后一个字符,然后后续按照上述的过程进行循环,直到将原来arr数组中的字符串全部都输入进了num数组,就跳出总循环;

代码实现:

#include <stdio.h>int main() {char arr[10001];char num[10001];char ch = 0;int i = 0;int j = 0;while ((ch = getchar()) != '\n') {if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))arr[i] = ch;elsearr[i] = ' ';i++;}int right = i - 1;int count = 0;//记录这个单词多少个字节while (right >= 0) {//找到单词的开头位置while (arr[right] != ' ' && right >= 0) {count++;right--;}int tem = right;//记住这个位置while (count--) //输入num数组{num[j] = arr[right + 1];j++;right++;}right = tem;while (arr[right] == ' ') //如果是空格也传入num数组{num[j] = arr[right];right--;j++;}count = 0;//记得每次传完单词后要记录新的单词,这里要清0;}for (i = 0; i < j; i++) {printf("%c", num[i]);}return 0;
}

总结


到了最后:感谢支持

我还想告诉你的是:
------------对过程全力以赴,对结果淡然处之
也是对我自己讲的

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

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

相关文章

Redis快速入门

文章目录 1. Centos下Redis安装2. redis.conf配置文件介绍3. redis相关命令4. redis封装系统服务5. 问题与解决 1. Centos下Redis安装 Linux_Study 目录&#xff1a;5.2 https://blog.csdn.net/meini32/article/details/128562114 2. redis.conf配置文件介绍 https://blog.c…

【GPT引领前沿】GPT4技术与AI绘图

推荐阅读&#xff1a; 1、遥感云大数据在灾害、水体与湿地领域典型案例实践及GPT模型应用 2、GPT模型支持下的Python-GEE遥感云大数据分析、管理与可视化技术 GPT对于每个科研人员已经成为不可或缺的辅助工具&#xff0c;不同的研究领域和项目具有不同的需求。例如在科研编程…

ChatGPT AIGC 完成动态堆积面积图实例

先使用ChatGPT AIGC描述一下堆积面积图的功能与作用。 接下来一起看一下ChatGPT做出的动态可视化效果图: 这样的动态图案例代码使用ChatGPT AIGC完成。 将完整代码复制如下: <!DOCTYPE html> <html> <head><meta charset="utf-8"><tit…

Python Flask Web开发二:数据库创建和使用

前言 数据库在 Web 开发中起着至关重要的作用。它不仅提供了数据的持久化存储和管理功能&#xff0c;还支持数据的关联和连接&#xff0c;保证数据的一致性和安全性。通过合理地设计和使用数据库&#xff0c;开发人员可以构建强大、可靠的 Web 应用程序&#xff0c;满足用户的…

Ubuntu系统下使用宝塔面板实现一键搭建Z-Blog个人博客的方法和流程

文章目录 1.前言2.网站搭建2.1. 网页下载和安装2.2.网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar临时数据隧道3.2.Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 4.公网访问测试5.结语 1.前言 Ubuntu系统作…

Ansible之playbook剧本

一、playbook概述1.1 playbook 介绍1.2 playbook 组成部分 二、playbook 示例2.1 playbook 启动及检测2.2 实例一2.3 vars 定义、引用变量2.4 指定远程主机sudo切换用户2.5 when条件判断2.6 迭代2.7 Templates 模块1.先准备一个以 .j2 为后缀的 template 模板文件&#xff0c;设…

算法leetcode|76. 最小覆盖子串(rust重拳出击)

文章目录 76. 最小覆盖子串&#xff1a;样例 1&#xff1a;样例 2&#xff1a;样例 3&#xff1a;提示&#xff1a;进阶&#xff1a; 分析&#xff1a;在这里插入图片描述 题解&#xff1a;rust&#xff1a;go&#xff1a;c&#xff1a;python&#xff1a;java&#xff1a; 76.…

若依新建模块

下面介绍如何在若依框架下新建一个子模块 第一步&#xff1a; 如图操作&#xff1a; 1. 2. 3. 4.在刚建立的子模块的pom.xml文件添加通用工具依赖 代码&#xff1a; <dependencies> <!-- 导入通用工具--><dependency><groupId>com.rchuing&l…

2023-09-04 Linux 让shell编译脚本里面设置的环境变量改变kernel里面驱动文件的宏定义值方法,我这里用来做修改固件版本

一、原生的读取版本接口是/proc/version&#xff0c;我这里需要提供获取固件版本号的api给app&#xff0c;因为版本号会经常需要修改&#xff0c;如果每次都到kernel下修改比较麻烦&#xff0c;我这里是想在编译脚本里面对版本号进行修改&#xff0c;这样方便一点。 二、主要修…

无需租云服务器,Linux本地搭建web服务,并内网穿透发布公网访问

文章目录 前言1. 本地搭建web站点2. 测试局域网访问3. 公开本地web网站3.1 安装cpolar内网穿透3.2 创建http隧道&#xff0c;指向本地80端口3.3 配置后台服务 4. 配置固定二级子域名5. 测试使用固定二级子域名访问本地web站点 前言 在web项目中,部署的web站点需要被外部访问,则…

2023 最新前端面试题 (HTML 篇)

1. src 和 href 的区别 src 用于替换当前元素&#xff08;引入&#xff09;&#xff0c;href 用于在当前文档和引用资源之间确立联系&#xff08;引用&#xff09; &#xff08;1&#xff09;src&#xff08;source&#xff09; 指向外部资源的位置&#xff0c;指向的内容将会嵌…

安卓 MeasureCache优化了什么?

安卓绘制原理概览_油炸板蓝根的博客-CSDN博客 搜了一下&#xff0c;全网居然没有人提过 measureCache。 在前文中提到过&#xff0c;measure的时候&#xff0c;如果命中了 measureCache&#xff0c;会跳过 onMeasure&#xff0c;同时会设置 PFLAG3_MEASURE_NEEDED_BEFORE_LAYOU…

TypeScript_树结构-BST树

树结构 树的特点 树通常有一个根。连接着根的是树干树干到上面之后会进行分叉成树枝&#xff0c;树枝还会分又成更小的树枝在树枝的最后是叶子 树的抽象 树可以模拟生活中的很多场景&#xff0c;比如&#xff1a;公司组织架构、家谱、DOM Tree、电脑文件夹架构 优秀的哈希函…

【Unity】VS Code 没有自动补全 MonoBehaviour 的方法

正常来说&#xff0c;在VS Code 输入类似 OnTriggerEnter2D等方法名时&#xff0c;VS Code会根据已经输入的前缀自动提示相关方法。 在不正常的情况下&#xff0c;根据StackOverFlow上面的回答&#xff0c;依次试过了 安装 .NET SDK安装 .NET Framework Dev PackVS Code安装 …

openGauss学习笔记-60 openGauss 数据库管理-逻辑存储结构

文章目录 openGauss学习笔记-60 openGauss 数据库管理-逻辑存储结构 openGauss学习笔记-60 openGauss 数据库管理-逻辑存储结构 openGauss的数据库节点负责存储数据&#xff0c;其存储介质也是磁盘&#xff0c;本节主要从逻辑视角介绍数据库节点都有哪些对象&#xff0c;以及这…

深入解析Kotlin类与对象:构造、伴生、单例全面剖析

前言 本篇文章将带您了解Kotlin编程中的重要概念&#xff1a;类及构造函数、访问修饰符、伴生对象和单例模式。就像搭积木一样&#xff0c;我们会逐步揭开这些概念的面纱&#xff0c;让您轻松理解它们的作用和用法。无论您是编程新手还是有经验的开发者&#xff0c;本文都将为…

Linux命令200例:man用于显示和阅读关于Linux内置命令的使用说明

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0…

后端SpringBoot+前端Vue前后端分离的项目(一)

前言&#xff1a;后端使用SpringBoot框架&#xff0c;前端使用Vue框架&#xff0c;做一个前后端分离的小项目&#xff0c;需求&#xff1a;实现一个表格&#xff0c;具备新增、删除、修改的功能。 目录 一、数据库表的设计 二、后端实现 环境配置 数据处理-增删改查 model…

Excel·VBA二维数组组合函数的应用实例

看到一个问题《关于#穷举#的问题&#xff0c;如何解决&#xff1f;(语言-开发语言)》&#xff0c;对同一个数据存在“是/否”2种状态&#xff0c;判断其是否参与计算&#xff0c;并输出一系列数据的“是/否”状态的结果 目录 方法1&#xff1a;二维数组组合函数结果 方法2&am…

【FusionInsight 迁移】HBase从C50迁移到6.5.1(02)C50上准备FTP Server

【FusionInsight 迁移】HBase从C50迁移到6.5.1&#xff08;02&#xff09;C50上准备FTP Server HBase从C50迁移到6.5.1&#xff08;02&#xff09;C50上准备FTP Server登录老集群FusionInsight C50的Manager准备FTP User准备FTP Server HBase从C50迁移到6.5.1&#xff08;02&am…