拒绝摆烂!C语言练习打卡第三天

🔥博客主页:小王又困了

📚系列专栏:每日一练

🌟人之为学,不日近则日退 

❤️感谢大家点赞👍收藏⭐评论✍️

 


目录

一、选择题

📝1.第一题 

📝2.第二题 

📝3.第三题 

二、编程题

📝1.第一题 

📝2.第二题 


🗒️前言:

在前面我们学习完C语言的所以知识,当然练习巩固也不能落下。俗话说:“无财之谓贫,学而不能行之谓病。”可见实践对我们学习的重要。接下来就让小王带着大家进行练习,巩固我们C语言的学习。

一、选择题

📝1.第一题 

以下程序运行后的输出结果是( )

int main()
{
    int a=1,b=2,m=0,n=0,k;
    k=(n=b<a)&&(m=a);
    printf("%d,%d\n",k,m);
    return 0;
}

💡解题思路:

这道题是要打印 k 和 m 的值,我们通过执行上面的表达式来得到它两的值。在这里括号的优先级最高,先执行括号中的代码,关系运算符的优先级大于赋值操作符,这里我们要注意 && ,当左边为假时,就不用执行右边的代码。

  1. 先执行 b<a 为假值为0,再将0赋值给n,表达式结果为零
  2. 再将0赋值给 k,表达式 k=0表达式为假
  3. 左侧表达式为假,右侧表达式也不执行,所以 k 和 m 的值都为0

📝2.第二题 

读代码选结果( )

int main()
{
	int count = 0;
	int x = -1;
	while (x)
	{
		count++;
		x = x >> 1;
	}
	printf("%d", count);
}

 💡解题思路:

通过观察代码,可以得知代码的目是计算一个整数 x 的二进制表示中有多少个1。

  • 首先,初始化计数器count为0,用于记录1的个数。
  • 然后,将整数 x 初始化一个值。接下来进入while循环,条件是x不为0。在循环内部,首先将count加1,表示找到了一个1。然后将x右移一位(相当于除以2),继续检查新的x值。当x变为0时,循环结束。
  • 最后,使用printf函数输出计数器count的值,即整数 x 的二进制表示中1的个数。

但是这里 x 初始化为-1,-1的二进制补码全部都是1,第一位是符号位。右移分为算数右移逻辑右移,一般编译器都是算术右移:右边丢弃,左边补原来的符号位。所以计数器会一直加,程序陷入死循环。

📝3.第三题 

请阅读以下程序,其运行结果是( )

int main()
{
    char c='A';
    if('0' <=c<= '9') 
    {    
        printf("YES");
    }
    else 
    {
        printf("NO");
    }
    return 0;
}

 💡解题思路:

这道题很容易对大家产生误解,'0' <=c<= '9' 这段代码的意思就是 c 大于 ‘0’小于 ‘9’ 就为真,但这种是数学中的写法,在程序中这样的代码要从左向右执行:

  • 先执行 ‘0’<= c,'A' 的ASCII码值为65,‘0’ 的ASCII码值为48,‘0’ <=c 为真值为1
  • 然后进行下面的判断 1<= ‘9’ 为真,所以打印YES

正确的代码应该写成 c >='0'  && c <= '9',if语句判断为真,打印YES。

虽然两段代码的结果相同,但逻辑并不相同,所以我们在平常写代码时一定要规范。

二、编程题

📝1.第一题 

💡解题思路:

我们想在数字中添加逗号,将每一位通过 %10 /10 的方式拆分下来,在需要的地方将逗号插入进去。由于加入逗号,原来的数字就不能用整型表示,而是要变成字符型,在得到每位的数据加上 ‘0’ 就可以变成字符型。将得到的数据存放在字符数组中,每存放3个数据就插入一个逗号,即k%3==0 就插入,这里要注意判断条件,当插入第一个数时,k%3==0 的条件也满足,但是不需要插入逗号,所以我们要加上 k!=0 ,使条件完整。

#include <stdio.h>
int main()
{
    int n = 0;
    scanf("%d", &n);
    //存放最后的结果
    char arr[14] = { 0 };
    int i = 0;
    //记录加逗号
    int k = 0;
    while (n)
    {
        if (k != 0 && k % 3 == 0)
        {
            arr[i++] = ',';
        }
        arr[i++] = n % 10 + '0';
        n /= 10;
        k++;
    }
    //打印
    for (i--; i >= 0; i--)
    {
        printf("%c", arr[i]);
    }
    return 0;
}

📝2.第二题 

 💡解题思路:

