C基础寒假练习(3)

一、求数组中的第二大值

#include <stdio.h>
int main() 
{int arr[] = {12, 35, 1, 10, 34, 1};int size = sizeof(arr) / sizeof(arr[0]);if (size < 2) {printf("数组元素不足两个\n");return 0;}int first = -2147483648, second = -2147483648; // 使用INT_MIN的替代值for (int i = 0; i < size; i++) {if (arr[i] > first) {second = first;first = arr[i];}else if (arr[i] > second && arr[i] != first) {second = arr[i];}}if (second == -2147483648) {printf("没有第二大值\n");}else {printf("第二大值是: %d\n", second);}return 0;
}

以下是对代码的详细解释:

  1. 初始化数组和计算大小:

    int arr[] = {12, 35, 1, 10, 34, 1};
    int size = sizeof(arr) / sizeof(arr[0]);
    
  • arr 是一个包含若干整数的数组。
  • size 计算数组的大小,即数组中元素的个数。
  1. 检查数组大小是否足够:

    if (size < 2) 
    {printf("数组元素不足两个\n");return 0;
    }
    
  • 如果数组中的元素少于两个,程序会输出 "数组元素不足两个" 并终止执行。

初始化变量:

int first = -2147483648, second = -2147483648; // 使用INT_MIN的替代值
  • first 和 second 分别用于存储数组中的最大值和第二大值。初始值设为 -2147483648,这是 int 类型的最小值,相当于 INT_MIN。

遍历数组寻找最大值和第二大值:

for (int i = 0; i < size; i++) 
{if (arr[i] > first) {second = first;first = arr[i];}else if (arr[i] > second && arr[i] != first) {second = arr[i];}
}
  • 遍历数组中的每个元素。
  •  如果当前元素大于 first,则更新 second 为 first,并将 first更新为当前元素。
  •  如果当前元素小于 first 但大于 second,并且不等于 first,则更新 second 为当前元素。
  1. 检查并输出结果:

    if (second == -2147483648) 
    {printf("没有第二大值\n");
    }
    else 
    {printf("第二大值是: %d\n", second);
    }
    
  • 如果 second 仍然是初始值 -2147483648,说明数组中没有第二大的值,输出 "没有第二大值"。
  • 否则,输出找到的第二大值。

总结来说,这段代码通过一次遍历数组来找到最大值和第二大值,时间复杂度为 O(n),其中 n 是数组的大小。

二、终端输入带空格的字符串,删除字符中的空格

#include <stdio.h>// 计算字符串长度的函数
int my_strlen(const char* str) 
{int len = 0;while (str[len] != '\0') {len++;}return len;
}int main()
{char str[100];char result[100]; // 用于存储没有空格的结果字符串的数组int i, j = 0;printf("请输入一个字符串: ");fgets(str, sizeof(str), stdin);// 如果存在换行符,则将其移除int len = my_strlen(str);if (len > 0 && str[len - 1] == '\n') {str[len - 1] = '\0';}// 处理字符串以删除空格for (i = 0; i < len; i++){if (str[i] != ' ') {result[j++] = str[i];}}result[j] = '\0'; // 终止结果字符串printf("删除空格后的字符串: %s\n", result);return 0;
}

以下是对代码的详细解释:
1. 计算字符串长度的函数 my_strlen:        
 

int my_strlen(const char* str) 
{int len = 0;while (str[len] != '\0') {len++;}return len;
}

    • 这个函数用于计算字符串的长度。它通过遍历字符串直到遇到空字符 '\0' 来计算长度。
2. 主函数 main:        

