C语言刷题指南(三)

news2024/11/25 20:40:33

📙作者简介: 清水加冰,目前大二在读,正在学习C/C++、Python、操作系统、数据库等。

📘相关专栏:C语言初阶、C语言进阶、C语言刷题训练营、数据结构刷题训练营、有感兴趣的可以看一看。

欢迎点赞 👍 收藏 ⭐留言 📝 如有错误还望各路大佬指正!

✨每一次努力都是一种收获,每一次坚持都是一种成长✨       

在这里插入图片描述

目录

 前言

1. 选择题

📖题目1:

📖题目2:

📖题目3:

📖题目4:

📖题目5:

2. 编程题

📖题目一:

📖题目二:

总结


 前言

        接下来,我们继续C语言刷题。本期为第三期,在这个阶段,我们将继续挑战自己,探索更深入的C语言知识和编程技巧。这将是一个更加具有挑战性的阶段,但也将带来更多的成长和收益。


1. 选择题

📖题目1:

1、已知函数的原型是:

int fun(char b[10], int *a); 

设定义:

char c[10];
int d;

那么正确的调用语句是( )
A: fun (c,&d);

B: fun(c,d);

C: fun(&c,&d);

D: fun(&c,d);

✨题目解析:

参数a是指针,要接收地址,BD错误。

参数b可以接收的是char*,而&c的类型是char(*)[10],C错误


正确答案:A

📖题目2:

2、请问下列表达式哪些会被编译器禁止【多选】( )

int a = 248, b = 4;
int const *c = 21;
const int *d = &a;
int *const e = &b;
int const * const f = &a;

A: *c = 32                 B: *d = 43                  C: e=&a                    D: f=0x321f      

✨题目解析:

        如果 const 位于 * 的左侧,则 const 就是用来修饰指针所指向的变量,即指针指向为常量;*c和*d不能变(指针指向的内容不能改变,但可以使用其他指针来修改)。    

        如果 const 位于 * 的右侧,则 const 就是修饰指针本身,即指针本身是常量;e和f不能变。

正确答案:ABCD

详细可见文章:const函数和assert函数:提高代码质量的利器

 

📖题目3:

3、以下程序的输出结果为( )
 

#include <stdio.h>
int i;
void prt()
{
    for (i = 5; i < 8; i++)
        printf("%c", '*');
    printf("\t");
} 

int main()
{
    for (i = 5; i <= 8; i++)
        prt();
    return 0;
}

A: ***  B: *** *** *** *** C: ***  *** D: * * *
 

✨题目解析:

这道题目一不小心就会做错。

        全局变量i,在main()中修改为5,第一次在prt()中执行循环输出三次'*',i被修改为8,回到main()中第二次调用prt()时,i<8为假,循环结束没输出,执行一次print("\t"),再次回到主函数后i++变为9,i<=8为假,循环结束;

正确答案:A

📖题目4:

4、下面代码段的输出是( )
 

int main()
{
    int a=3;
    printf("%d\n",(a+=a-=a*a));
    return 0;
}

A: -6            B: 12            C: 0            D: -12
 

✨题目解析:

这道题目考察运算符的结合性(左结合性和右结合性)

        a+=a-=a*a等价于a=a+(a=a-a*a),即先计算a=a-a*a,所以此时a的值为3-3*3=-6,再计算-6+(-6)=-12赋值给a,所以a的值为-12,也就是整个表达式的值

正确答案:D

📖题目5:

5、下列不能实现死循环的是( )

A: while(1){}

B: for(;1;){}

C: do{}while(1);

D: for(;0;){}
 

✨题目解析:

这道题目主要考察对循环的理解。

       只有条件为真时才进行循环,ABC中1为真,D中0为假 。

正确答案:D      

2. 编程题

📖题目一:

 示例:

 题目链接:记负均正icon-default.png?t=N6B9https://www.nowcoder.com/practice/6abde6ffcc354ea1a8333836bd6876b8?tpId=37&&tqId=21320&rp=1&ru=/ta/huawei&qru=/ta/huawei/question-ranking

✨题目解析:

        基本功扎实的同学这道题目绝对没有问题的,统计负数个数,以及正数个数,并且在统计正数个数的过程中求取正数总和,最后计算得出平均数即可。需要注意的是所有数字中0是不统计在内的

#include <stdio.h>

int main() {
    int n;

    while (~scanf("%d", &n))
    {
        float sum = 0;
        int t = 0;
        int count1 = 0, count2 = 0;
        for (int i = 0; i < n; i++)
        {
            scanf("%d", &t);
            if (t < 0)
                count1++;    //统计负数个数
            else if (t > 0)
            {
                sum += t;    //正数求和
                count2++;    //统计大于0的正数个数,这样是因为题目说明0不算在内
            }
        }
        printf("%d %.1lf", count1, (count2 == 0) ? 0 : sum / count2);//最后输出时判断一下正数是否为0
    }

    return 0;
}

