C语言刷题小记2
前言
本篇博客还是为大家分享一些C语言的OJ题目,如果你感兴趣,希望大佬一键三连。多多支持。下面进入正文部分。
题目1竞选社长

分析:本题要求我们输入一串字符,并且统计个数的多少,那么我们可以通过getchar函数来获取字符;
#include<stdio.h>
int main()
{int ch = 0;int flag = 0;while (((ch = getchar()) != '0') && ch != EOF){if (ch == 'A'){flag++;}if (ch == 'B'){flag--;}}if (flag > 0){printf("A\n");}else if (flag < 0){printf("B\n");}else{printf("E\n");}return 0;
}
这里大家来看代码,注意while循环的停止条件,根据题目要求,当遇到字符0时程序停止;这里的flag相当于一个标志物,用来反映字符的个数变化,当然大家也可以使用计数器来统计,这里因人而异,使用自己习惯的方法就可以。
题目2 移除元素


分析:拿到这道题,大家可能会有一种思路,就是创建一个新数组,然后进行判断,判断结束后将符合条件的元素再插入到新数组,这种想法其实是正确的,但是很可惜,本题不能用这样的方法,因为题目要求不能使用额外的数组空间,这就意味着我们是不能创建新数组的,所以本题就需要采取其他做法;
那么对于这道题,还有什么其他做法呢?这里就要为大家介绍一个重要的方法——双指针法
双指针也称为快慢指针,顾名思义,我们需要创建两个指针变量,在本题中,我们可以创建src,dst两个变量,我们可以让src先走,然后判断它指向的值与val是否相等,如果相等,src++;如果不相等,那么要先进行赋值,将src指向的值赋给dst指向的值,然后再让两个变量同时向后移动一位,当src超过数组的范围时,这个时候停止判断,这时你会发现dst的值就是删除后的数组的长度,所以说到这里,代码基本也就出来了,大家来看下面的代码。
int removeElement(int* nums, int numsSize, int val)
{int src = 0;int dst = 0;while (src < numsSize){if (nums[src] == val){src++;}else{nums[dst] = nums[src];src++;dst++;}}return dst;
}
大家来看这段代码,这里的逻辑就是我上面所说的,代码整体并不难,重点要理解这种思想。
题目3 最高分数

分析:本题要求我们来求三个数中的最大值,那么我们可以运用三目操作符来解决本题。大家来看下面的代码:
#include<stdio.h>
int main()
{int a = 0;int b = 0;int c = 0;while (~scanf("%d%d%d", &a,&b,&c)){int max = a > b ? a : b;max = max > c ? max : c;printf("%d", max);}return 0;
}
大家可以看到,本题运用三目操作符很容易解决,我们只需进行两两比较就可以得到最大值。这里大家要注意使用while来实现多组输入。
那么问题来了,本题还有没有其他做法?如果题目要求的不止3个数字呢?面对这个问题,我们就无法使用三目操作符进行解决了,这个时候我们就需要使用排序的知识,在我们学过的排序中,追简单的就是冒泡排序,所以本题的另一种解法如下:
int test(int arr[],int a)
{int i = 0;for (i = 0; i < a-1; i++){int j = 0;int flag = 1;for (j = 0; j < a - i - 1; j++){if (arr[j] < arr[j + 1]){flag = 0;int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;}}if (flag == 1)break;}return arr[0];
}
#include<stdio.h>
int main()
{int arr[3] = { 0 };int i = 0;for (i = 0; i < 3; i++){scanf("%d", &arr[i]);}int ret = test(arr, 3);printf("%d", ret);return 0;
}
大家来看,这里我分装了一个函数,里面实现的就是冒泡排序的逻辑,在主函数中,我们创建了数组去存储我们输入的成绩,然后将数据交给函数进行排序,最终我们需要返回的就是最大值;关于冒泡排序,大家可以关注我前面发表的关于指针的文章,里面详细介绍了冒泡排序。
题目4 判断元音还是辅音