我们通过两个循环遍历数组,当找到 numbers[i]+numbers[j] 和目标值相同的直接 return 。由于题目中还要求时间复杂度为 O(nlogn) ,两次循环时间复杂度为 O(n^2)。所以我们可以使用 contine ,在第二次循环之前先判断,如果 numbers[i]>target ,两数之和一定大于 target,使用 continue就可以跳过第二次循环,执行下一次。

  • continue:提前结束本次循环,接着执行下一次循环 

 

int* twoSum(int* numbers, int numbersLen, int target, int* returnSize) 
{
    int* newarr = (int*)malloc(sizeof(int) * 2);
    int i = 0;
    for (i = 0; i < numbersLen; i++)
    {
        if (numbers[i] > target)
        {
            continue;
        }
        int j = 0;
        for (j = i + 1; j < numbersLen; j++)
        {
            if (numbers[i] + numbers[j] == target)
            {
                newarr[0] = i + 1;
                newarr[1] = j + 1;
                *returnSize = 2;
                return newarr;
            }
        }
    }
    *returnSize = 0;
    return 0;
}

本次的内容到这里就结束啦。希望大家阅读完可以有所收获,同时也感谢各位读者三连支持。文章有问题可以在评论区留言,博主一定认真认真修改,以后写出更好的文章。你们的支持就是博主最大的动力。

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

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

相关文章

Docker:Windows container和Linux container

点击"Switch to Windows containers"菜单时&#xff1a; 提示 然后 实际上是运行&#xff1a;com.docker.admin.exe start-service

【广州华锐视点】帆船航行VR模拟实操系统

帆船航行VR模拟实操系统由广州华锐视点开发&#xff0c;是一种创新的教学工具&#xff0c;它利用虚拟现实技术&#xff0c;为学生提供了一个沉浸式的学习环境。通过这种系统&#xff0c;学生可以在虚拟的环境中进行帆船航行的实训&#xff0c;从而更好地理解和掌握帆船航行的技…

【Linux】DNS协议——应用层

目录 DNS协议 DNS背景 域名简介 域名解析过程 使用dig工具分析DNS过程 DNS&#xff08;Domain Name System&#xff0c;域名系统&#xff09;协议&#xff0c;是一个用来将域名转化为IP地址的应用层协议。 DNS背景 TCP/IP中通过IP地址和端口号的方式&#xff0c;来确定网…

Airbnb开源数据可视化工具Visx

一、什么是visx visx 是用于 React 的富有表现力的底层可视化组件集合,结合了 d3 的强大功能来生成可视化,以及 React 更新 DOM 的诸多优势。 在 Airbnb 内部,visx 的目标是统一整个公司的可视化堆栈,在此过程中,创建了 visx 项目,从而有效的将 D3 的强大功能与 React …

TCP/IP 下的计算机网络江湖

〇、引言 在当今数字化时代,计算机网络宛如广袤江湖,涵盖着五大门派:物理层、数据链路层、网络层、传输层和应用层。每个门派独具技能,共同构筑着现代网络的框架。物理层宛如江湖基石,将比特流传输;数据链路层如武林传承,组织数据帧传递;网络层则像导航大师,寻找传送路…

urllib.request.urlretrieve()下载资源到本地

urllib.request.urlretrieve&#xff08;&#xff09;下载资源到本地 代码示例&#xff1a; 本实例已下载Cifair10数据集为例&#xff0c;下载完毕后进行加压缩包 import urllib.request as ur import os import sys import tarfile import glob import pickle import numpy a…

手撕单链表

目录 链表的概念和结构 单链表的实现 申请新结点 打印 尾插 头插 尾删 头删 ​编辑 查找 在pos位置前插入元素 在pos位置后插入元素 删除pos位置的元素 删除pos位置之后的位置的元素​编辑 完整代码 SListNode.h SListNode.c 链表的概念和结构 链表是一种物理存储…

在 SwiftUI 中创建一个环形 Slider

文章目录 前言初始化环形轮廓将进度值和拇指位置绑定添加触摸手势为不同的坐标值设置滑块位置总结 前言 Slider 控件是一种允许用户从一系列值中选择一个值的 UI 控件。在 SwiftUI 中&#xff0c;它通常呈现为直线上的拇指选择器。有时将这种类型的选择器呈现为一个圆圈&#…

git Authentication failed

情况是这样的&#xff0c;之前看代码只是clone了一份&#xff0c;但随着分支越来越多&#xff0c;有时候切换分支时必须先把修改的代码 stash 一下&#xff0c;觉得很麻烦&#xff0c;于是又clone了一份代码。然后pull代码是正常的&#xff0c;当push 代码的时候&#xff0c;去…