📖题目二:

 示例:

 题目链接:旋转数组的最小数字icon-default.png?t=N6B9https://www.nowcoder.com/practice/9f3231a991af4f55b95579b44b7a01ba?tpId=13&tqId=23269&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

✨题目解析:

这道题目有两种解决方法:

        暴力破解:遍历数组找出最小值即可


int minNumberInRotateArray(int* nums, int numsLen ) {
    int min=nums[0];
    for(int i=1;i<numsLen;i++)
    {
        if(min>nums[i])
        {
            min=nums[i];
        }
        
    }
    return min;
}

暴力求解代码相对简单,但时间复杂度过高。
        更优思想:采用二分查找,这个题主要分析三种旋转情况 [1, 2, 3, 4, 5],使用中间值与右端进行比较。通过观察我们可以发现规律:

  • 中间大于右边 [3, 4, 5, 1, 2],这种情况下,最小数一定在右边;则left = middle + 1
  • 中间等于右边 [1, 0, 1, 1, 1], 这个是[0, 1, 1, 1, 1] 旋转过来的,这时候需要缩小范围 right--;,注意不能是left++,因为是非降序数组,所以要缩小右边范围
  • 中间小于右边 [5, 1, 2, 3, 4], 这种情况下,最小数字则在左半边;则right = middle
int minNumberInRotateArray(int* nums, int numsLen ) {
    
    if (numsLen == 0) return 0;//数组长度为0就直接返回0
    int left = 0, right = numsLen - 1, mid;//right为数组最右边的下标
    if (nums[right] > nums[left]) return nums[0];//如果数组第一个数大于最后一个那就没有旋转,第一个数为最小
    while(left < right) {
        mid = (left + right) / 2;
        if (nums[mid] > nums[right]) left=mid+1;//如果中间大于右边,那最小数一定在mid右边
        else if (nums[mid] == nums[right]) right--;//如果相等就排除最右边的一个数据,不可以left++
        else right = mid;//中间小于右边,那最小数就在mid左边
    } 
    return nums[left];//最后right和left相等,此时就是最小值的下标
}


总结

         好的,本期内容到此结束。最后,我要衷心感谢每一位参与刷题的读者,你们的支持和参与是我们前进的动力。希望你们在C语言的学习和编程之路上继续努力,不断追求卓越。祝愿你们在未来的编程之旅中取得更大的成功和成就!

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

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

相关文章

JS-Array数组方法reduce()

reduce方法 // 可以与箭头函数一起使用 array.reduce((total,curVal) > total curVal, initVal) array.reduce(function(total, currentValue, currentIndex, arr), initialValue) 例子&#xff1a; // a:总和/累加项 // c&#xff1a;每一项的值 const allCount compu…

实验三 nfs 服务器环境搭建

nfs 服务器环境搭建 nfs&#xff08;Network File System&#xff09;即网络文件系统&#xff0c;其基于UDP/IP 使用nfs能够在不同计算机之间通过网络进行文件共享&#xff0c;能使使用 者访问网络上其它计算机中的文件就像在访问自己的计算机一样。 【实验目的】 掌握 nfs 环…

RT1052的XBAR

文章目录 XBAR2函数2.1 XBARA_Init2.2XBARA1_Signal_Set XBAR XBAR 是 RT1052 芯片自带的内部外设交错开关矩阵 它可以将 RT1052 内部外设的输出&#xff08;或 IO 口的输入&#xff09;映射到另外一部分内部外设的输入&#xff08;或 IO 口的输出&#xff09;上&#xff0c;…

WordPress用于您的企业网站的优点和缺点

如今&#xff0c;WordPress 被广泛认为是一个可靠、可扩展且安全的平台&#xff0c;能够为商业网站提供支持。然而&#xff0c;许多人质疑 WordPress 是否是适合企业的平台。 这就是我们创建本指南的原因。通过探索 WordPress 的优点和缺点&#xff0c;您可以确定世界上最受欢…

低代码自动化解析:企业所需了解的全面指南

根据2020年以来与低代码技术相关的积极趋势&#xff0c;Gartner预测到2023年低代码开发技术市场将增长20%。此外&#xff0c;他们还预计&#xff0c;到2026年&#xff0c;非正式IT部门的开发人员将占低代码开发工具用户群至少80%的比例&#xff0c;而这一比例在2021年为60%。基…

服务器感染了.360勒索病毒,如何确保数据文件完整恢复?

引言&#xff1a; 随着科技的不断进步&#xff0c;互联网的普及以及数字化生活的发展&#xff0c;网络安全问题也逐渐成为一个全球性的难题。其中&#xff0c;勒索病毒作为一种危害性极高的恶意软件&#xff0c;在近年来频频袭扰用户。本文91数据恢复将重点介绍 360 勒索病毒&a…

