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

news2024/11/24 3:20:04

🔥博客主页:小王又困了

📚系列专栏:每日一练

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

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

 


目录

一、选择题

📝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;
}

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

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

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

相关文章

为助力拔尖人才培养,猿辅导投入亿元设立“青少年科学探索基金”

“少年智则国智&#xff0c;少年富则国富&#xff0c;少年强则国强。”国家发展离不开人才的培养。伴随我国进入高质量发展轨道&#xff0c;科学、人才、教育三位一体融合发展已经刻不容缓。我国基础学科人才紧缺成了不争的事实。目前&#xff0c;中国的GDP目前已是世界第二位&…

【Linux】再谈虚拟地址空间

前言 虚拟地址空间对于理解操作系统的许多概念是很有帮助的&#xff0c;这里我们对虚拟地址空间进行更加深入理解&#xff0c;如果以前没有看过对于虚拟地址空间的初级介绍的话&#xff0c;可以先看这里《虚拟地址空间》 再谈虚拟地址空间 一、页表难道真的只是简单一 一存储映…

Arduino 入门学习笔记11 读写内置EEPROM

Arduino 入门学习笔记11 使用I2C读写EEPROM 一、Arduino 内置EEPROM介绍二、EEPROM 操作1. 包含EEPROM库&#xff1a;2. 写入数据到EEPROM&#xff1a;3. 从EEPROM读取数据4. 完整示例&#xff1a; 一、Arduino 内置EEPROM介绍 Arduino的内置EEPROM&#xff08;Electrically E…

iptables四表五链

iptables四表五链 iptables传输数据包的过程 当一个数据包进入网卡时&#xff0c;它首先进入PREROUTING链&#xff0c;内核根据数据包目的IP判断是否是发往本机的。如果数据包就是进入本机的&#xff0c;它就会沿着图向下移动到INPUT链。数据包到了INPUT链后&#xff0c;任何进…

Identity Server 4 传参数到登录界面

Identity Server 4 传参数到登录界面 登录界面取得参数

【C# 基础精讲】文件流和文本处理

文件流是C#中用于进行文件读写操作的重要概念&#xff0c;它提供了一种逐字节或逐块访问文件内容的机制。文本处理则是指在读取和写入文件时&#xff0c;对文本数据进行解析、操作和转换的过程。在本文中&#xff0c;我们将深入探讨文件流的概念、种类以及使用方法&#xff0c;…

0基础学Python之从第一个Python程序开始聊起

一、python的安装 由于python语言有着大量优秀的函数包&#xff0c;所以为了下载的便利性&#xff0c;我是在外网的笔记本上部署了python的学习环境。 Python Release Python 3.11.4 | Python.org 复制链接&#xff0c;迅雷下载&#xff0c;速度喜人。 下载后一路click&…

人类反馈强化学习RLHF;微软应用商店推出AI摘要功能

&#x1f989; AI新闻 &#x1f680; 微软应用商店推出AI摘要功能&#xff0c;快速总结用户对App的评价 摘要&#xff1a;微软应用商店正式推出了AI摘要功能&#xff0c;该功能能够将数千条在线评论总结成一段精练的文字&#xff0c;为用户选择和下载新应用和游戏提供参考。该…

FPGA_学习_16_IP核_ROM

在寻找APD最合适的偏压的过程中&#xff0c;一般会用到厂商提供一条曲线&#xff0c;横坐标是温度的变化&#xff0c;纵坐标表示击穿偏压的变化&#xff0c;但每个产品真正的击穿偏压是有差异的。 为了能够快速的找到当前温度下真实的击穿偏压&#xff0c;我们可以这样做&#…

