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

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

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

🔥博客主页:小王又困了

📚系列专栏:每日一练

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

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


目录

一、选择题

📝1.第一题 

📝2.第二题

📝3.第三题

📝4.第四题

二、编程题

📝1.第一题 

📝2.第二题


🗒️前言:

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

一、选择题

📝1.第一题 

若有以下程序,则运行后的输出结果是( )

#include<stdio.h>
#define N 2
#define M N + 1
#define NUM (M + 1) * M / 2
int main()
{
    printf("%d\n", NUM);
    return 0;
}

 💡解题思路:

本题考查的是宏定义,我们只要在进行操作之前将对应的代码换成对应的宏。我们要打印NUM,只需要将NUM换成(M + 1) * M / 2,M也有宏定义,继续转换,转换成(N+1+1)*N+1/2,最后将表达式中的N也进行替换,就可以计算出结果,(2+1+1)*2+1/2的结果为8.5,但我们打印的是整型数据,所以结果是8。我们在替换时一步一步去换,不要急于求成想一步到位,最重要的是在替换过程中我们不要加任何符号,不要根据自己的主观臆断添加括号。

📝2.第二题

 下面3段程序代码的效果一样吗( )

int b;
(1)const int *a = &b;
(2)int const *a = &b;
(3)int *const a = &b;

💡解题思路:

本题就是考察我们对 const 修饰指针变量的理解,const 在不同的位置,表达的意思就不相同。

  • const放在*的左边,const 修饰的是a指针解引用之后的结果,表示a指向的内容不能修改。
  • const放在*的右边,const 修饰的是指针变量a本身,表示a的指向不能修改。

(1)和(2)的const都在*的左边,所以它们效果一样。 

📝3.第三题

如下函数的 f(1) 的值为( )

int f(int n)
{
    static int i = 1;
    if(n >= 5)
        return n;
    n = n + i;
    i++;
    return f(n);
}

💡解题思路:

本题主要考察的就是 static 修饰的静态变量,静态变量的特点:

  • 静态变量不是存放在栈区,而是存放在静态区,所以它的生命周期会延长,是整个程序运行期间。
  • 静态变量只初始化一次,第二次在遇到该变量时,就不会重新定义。

进入函数 n=1,首先把静态变量 i 初始化为1,n<5,条件不成立,不执行 if 语句,n=n+i,则n=2,i++,则i=2,返回f(2)继续执行,结果为n=4,i=3,再次执行结果为n=7,i=4,此时7>5,返回n,结果为7。

📝4.第四题

如下函数是求两个int数字最大公约数的,指出其中存在的问题()

int gcd(char x,char y)
{
    int min = x < y ? x : y;
    for (min = 0; min > 0; min--)
    {
         if (x % min = 0 && y % min = 0)
         {
            return min;
         }
    }
}

💡解题思路:

问题一:形参的类型不对,我们要求的是 int 型的最大公约数,而形参是用 char 类型接收的,这样数据会截断,会使程序出现问题。

问题二:min 的初始化不正确,当 min 初始化为0,min>0为假,循环一次也不会执行。正确的值应该是上面条件操作符计算得到的结果。

问题三:对赋值和等于的混淆,= 在数学中表达的意思是等于,而在我们编程学习中 = 是赋值,而== 才是等于的意思。当我们记不清时,将数字写在左边,表达式写在右边,例如:0==x % min,这样在写错时编译器会报错。

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

二、编程题

📝1.第一题 

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

💡解题思路:

我们先通过一次遍历,找到数组中最大的数,并且记录下最大数的下标;然后再进行一次循环,通过 max<nums[i]*2  判断,如果数组中其他数的二倍大于最大的数,就返回-1;如果最大数都大于其他数的二倍,就返回最大数的下标,这里要注意不能与自身比较,所以要用 i!=index 去掉最大数。

int dominantIndex(int* nums, int numsSize)
{
    int max=0;
    int index=0;
    for(int i=0;i<numsSize;i++)
    {
        if(nums[i]>max)
        {
           max=nums[i];
           index=i;
        }
    }
    for(int i=0;i<numsSize;i++)
    {
        if(max<nums[i]*2&&i!=index)
        {
            return -1;
        }
    }
    return index;
}

📝2.第二题

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

 💡解题思路:

这道题考察我们对异或操作符的理解,异或:对应的二进制位相同为0, 不同则为1。

  • 两个相同的数异或,得到的结果为0。
  • 0与一个数异或,结果仍为这个数。

基于这两个特点,这道题对数组中的所有数据进行逐一异或就可以解决得到奇数次的数字,因为偶数次的数字都被异或成为0了,最后单独保留了奇数次的数字。

#include <stdio.h>
int main()
{
    int n;
    while(scanf("%d", &n)!=EOF)
    {
        int num = 0, tmp = 0;
        for (int i = 0; i < n; i++) 
        {
            scanf("%d", &tmp);
            num ^= tmp;
        }
        printf("%d\n", num);
    } 
    return 0;
}

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

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

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

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

相关文章

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

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

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

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

    2024年02月11日
    浏览(35)
  • 每日后端面试5题 第七天

    内连接只查询出两表的交集; 外连接会查询出某表的全部与两表的交集。 1.反向代理 前端把请求发送给nginx,再由nginx将请求发送给后端服务器。 2.负载均衡 提高访问速度;进行负载均衡;保证后端服务安全 1.数据库类型不同 (1)MySQL是关系型数据库; (2)Redis是缓存数据

    2024年02月13日
    浏览(31)
  • 每日打卡day8——差分练习

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

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

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

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

    1、用于过滤路由信息以及为通过过滤的路由信息设置路由属性的是哪一个 A. AS-PATH-FILTER B. IP-PREFIX C. ROUTE-POLICY D. POLICY-BASED-ROUTE 2、AGGREATE命令的DETAIL-SUPPRESSED选项的作用是什么 A. 抑制生成的聚合路由下发IP路由表 B. 抑制被聚合的明细路由下发IP路由表 C. 仅通告聚合路由给其他

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

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

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

    1、下面关于免费ARP报文的作用描述错误的是()。 A. 在VRRP备份组中用来通告主备发生变换 B. 用于通告一个新的现AC地址:发送方更换网卡,AC地址发生改变,为了能够在AP表项老化前通告所有主机,发送方可以发送一个免费ARP C. 用于检查重复的IP地址:正常情况下不会收到

    2024年02月11日
    浏览(43)
  • 每日一练 | 华为认证真题练习Day69

    1、STP协议在以下哪个状态下进行端口角色的选举? A. Blocking B. Disabled C. Learning D. Listening 2、RSTP BPDU报文中的Flag字段的总长度为多少bit? A. 6 B. 4 C. 8 D. 2 3、以下哪项不是RSTP可以提高收敛速度的原因? A. 边缘端口的引入 B. 取消了Forward Delay C. 根端口的快速切换 D. P/A机制 4、以

    2024年02月11日
    浏览(37)
  • 每日一练 | 华为认证真题练习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日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包