软件压力测试对软件产品起到什么作用?

一、软件压力测试是什么? 软件压力测试是一种通过模拟正常使用环境中可能出现的大量用户和大数据量的情况&#xff0c;来评估软件系统在压力下的稳定性和性能表现的测试方法。在软件开发过程中&#xff0c;经常会遇到一些性能瓶颈和稳定性问题&#xff0c;而软件压力测试的作…

uni-app弹窗列表滚动, 弹框下面的内容也跟随滚动解决方案

滑动弹窗里的列表&#xff0c;弹框下面的内容也会跟着滑动&#xff0c;导致弹窗中的列表不能正常滚动 1.弹窗组件代码&#xff0c;需要在最外层的view中加入touchmove.stop.prevent"moveHandle"&#xff0c;且弹窗中需要滚动的列表要使用scroll-view标签包裹起来&…

虚拟拍摄,如何用stable diffusion制作自己的形象照?

最近收到了某活动的嘉宾邀请&#xff0c;我将分享&#xff1a; 主题&#xff1a;生成式人工智能的创新实践 简要描述&#xff1a;从品牌营销、智能体、数字内容创作、下一代社区范式等方面&#xff0c;分享LLM与图像等生成式模型的落地应用与实践经验。 领域/研究方向&#xff…

【JavaScript】使用js实现滑块验证码功能与浏览器打印

滑块验证码 效果图&#xff1a; 实现思路&#xff1a; 根据滑块的最左侧点跟最右侧点&#xff0c; 是否在规定的距离内【页面最左侧为原点】&#xff0c;来判断是否通过 html代码&#xff1a; <!DOCTYPE html> <html><head><title>滑动图片验证码&…

基于docker搭建pytest自动化测试环境(docker+pytest+jenkins+allure)

pytest搭建自动化测试环境&#xff08;dockerpytestjenkinsallure&#xff09; 这里我以ubuntu18为例 如果有docker环境&#xff0c;可以直接拉取我打包好的镜像docker pull ziyigun/jenkins:v1.0 1 搭建Docker 1.1 安装docker # 配置docker安装环境 sudo apt-get install ap…

【C语言】深度剖析数据在内存中的存储

一、数据类型详细介绍 1、数据类型介绍 &#xff08;1&#xff09;基本的内置类型 //内置类型就是C语言自带的类型char //字符数据类型 short //短整型 int //整形 long //长整型 long long //更长的整形 float //单精度浮点数 double …

Baumer工业相机堡盟工业相机如何通过BGAPISDK设置相机的固定帧率(C#)

Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的固定帧率&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机的固定帧率功能的技术背景CameraExplorer如何查看相机固定帧率功能在BGAPI SDK里通过函数设置相机固定帧率 Baumer工业相机通过BGAPI SDK设置相机固定帧…

图解算法--排序算法

目录 1.冒泡排序算法 2.选择排序算法 3.插入排序算法 4.希尔排序算法 5.归并排序算法 6.快速排序算法 1.冒泡排序算法 原理讲解&#xff1a; 从待排序的数组中的第一个元素开始&#xff0c;依次比较当前元素和它相邻的下一个元素的大小。如果当前元素大于相邻元素&#x…

【Elasticsearch】spring-boot-starter-data-elasticsearch的使用以及Elasticsearch集群的连接

更多有关博主写的往期Elasticsearch文章 标题地址【ElasticSearch 集群】Linux安装ElasticSearch集群&#xff08;图文解说详细版&#xff09;https://masiyi.blog.csdn.net/article/details/131109454基于SpringBootElasticSearch 的Java底层框架的实现https://masiyi.blog.c…

【Linux命令详解 | ssh命令】 ssh命令用于远程登录到其他计算机,实现安全的远程管理

文章标题 简介一&#xff0c;参数列表二&#xff0c;使用介绍1. 连接远程服务器2. 使用SSH密钥登录2.1 生成密钥对2.2 将公钥复制到远程服务器 3. 端口转发3.1 本地端口转发3.2 远程端口转发 4. X11转发5. 文件传输与远程命令执行5.1 文件传输5.1.1 从本地向远程传输文件5.1.2 …

时序预测 | MATLAB实现WOA-CNN-GRU鲸鱼算法优化卷积门控循环单元时间序列预测

时序预测 | MATLAB实现WOA-CNN-GRU鲸鱼算法优化卷积门控循环单元时间序列预测 目录 时序预测 | MATLAB实现WOA-CNN-GRU鲸鱼算法优化卷积门控循环单元时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 时序预测 | MATLAB实现WOA-CNN-GRU鲸鱼算法优化卷积…