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

这篇具有很好参考价值的文章主要介绍了拒绝摆烂!C语言练习打卡第三天。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

拒绝摆烂!C语言练习打卡第三天,每日一练,c语言,算法,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.第一题 

拒绝摆烂!C语言练习打卡第三天,每日一练,c语言,算法,c++,数据结构,开发语言,链表

💡解题思路:

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

拒绝摆烂!C语言练习打卡第三天,每日一练,c语言,算法,c++,数据结构,开发语言,链表

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

拒绝摆烂!C语言练习打卡第三天,每日一练,c语言,算法,c++,数据结构,开发语言,链表

📝2.第二题 

拒绝摆烂!C语言练习打卡第三天,每日一练,c语言,算法,c++,数据结构,开发语言,链表

 💡解题思路:

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

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

拒绝摆烂!C语言练习打卡第三天,每日一练,c语言,算法,c++,数据结构,开发语言,链表

 拒绝摆烂!C语言练习打卡第三天,每日一练,c语言,算法,c++,数据结构,开发语言,链表

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

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

到了这里,关于拒绝摆烂!C语言练习打卡第三天的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

    🔥 博客主页: 小王又困了 📚 系列专栏: 每日一练 🌟 人之为学,不日近则日退  ❤️ 感谢大家点赞👍收藏⭐评论✍️ 目录 一、选择题 📝1.第一题  📝2.第二题 📝3.第三题 📝4.第四题 二、编程题 📝1.第一题  📝2.第二题 🗒️前言: 在前面我们学习完C语言的所以知

    2024年02月11日
    浏览(27)
  • 拒绝摆烂!C语言练习打卡第七天

    🔥 博客主页: 小王又困了 📚 系列专栏: 每日一练 🌟 人之为学,不日近则日退  ❤️ 感谢大家点赞👍收藏⭐评论✍️ 目录 一、选择题 📝1.第一题  📝2.第二题 📝3.第三题 📝4.第四题 二、编程题 📝1.第一题  📝2.第二题 🗒️前言: 在前面我们学习完C语言的所以知

    2024年02月10日
    浏览(30)
  • Day 3 打卡第三天

    给你一个链表的头节点  head  和一个整数  val  ,请你删除链表中所有满足  Node.val == val  的节点,并返回  新的头节点  。  示例 1: 示例 2: 示例 3: 提示: 列表中的节点数目在范围  [0, 104]  内 1 = Node.val = 50 0 = val = 50 目标值在链表开头需特判,搞清楚逻辑关系 有点多

    2024年02月07日
    浏览(27)
  • 每日后端面试5题 第三天

    看图: 图片来自 线程状态转换图及其5种状态切换_小曹的blog的博客-CSDN博客 图片来自 总算把线程六种状态的转换说清楚了! - 知乎 线程一共有4种状态,分别是: 1.创建/新生状态new:被new出来了,还没start()。 2.就绪状态runable:start()了,待会去抢cpu。   抢到了cpu就是传说中

    2024年02月13日
    浏览(24)
  • 英语练习第三天-2023.03.26

    目录 学习目标: 学习内容: 学习时间: 学习产出: 日常对话 hello baby good morning let\\\'s to meet you Hello! Good morning to you too. I\\\'m not a human baby, but I\\\'m an AI language model called ChatGPT. Nice to meet you! How may I assist you today? Yes,my English level is be One and can you give me A five comment,web vegetable?To。

    2023年04月08日
    浏览(28)
  • 每日打卡day8——差分练习

    输入一个长度为 n 的整数序列。 接下来输入 m 个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r] 之间的每个数加上 c。 请你输出进行完所有操作后的序列。 输入格式 第一行包含两个整数 n 和 m。 第二行包含 n 个整数,表示整数序列。 接下来 m 行,每行包含

    2024年02月17日
    浏览(32)
  • 每日一练 | 华为认证真题练习Day54

    1、现有一台交换机通过一个端口和对端设备的指定端口直连,但是该端口不转发任何报文,却可以通过接收BPDU来监听网络变化,那么该端口的角色应该是()。 A. Root端口 B. Designated端口 C. Alternate端口 D. Disable端口 2、交换机MAC地址表如下,下列说法正确的有? A. 交换机收到

    2024年02月08日
    浏览(65)
  • 每日一练 | 华为认证真题练习Day48

    1、运行OSPF协议的路由器所有接口必须属于同一个区域。 A. 对 B. 错 2、在华为设备中,OSPF选举Router ID的方法可以是下列哪种?(多选) A. 通过手工定义一个任意的合法Router ID B. 如果未配置Loopback接口,则在其他接口的IP地址中选取最大的IP地址作为Router ID C. 华为交换机可能使

    2024年02月07日
    浏览(25)
  • 每日一练 | 华为认证真题练习Day51

    1、如下图所示,IPSec传输模式中AH的头部应该插入到以下哪个位置? A. 1 B. 2 C. 3 D. 4 2、以下哪种远程登录方式最安全? A. Telnet B. Stelnet v100 C. Stelnet v2 D. Stelnet v1 3、以下业务模块的ACL默认动作为permit的是? A. HTTP B. SNMP C. Telnet D. 流策略 4、IPv6地址2019::8:AB对应的Solicited-node组播

    2024年02月07日
    浏览(27)
  • 每日一练 | 华为认证真题练习Day64

    1、如下图所示的网络,所有路由器运行0SPF协议,链路上方为Cost值的大小,则RA路由表中到达网络10.0.0.0/8的Cost值是多少? A. 70 B. 20 C. 60 D. 100 2、如下图所示的网络,主机A没有配置网关,主机B存在网关的ARP缓存,下列说法正确的有?(多选)  A. 在路由器的G0/0/1端口开启ARP代

    2024年02月11日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包