分析:本题要求我们来判断输入的字母是元音还是辅音,那么我们需要利用数组先将所给的元音字母存储起来,然后我们在遍历数组进行判断;
#include<stdio.h>
int main()
{int ch = 0;char arr[] = "AaEeIiOoUu";while ((ch = getchar()) != EOF)//这里注意多组输入,运用getchar来输入字母{int i = 0;for (i = 0; i < 10; i++)//遍历数组{if (arr[i] == ch){printf("Vowel\n");break;//判断是元音,直接跳出循环}}if (i == 10)//i=10说明遍历完所有元音字母都没有匹配的,说明输入的是辅音字母{printf("Consonant\n");}getchar();//去除每个字符后的\n}return 0;
}
这里大家注意看上面的代码注释,即可理解本题的解法。
这里还想给大家拓展一下,上面我们用getchar来处理了\n,那么下面还有另一种方法来处理,大家来看:
区别就在于循环条件那里,我们在%c前面加上空格,会消除掉前面所有的空白字符,并读取下一个字符,所以这里我们可以用这种方式来代替getchar。
#include<stdio.h>
int main()
{char ch = 0;char arr[] = "AaEeIiOoUu";while (scanf(" %c",&ch) != EOF)//这里注意多组输入,运用getchar来输入字母{int i = 0;for (i = 0; i < 10; i++)//遍历数组{if (arr[i] == ch){printf("Vowel\n");break;//判断是元音,直接跳出循环}}if (i == 10)//i=10说明遍历完所有元音字母都没有匹配的,说明输入的是辅音字母{printf("Consonant\n");}}return 0;
}
题目5 包含9的数字

分析:本题要求我们找出1~2019中含有9的数字,那么我们要先产生1~2029之间的数字,然后进行判断;
#include<stdio.h>
int main()
{int i = 0;int count = 0;for (i = 1; i <= 2019; i++){int m = i;while (m > 0){if (m % 10 == 9){count++;break;}else{m /= 10;}}}printf("%d", count);return 0;
}
这里大家可以看到,我们使用for循环产生了1~2019之间的数字,下面我们只需要判断最后一位是否为9即可,如果最后一位是9,那么计数器+1;反之,我们将最后一位去除掉,将其后一位作为最后一位,再次进行判断。
题目6 有序序列合并

分析:本题我们需要将两个数组进行合并,我们的方法是每次让i下标和j下标对应值进行比较,谁小就打印谁,同时i下标往后走。
#include <stdio.h>int main()
{int n = 0;int m = 0;int arr1[1000] = {0};int arr2[1000] = {0};//输入scanf("%d %d", &n, &m);int i = 0;for(i=0; i<n; i++){scanf("%d", &arr1[i]);}for(i=0; i<m; i++){scanf("%d", &arr2[i]);}//处理int j = 0;i = 0;while(i<n && j<m){if(arr1[i] < arr2[j]){printf("%d ", arr1[i]);i++;}else{printf("%d ", arr2[j]); j++;}}if(i == n){for(; j<m; j++){printf("%d ", arr2[j]);}}else{for(; i<n; i++){printf("%d ", arr1[i]);}}return 0;
}
题目7 单身狗1

