2024年最新C语言暑假刷题冲刺篇——day6,2024年最新贼好用的C C++学习路线集合

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

A: 由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B: do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C: 在do-while循环体中,不一定要有能使while后面表达式的值变为零(“假”)的操作
D: do-while循环中,根据情况可以省略while

【答案】C

【解析】

do-while循环的语法:(循环至少执行一次)

do
{

循环语句;
}while(表达式);

do-while循环中的循环体通常都是复合语句代码块,A错误,while(表达式)后面要写分号,B错误,while不能省,D错误

4.设函数 fun 和实参数组的说明是如下形式,则对函数的调用语句中,正确的是( )

void fun(char ch,float x[]);
float a[10];

A: fun("asd" , a[]);B: fun('x' , A);

C: fun('68' , 2.8);D: fun(32 , a);

【答案】D

【解析】

分析此函数:

函数的第一个参数为:字符类型

函数的第二个参数为:float x[ ]来接收参数,可以转换为float *(x),所以这里需要我们传浮点型数组或者float *指针(地址)即可

A选项数组传参只需要写数组名就行,a[]时错误的

B选项第二个参数写成了大写,错了。

C选项第二个参数是浮点数,但是fun函数的第二参数是数组不匹配,fun函数参数x需要传一个数组或者float *指针``只有D选项的形式是正确的。

5.在c语言中,一个函数不写返回值类型,默认的返回类型是 ( )

A、int     B、char   C、void    D、都不是

【答案】A

【解析】

一个函数不写返回值类型,默认的返回类型是int,但不提倡这么做,故选A。

二、编程题

1.OJ链接 【leetcode 题号:747. 至少是其他数字两倍的最大数】【难度:简单】

给你一个整数数组 nums ,其中总是存在 唯一的 一个最大整数 。请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是,则返回 最大元素的下标 ,否则返回 -1 。

示例:
输入:nums = [3,6,1,0]
输出:1
解释:6 是最大的整数,对于数组中的其他整数,6 大于数组中其他元素的两倍。6 的下标是 1 ,所以返回 1 。
输入:nums = [1,2,3,4]
输出:-1
解释:4 没有超过 3 的两倍大,所以返回 -1 。
输入:nums = [1]
输出:0
解释:因为不存在其他数字,所以认为现有数字 1 至少是其他数字的两倍。

提示:

1 <= nums.length <= 50

0 <= nums[i] <= 100

nums 中的最大元素是唯一的

思路与算法:

遍历数组分别找到数组的最大值 m1和次大值m2。如果m1≥m2×2 成立,则最大值至少是数组其余数字的两倍,此时返回最大值的下标,否则返回 -1。为了返回最大值的下标,我们需要在计算最大值的同时记录最大值的下标。

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

2.OJ链接【 leetcode 题号:349. 两个数组的交集】【难度:简单】

给定两个数组,编写一个函数来计算它们的交集。

示例:
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]

思路:

暴力破解即可,将 nums1 数组中的每一个数字,判断是否存在于 nums2 数组中,通过这种方式找出交集数据,找出之后判断这个数组是否已经在返回数组中存在,不存在则添加到返回数组中即可。

int* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize)
{
    static int arr[1000];
    *returnSize = 0;
    int i, j;
    for (i = 0; i < nums1Size; i++) 
    {
        for (j = 0; j < nums2Size; j++) 
        {
            if (nums2[j] == nums1[i]) //判断nums1[i] 是否在nums2数组中
                break;
        } 
        if (j == nums2Size) // nums1中i位置的数据在nums2数组中不存在,则非交集数据


![img](https://img-blog.csdnimg.cn/img_convert/dbd4b89ee8f6025ab82dd4ce41e43754.png)
![img](https://img-blog.csdnimg.cn/img_convert/88de7f433208415d87a322ce7b7330e2.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618668825)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

715657306394)]

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618668825)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值