int main()
{char str[100];char result[100]; // 用于存储没有空格的结果字符串的数组int i, j = 0;printf("请输入一个字符串: ");fgets(str, sizeof(str), stdin);

    • 定义了两个字符数组 str 和 result,分别用于存储输入的字符串和处理后的字符串。
    • 使用 fgets 从标准输入读取字符串,并存储在 str 中。
3. 移除换行符:        
 

    // 如果存在换行符,则将其移除int len = my_strlen(str);if (len > 0 && str[len - 1] == '\n') {str[len - 1] = '\0';}

    • 调用 my_strlen 计算字符串的长度。
• 如果字符串末尾有换行符(即 '\n'),则将其替换为空字符 '\0',以移除换行符。
4. 删除空格:        
 

    // 处理字符串以删除空格for (i = 0; i < len; i++){if (str[i] != ' ') {result[j++] = str[i];}}result[j] = '\0'; // 终止结果字符串

    • 遍历输入字符串 str,将非空格字符复制到 result 数组中。
    • 使用变量 j 来跟踪 result 数组的当前位置。
    • 最后,在 result 数组的末尾添加空字符 '\0',以终止字符串。
5. 输出结果:        

    printf("删除空格后的字符串: %s\n", result);return 0;
}


   • 返回 0,表示程序正常结束。
总结来说,这段代码实现了一个简单的字符串处理功能,能够读取用户输入的字符串,删除其中的空格,并输出处理后的结果。

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

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

相关文章

【linux三剑客】grep练习题

题目 进入/lianxi目录&#xff0c;复制/etc/passwd到当前目录下&#xff0c;然后对passwd进行操作查找出当前passwd文件中以ftp或者mail开头的行&#xff0c;在屏幕上输出。查找出当前passwd文件中有没有以r、m、f开头的行&#xff0c;在屏幕上输出。查找出当前passwd文件中以…

C++,STL,【目录篇】

文章目录 一、简介二、内容提纲第一部分&#xff1a;STL 概述第二部分&#xff1a;STL 容器第三部分&#xff1a;STL 迭代器第四部分&#xff1a;STL 算法第五部分&#xff1a;STL 函数对象第六部分&#xff1a;STL 高级主题第七部分&#xff1a;STL 实战应用 三、写作风格四、…

【Node.js】Koa2 整合接口文档

部分学习来源&#xff1a;https://blog.csdn.net/qq_38734862/article/details/107715579 依赖 // koa2-swagger-ui UI视图组件 swagger-jsdoc 识别写的 /***/ 转 json npm install koa2-swagger-ui swagger-jsdoc --save配置 config\swaggerConfig.js const Router requir…

Maven的单元测试

1. 单元测试的基本概念 单元测试&#xff08;Unit Testing&#xff09; 是一种软件测试方法&#xff0c;专注于测试程序中的最小可测试单元——通常是单个类或方法。通过单元测试&#xff0c;可以确保每个模块按预期工作&#xff0c;从而提高代码的质量和可靠性。 2.安装和配…

论文阅读(八):结构方程模型用于研究数量遗传学中的因果表型网络

1.论文链接&#xff1a;Structural Equation Models for Studying Causal Phenotype Networks in Quantitative Genetics 摘要&#xff1a; 表型性状可能在它们之间发挥因果作用。例如&#xff0c;农业物种的高产可能会增加某些疾病的易感性&#xff0c;相反&#xff0c;疾病的…

LeetCode | 不同路径

一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&#xff1f; 示例 1…

C++的类Class

文章目录 一、C的struct和C的类的区别二、关于OOP三、举例&#xff1a;一个商品类CGoods四、构造函数和析构函数1、定义一个顺序栈2、用构造和析构代替s.init(5);和s.release();3、在不同内存区域构造对象4、深拷贝和浅拷贝5、构造函数和深拷贝的简单应用6、构造函数的初始化列…

Excel 技巧21 - Excel中整理美化数据实例,Ctrl+T 超级表格(★★★)

本文讲Excel中如何整理美化数据的实例&#xff0c;以及CtrlT 超级表格的常用功能。 目录 1&#xff0c;Excel中整理美化数据 1-1&#xff0c;设置间隔行颜色 1-2&#xff0c;给总销量列设置数据条 1-3&#xff0c;根据总销量设置排序 1-4&#xff0c;加一个销售趋势列 2&…

Leetcode 131 分割回文串(纯DFS)

131. 分割回文串https://leetcode.cn/problems/palindrome-partitioning/https://leetcode.cn/problems/palindrome-partitioning/ 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 示例 1&#xff1a…

电梯系统的UML文档14

对于 HallButtonControl&#xff0c;我们有二个状态: "门厅灯开 " 和 " 门厅灯关"。 从给出的初始信息&#xff0c;初始的状态应该是"门厅灯关"。行为定义&#xff1a; " 当 HallCall[f&#xff0c;d]是真&#xff0c;则指令 HallLight[f&…