分析:本题要求我们找出不成对出现的数字,那么这里有一个奇妙的解法,就是运用操作符去进行实现;我们知道一个数与0进行异或运算得到的是自己,而自己与自己进行异或运算得到的是0;所以本题我们只需要将数组中的所有数组挨个进行异或就可以找出那个“单身狗”。
#include<stdio.h>
int main()
{int i = 0;int sum = 0;int arr[] = { 1,2,3,4,5,1,2,3,4 };int sz = sizeof(arr) / sizeof(arr[0]);for (i = 0; i < sz; i++){sum ^= arr[i];}printf("%d", sum);return 0;
}
相关文章:
C语言刷题小记2
前言 本篇博客还是为大家分享一些C语言的OJ题目,如果你感兴趣,希望大佬一键三连。多多支持。下面进入正文部分。 题目1竞选社长 分析:本题要求我们输入一串字符,并且统计个数的多少,那么我们可以通过getchar函数来获…...
JavaScript图片轮播
代码在文章最后面(含图片URL) 实现功能 按向左按钮图片显示上一张按向右按钮图片显示下一张每隔2000毫秒显示下一张图底部三个圆点显示当前的图片的编号 实现流程 初始化图片数组 创建一个包含图片URL的数组,轮播时会通过这个数组来切换图…...
MSSQL注入前置知识
简述 Microsoft SQL server也叫SQL server / MSSQL,由微软推出的关系型数据库,默认端口1433 常见搭配C# / .net IISmssql mssql的数据库文件 数据文件(.mdf):主要的数据文件,包含数据表中的数据和对象信息…...
idea一键为实体类赋值
file -> settings -> plugins -> marketplace 把这个插件装上 找个实体,选中,altenter进入edit界面 我是选择只保留右边这种生成方法,然后选择ok 返回到那个实体,选择,altenter generate生成...
秋招突击——7/24——知识补充——JVM类加载机制
文章目录 引言类加载机制知识点复习类的生命周期1、加载2、连接——验证3、连接——准备4、连接——解析5、初始化 类加载器和类加载机制类加载器类加载机制——双亲委派模型 面试题整理1、类加载是什么2、类加载的过程是什么3、有哪些类加载器?4、双亲委派模型是什…...
如何在 Microsoft SQL Server 中增加字段-完整指南
在使用 Microsoft SQL Server (MSSQL) 进行数据库管理时,添加新字段(列)是一项常见的任务。无论你是需要存储额外的信息,还是调整数据模型以适应新的业务需求,本指南都将帮助你轻松完成这项操作。 目录 1. 使用 T-SQL 添加字段2. 使用 SQL Server Management Studio (SSMS) 添加…...
快手电商Android一面凉经(2024)
快手电商Android一面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《快手电商Android一面凉经(2024)》。 面试职位: Android工程师 技术一面 面试形式…...
随机点名器
练习1 package lx;import java.io.*; import java.util.ArrayList; import java.util.Collections; import java.util.Random;/*需求:需求:有一个文件里面存储了班级同学的信息,每一个信息占一行。格式为:张三-男-23要求通过程序…...
添加动态云层
<template> <div class"topbox"> xx卫星管理 </div> <div class"selectbox"> <div class"title"> 卫星列表 </div> <el-table :data"tableData" style"width: 100%;height:230px;" …...
Spring Boot组成的分布式系统中实现日志跟踪
Spring Boot组成的分布式系统中实现日志跟踪 首发2024-07-25 08:54潘多编程 在分布式系统中,日志跟踪是一项非常重要的功能,它帮助开发者了解请求在整个系统中的流转过程,这对于调试、监控和故障排查至关重要。Spring Boot应用通常作为微服…...
GPT-4o Mini 模型的性能与成本优势全解析
GPT-4o Mini 模型的性能与成本优势全解析 📈 🌟 GPT-4o Mini 模型的性能与成本优势全解析 📈摘要引言正文内容GPT-4o Mini 模型简介 🚀性能测试与对比 📊应用场景 🌐自然语言处理对话系统内容生成 ✍️ &am…...
web前端 - HTML 基础知识大揭秘
HTML 大揭秘 什么是 HTML HTML(Hyper Text Markup Language),中文译为超文本标记语言。其中,我们需要注意两个关键词。一个是 超文本,一个是 标记。所谓超文本,就是将不同空间的文字信息通过超链接的方式…...
HTML meta
<meta>标签用于提供html文档的元信息(metadata)。这些信息不会显示在页面上,但会被浏览器或搜索引擎用来识别页面的编码方式、关键字、描述、作者信息、刷新时间等。 基本语法 <meta name"属性名" content"属性值&q…...
【学习笔记】子集DP
背景 有一类问题和子集有关。 给你一个集合 S S S,令 T T T 为 S S S 的超集,也就是 S S S 所有子集的集合,求 T T T 中所有元素的和。 暴力1 先预处理子集的元素和 A i A_i Ai,再枚举子集。 for(int s0; s<(1<…...
苦学Opencv的第十四天:人脸检测和人脸识别
Python OpenCV入门到精通学习日记:人脸检测和人脸识别 前言 经过了十三天的不懈努力,我们终于也是来到了人脸检测和人脸识别啦!相信大家也很激动吧。接下来我们开始吧! 人脸识别是基于人的脸部特征信息进行身份识别的一种生物识…...
PyTorch学习(1)
PyTorch学习(1) CIFAR-10数据集-图像分类 数据集来源是官方提供的: torchvision.datasets.CIFAR10()共有十类物品,需要用CNN实现图像分类问题。 代码如下:(CIFAR_10_Classifier_Self_1.py) import torch import t…...
三思而后行:计算机行业的决策智慧
在计算机行业,"三思而后行"这一原则显得尤为重要。在这个快速发展、技术不断更新换代的领域,每一个决策都可能对项目的成功与否产生深远的影响。以下是一篇关于在计算机行业中三思重要性的文章。 三思而后行:计算机行业的决策智慧 …...
Linux--Socket编程UDP
前文:Socket套接字编程 UDP协议特点 无连接:UDP在发送数据之前不需要建立连接,减少了开销和发送数据之前的时延。尽最大努力交付:UDP不保证可靠交付,主机不需要维持复杂的连接状态表。面向报文:UDP对应用层…...
《javaEE篇》--单例模式详解
目录 单例模式 饿汉模式 懒汉模式 懒汉模式(优化) 指令重排序 总结 单例模式 单例模式属于一种设计模式,设计模式就好比是一种固定代码套路类似于棋谱,是由前人总结并且记录下来我们可以直接使用的代码设计思路。 单例模式就是,在有…...
Java核心 - Lambda表达式详解与应用示例
作者:逍遥Sean 简介:一个主修Java的Web网站\游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有疑问和建议,请私信或评论留言! 前言 Lambda表达式是…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