C++之std::unordered_map<int, int, string>应用实例(一百八十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

小程序化,一种创新的HybirdApp开发模式

跨端框架的出现&#xff0c;弥补了传统移动应用开发中跨平台难题。开发者可以使用一套代码构建适用于多个平台的应用&#xff0c;既能在不同设备上保持一致的用户体验&#xff0c;又能更高效地进行开发和维护。这种开发模式不仅提升了开发效率&#xff0c;还为用户提供了更加一…

【K8S系列】Weave Net 故障排除的常见问题和解决方案

写在前面 当使用 Weave Net 进行容器网络配置时&#xff0c;可能会遇到一些常见的故障情况。以下是一些常见问题及其解决方案&#xff1a; 问题列表 1 节点无法加入 Weave Net 网络 解决方案 检查节点之间的网络连通性&#xff0c;确保可以通过 IP 地址相互访问。 检查节点的…

nodejs安装与卸载(高版本降为低版本)

初到公司发现电脑上面已经安装nodejs&#xff0c;但是版本是最新版本。但是问题来了&#xff0c;好像是不太支持vue3&#xff0c;所以查了一些资料&#xff0c;具体的也不是很清楚&#xff0c;反正就是nodejs的版本不能太高最好保持在16以下。好吧&#xff0c;那就重新卸载再来…

苹果手机怎么连接电脑?4招轻松连接!

“新买了一部苹果手机&#xff0c;想连接电脑传一些文件&#xff0c;但是不知道该如何操作。有没有朋友可以帮帮我呀&#xff1f;” 苹果手机作为一款智能手机&#xff0c;在市场上的应用越来越常见。苹果手机与电脑进行连接可以更好的进行文件的传输、备份以及进行其他操作。 …

FreeModbus——源码获取(一)

网站 About - Embedded Experts (embedded-experts.at) 下载v1.6版本&#xff0c;刚开始我还没找到&#xff0c;后面对照别人的截图才找到&#xff08;哈哈&#xff0c;感觉自己好二&#xff09;&#xff0c;把鼠标移过去&#xff0c;这个地方是才从黑变成这个绿色

基于X86六轮差速移动机器人运动控制器设计与实现(二)规划控制算法

带输入约束的 MPC 路径跟踪控制 MPC 算法是一种基于控制对象模型的控制方法&#xff0c;其优势在于在控制中考虑了 系统的多种物理约束&#xff0c;同时基于模型与当前机器人的反馈信息预估出未来机器人 位姿信息的处理方法可以解决控制迟滞的问题。 4.1 MPC 路径跟踪控…

压多少抗多少,滴滴全链路压测仿真度量体系建设

滴滴在重大节假日、活动前为保障线上系统稳定&#xff0c;需要通过全链路压测做多轮风险排查以及容量验收&#xff0c;我们经常听到这样的声音"你们全链路压测和线上业务场景有多大差异"、"是不是压测达到目标线上真的能抗这么大量"、"我的某某个模块…

iPhone15即将发布,苹果赔偿5亿美元,但再次不包括中国用户

苹果的iPhone15即将发布&#xff0c;就在此时苹果的“电池门”再次被翻出&#xff0c;这次美国的法院判决苹果给每名用户赔偿65美元&#xff0c;合计大约5亿美元&#xff0c;只是独独不包括中国用户&#xff0c;这就有点歧视中国用户了吧&#xff1f; 事件的起因在于2017年很多…

c++11 标准模板(STL)(std::basic_stringbuf)(六)

定义于头文件 <sstream> template< class CharT, class Traits std::char_traits<CharT>, class Allocator std::allocator<CharT> > class basic_stringbuf : public std::basic_streambuf<CharT, Traits> std::basic_stringbu…

C++新经典02--编译预处理

编译预处理 编译阶段会做如下几件事&#xff1a; (1)预处理。 (2)编译。包括词法分析、语法分析、目标代码生成、优化等。 (3)汇编。产生.o(.obj)目标文件。 C语言一般提供三种预处理功能&#xff1a;宏定义、 文件包含、条件编译。这三种预处理功能也是通过在源程序文件写入…