关于安卓greendao打包时报错问题修复

背景 项目在使用greendao的时候&#xff0c;debug安装没有问题&#xff0c;一到打包签名就报了。 环境 win10 jdk17 gradle8 项目依赖情况 博主的greendao是一个独立的module项目&#xff0c;项目目前只适配了java&#xff0c;不支持Kotlin。然后被外部集成。greendao版本…

SQL server 数据库使用整理

标题&#xff1a;SQL server 数据库使用整理 1.字符串表名多次查询 2.读取SQL中Json字段中的值&#xff1a;JSON_VALUE&#xff08;最新版本支持&#xff0c;属性名大小写敏感&#xff09; 1.字符串表名多次查询 SELECT ROW_NUMBER() OVER (ORDER BY value ASC) rowid,value…

一文讲解Java中的BIO、NIO、AIO之间的区别

BIO、NIO、AIO是Java中常见的三种IO模型 BIO&#xff1a;采用阻塞式I/O模型&#xff0c;线程在执行I/O操作时被阻塞&#xff0c;无法处理其他任务&#xff0c;适用于连接数比较少的场景&#xff1b;NIO&#xff1a;采用非阻塞 I/O 模型&#xff0c;线程在等待 I/O 时可执行其…

分布式系统架构怎么搭建?

分布式系统架构 互联网企业的业务飞速发展&#xff0c;促使系统架构不断变化。总体来说&#xff0c;系统架构大致经历了单体应用架构—垂直应用架构—分布式架构—SOA架构—微服务架构的演变&#xff0c;很多互联网企业的系统架构已经向服务化网格&#xff08;Service Mesh&am…

Effective C++ 规则50:了解 new 和 delete 的合理替换时机

1、背景 在 C 中&#xff0c;new 和 delete 是动态分配内存的核心操作符。然而&#xff0c;直接使用它们有时会增加程序的复杂性&#xff0c;甚至导致内存泄漏和其他问题。因此&#xff0c;了解何时替换 new 和 delete 并选择更适合的内存管理策略&#xff0c;是编写高效、健壮…

Effective Python:(10)

Effective Python提供90条新颖的Python3编程技巧&#xff0c;可以让我们写程序更加灵活&#xff0c;代码更加整洁而易于维护&#xff0c;这对于商业化系统代码的重要性不言而喻。 前面两条主要介绍切片的实用好玩的用法&#xff0c;这一条里反而建议不用切片&#xff0c;这是什…

高效学习方法分享

高效学习方法分享 引言 在信息高速发展的今天&#xff0c;学习已经成为每个人不可或缺的一部分。你是否曾感到学习的疲惫&#xff0c;信息的爆炸让你无从下手&#xff1f;今天&#xff0c;我们将探讨几种高效的学习方法&#xff0c;帮助你从中找到适合自己的学习之道。关于学…

数据库备份、主从、集群等配置

数据库备份、主从、集群等配置 1 MySQL1.1 docker安装MySQL1.2 主从复制1.2.1 主节点配置1.2.2 从节点配置1.2.3 创建用于主从同步的用户1.2.4 开启主从同步1.2.4 主从同步验证 1.3 主从切换1.3.1 主节点设置只读&#xff08;在192.168.1.151上操作&#xff09;1.3.2 检查主从数…

代码随想录_栈与队列

栈与队列 232.用栈实现队列 232. 用栈实现队列 使用栈实现队列的下列操作&#xff1a; push(x) – 将一个元素放入队列的尾部。 pop() – 从队列首部移除元素。 peek() – 返回队列首部的元素。 empty() – 返回队列是否为空。 思路: 定义两个栈: 入队栈, 出队栈, 控制出入…

AJAX综合案例——图书管理

黑马程序员视频地址&#xff1a; AJAX-Day02-10.案例_图书管理AJAX-Day02-10.案例_图书管理_总结_V1.0是黑马程序员前端AJAX入门到实战全套教程&#xff0c;包含学前端框架必会的&#xff08;ajaxnode.jswebpackgit&#xff09;&#xff0c;一套全覆盖的第25集视频&#xff0c…