当前位置: 首页 > news >正文

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题目&#xff0c;如果你感兴趣&#xff0c;希望大佬一键三连。多多支持。下面进入正文部分。 题目1竞选社长 分析&#xff1a;本题要求我们输入一串字符&#xff0c;并且统计个数的多少&#xff0c;那么我们可以通过getchar函数来获…...

JavaScript图片轮播

代码在文章最后面&#xff08;含图片URL&#xff09; 实现功能 按向左按钮图片显示上一张按向右按钮图片显示下一张每隔2000毫秒显示下一张图底部三个圆点显示当前的图片的编号 实现流程 初始化图片数组 创建一个包含图片URL的数组&#xff0c;轮播时会通过这个数组来切换图…...

MSSQL注入前置知识

简述 Microsoft SQL server也叫SQL server / MSSQL&#xff0c;由微软推出的关系型数据库&#xff0c;默认端口1433 常见搭配C# / .net IISmssql mssql的数据库文件 数据文件&#xff08;.mdf&#xff09;&#xff1a;主要的数据文件&#xff0c;包含数据表中的数据和对象信息…...

idea一键为实体类赋值

file -> settings -> plugins -> marketplace 把这个插件装上 找个实体&#xff0c;选中&#xff0c;altenter进入edit界面 我是选择只保留右边这种生成方法&#xff0c;然后选择ok 返回到那个实体&#xff0c;选择&#xff0c;altenter generate生成...

秋招突击——7/24——知识补充——JVM类加载机制

文章目录 引言类加载机制知识点复习类的生命周期1、加载2、连接——验证3、连接——准备4、连接——解析5、初始化 类加载器和类加载机制类加载器类加载机制——双亲委派模型 面试题整理1、类加载是什么2、类加载的过程是什么3、有哪些类加载器&#xff1f;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;/*需求&#xff1a;需求&#xff1a;有一个文件里面存储了班级同学的信息&#xff0c;每一个信息占一行。格式为&#xff1a;张三-男-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潘多编程 在分布式系统中&#xff0c;日志跟踪是一项非常重要的功能&#xff0c;它帮助开发者了解请求在整个系统中的流转过程&#xff0c;这对于调试、监控和故障排查至关重要。Spring Boot应用通常作为微服…...

GPT-4o Mini 模型的性能与成本优势全解析

GPT-4o Mini 模型的性能与成本优势全解析 &#x1f4c8; &#x1f31f; GPT-4o Mini 模型的性能与成本优势全解析 &#x1f4c8;摘要引言正文内容GPT-4o Mini 模型简介 &#x1f680;性能测试与对比 &#x1f4ca;应用场景 &#x1f310;自然语言处理对话系统内容生成 ✍️ &am…...

web前端 - HTML 基础知识大揭秘

HTML 大揭秘 什么是 HTML HTML&#xff08;Hyper Text Markup Language&#xff09;&#xff0c;中文译为超文本标记语言。其中&#xff0c;我们需要注意两个关键词。一个是 超文本&#xff0c;一个是 标记。所谓超文本&#xff0c;就是将不同空间的文字信息通过超链接的方式…...

HTML meta

<meta>标签用于提供html文档的元信息&#xff08;metadata&#xff09;。这些信息不会显示在页面上&#xff0c;但会被浏览器或搜索引擎用来识别页面的编码方式、关键字、描述、作者信息、刷新时间等。 基本语法 <meta name"属性名" content"属性值&q…...

【学习笔记】子集DP

背景 有一类问题和子集有关。 给你一个集合 S S S&#xff0c;令 T T T 为 S S S 的超集&#xff0c;也就是 S S S 所有子集的集合&#xff0c;求 T T T 中所有元素的和。 暴力1 先预处理子集的元素和 A i A_i Ai​&#xff0c;再枚举子集。 for(int s0; s<(1<…...

苦学Opencv的第十四天:人脸检测和人脸识别

Python OpenCV入门到精通学习日记&#xff1a;人脸检测和人脸识别 前言 经过了十三天的不懈努力&#xff0c;我们终于也是来到了人脸检测和人脸识别啦&#xff01;相信大家也很激动吧。接下来我们开始吧&#xff01; 人脸识别是基于人的脸部特征信息进行身份识别的一种生物识…...

PyTorch学习(1)

PyTorch学习&#xff08;1&#xff09; CIFAR-10数据集-图像分类 数据集来源是官方提供的&#xff1a; torchvision.datasets.CIFAR10()共有十类物品&#xff0c;需要用CNN实现图像分类问题。 代码如下&#xff1a;(CIFAR_10_Classifier_Self_1.py) import torch import t…...

三思而后行:计算机行业的决策智慧

在计算机行业&#xff0c;"三思而后行"这一原则显得尤为重要。在这个快速发展、技术不断更新换代的领域&#xff0c;每一个决策都可能对项目的成功与否产生深远的影响。以下是一篇关于在计算机行业中三思重要性的文章。 三思而后行&#xff1a;计算机行业的决策智慧 …...

Linux--Socket编程UDP

前文&#xff1a;Socket套接字编程 UDP协议特点 无连接&#xff1a;UDP在发送数据之前不需要建立连接&#xff0c;减少了开销和发送数据之前的时延。尽最大努力交付&#xff1a;UDP不保证可靠交付&#xff0c;主机不需要维持复杂的连接状态表。面向报文&#xff1a;UDP对应用层…...

《javaEE篇》--单例模式详解

目录 单例模式 饿汉模式 懒汉模式 懒汉模式(优化) 指令重排序 总结 单例模式 单例模式属于一种设计模式&#xff0c;设计模式就好比是一种固定代码套路类似于棋谱&#xff0c;是由前人总结并且记录下来我们可以直接使用的代码设计思路。 单例模式就是&#xff0c;在有…...

Java核心 - Lambda表达式详解与应用示例

作者&#xff1a;逍遥Sean 简介&#xff1a;一个主修Java的Web网站\游戏服务器后端开发者 主页&#xff1a;https://blog.csdn.net/Ureliable 觉得博主文章不错的话&#xff0c;可以三连支持一下~ 如有疑问和建议&#xff0c;请私信或评论留言&#xff01; 前言 Lambda表达式是…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

mac:大模型系列测试

0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何&#xff0c;是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试&#xff0c;是可以跑通文章里面的代码。训练速度也是很快的。 注意…...