C++快速回顾(二)

前言 在Android音视频开发中&#xff0c;网上知识点过于零碎&#xff0c;自学起来难度非常大&#xff0c;不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》&#xff0c;结合我自己的工作学习经历&#xff0c;我准备写一个音视频系列blog。C/C是音视频必…

HDU-7314 2023“钉耙编程”杭电多校赛(4)Data Generation

HDU-7314 2023“钉耙编程”杭电多校赛&#xff08;4&#xff09;Data Generation 题目大意 给定 n n n和 m m m&#xff0c;求下面的算法中 a n s ans ans的期望值模 998244353 998244353 998244353后的结果。 有 T T T组数据。 1 ≤ T ≤ 1 0 5 , 1 ≤ n ≤ 1 0 18 , 0 ≤ m…

一种新型的4H-SiC超结共模场效应晶体管(UMOSFET),具有异质结二极管,以提高反向恢复特性

标题&#xff1a;A novel 4H-SiC super junction UMOSFET with heterojunction diode for enhanced reverse recovery characteristics 摘要 摘要—本文提出并通过数值模拟研究了一种新型的碳化硅&#xff08;SiC&#xff09;超结共模场效应晶体管&#xff08;UMOSFET&#xf…

Python批量爬虫下载文件——把Excel中的超链接快速变成网址

本文的背景是&#xff1a;大学关系很好的老师问我能不能把Excel中1000个超链接网址对应的pdf文档下载下来。虽然可以手动一个一个点击下载&#xff0c;但是这样太费人力和时间了。我想起了之前的爬虫经验&#xff0c;给老师分析了一下可行性&#xff0c;就动手实践了。    没…

企业展示小程序搭建指南

如今&#xff0c;移动互联网的快速发展&#xff0c;为企业展示提供了更多元化的方式。除了传统的宣传手段&#xff0c;企业还可以借助小程序来展示自己的实力和产品。本文将为大家介绍一种简单的DIY小程序的方法&#xff0c;让企业能够快速打造自己的展示平台。 首先&#xff0…

在线SHA384计算哈希(不可逆的加密又称摘要)工具

具体请前往&#xff1a;在线计算Sha384摘要工具

leetcode做题笔记92. 反转链表 II

给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 思路一&#xff1a;头插法 struct ListNode *reverseBetween(struct ListNode *h…

python绘制谷歌地图

谷歌地图 更多好看的图片见pyecharts官网 import pyecharts.options as opts from pyecharts.charts import MapGlobe from pyecharts.faker import POPULATIONdata [x for _, x in POPULATION[1:]] low, high min(data), max(data)c (MapGlobe().add_schema().add(mapty…

系统架构设计专业技能 · 软件工程之需求工程

系列文章目录 系统架构设计高级技能 软件架构概念、架构风格、ABSD、架构复用、DSSA&#xff08;一&#xff09;【系统架构设计师】 系统架构设计高级技能 系统质量属性与架构评估&#xff08;二&#xff09;【系统架构设计师】 系统架构设计高级技能 软件可靠性分析与设计…

sip开发从理论到实践,让你快速入门sip

目录 引言&#xff1a; sip协议是什么&#xff1f; sip的网络结构&#xff08;重点&#xff09; sip的特点 sip使用的url sip协议的应用领域 sip协议基本的消息类型 请求消息 响应消息 sip协议的消息结构&#xff08;这个是重点&#xff09; sip的常见会话流程&#xf…

OpenCV实例(九)基于深度学习的运动目标检测(三)YOLOv3识别物体

基于深度学习的运动目标检测&#xff08;三&#xff09;YOLOv3识别物体 1.基于YOLOv3识别物体2.让不同类别物体的捕捉框颜色不同3.不用Matplotlib实现目标检测 目标检测&#xff0c;粗略地说就是输入图片/视频&#xff0c;经过处理后得到目标的位置信息&#xff08;比如左上角和…

多线程线程池

# 线程池的学习笔记总结图 图1: 图2&#xff1a; # 多线程的三种实现方式&#xff1a; 1.继承Thread类 2.实现Runnable类 3.实现Callable接口 # 线程的常见成员变量 # 线程的生命周期 # 线程的状态 # 线程池 # 自定义线程池 # 自定义线程池的使用情况的图解 一开始定义好的线…

安装Vue_dev_tools

Vue控制台出现Download the Vue Devtools extension for a better development experience: 下载Vue_dev_tools,这里给出网盘链接&#xff0c;有Vue2和Vue3的&#xff0c;dev_tools 以Google浏览器为例 点击设置&#xff08;就是那三个点&#xff09;->扩展程序->管理扩…