C语言之习题练习集
💗 💗 博客:小怡同学
💗 💗 个人简介:编程小萌新
💗 💗 如果博客对大家有用的话,请点赞关注再收藏 🌞
文章目录
- 牛客网题号: JZ17 打印从1到最大的n位数
- 牛客网题号: HJ73 计算日期到天数转换
- 牛客网题号: HJ76 尼科彻斯定理
- 牛客网题号: HJ100 等差数列
- 牛客网题号: HJ97 记负均正
- leetcode 题号:645. 错误的集合
- 牛客网题号: OR141 密码检查
- 牛客网题号: JZ53 数字在升序数组中出现的次数
- leetcode 题号:面试题 05.06. 整数转换
- leetcode 题号:747. 至少是其他数字两倍的最大数
- leetcode 题号:349. 两个数组的交集
- 牛客网题号: HJ34 图片整理
- leetcode 题号:724. 寻找数组的中心下标
- 牛客网题号: HJ10 字符个数统计
- leetcode 题号:169. 多数元素
牛客网题号: JZ17 打印从1到最大的n位数
描述
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
- 用返回一个整数列表来代替打印
- n 为正整数,0 < n <= 5
int* printNumbers(int n, int* returnSize ) {*returnSize = pow(10,n)-1;int* arr = (int*)malloc(sizeof(int) * *returnSize);//动态申请扩容,共是*returnSize * int 个字节for(int i = 0 ;i <*returnSize ; i++){arr[i] = i+1;} return arr;
}
牛客网题号: HJ73 计算日期到天数转换
根据输入的日期,计算是这一年的第几天。
保证年份为4位数且日期合法。
#include <stdio.h>
int is_leap_year(int year)
{if(year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)){return 1;}
return 0;}
int main() {int month_day[]={0,31,28,31,30,31,30,31,31,30,31,30,31};int year,month,day;while (~scanf("%d %d %d", &year, &month,&day)) { int total_day = day;if(is_leap_year(year) && month > 2 )total_day +=1; //比二月大且是闰年加一天for(int i = month - 1 ; i > 0 ; i--)//i不等于0是因为创建数组时month_day[0]==0{total_day += month_day[i];}printf("%d ",total_day);}return 0;
}
牛客网题号: HJ76 尼科彻斯定理
验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。
例如:
1^3=1
2^3=3+5
3^3=7+9+11
4^3=13+15+17+19
#include <stdio.h>
int main() {int a;while (scanf("%d", &a) != EOF) { int start = a * a - (a - 1);//有题意可知起始奇数公式为 m*m-(m-1)printf("%d",start);for(int i = 1 ; i < a ; i++){printf("+%d",start + 2 * i);} printf("\n");}return 0;
}
牛客网题号: HJ100 等差数列
等差数列 2,5,8,11,14。。。。
(从 2 开始的 3 为公差的等差数列)
输出求等差数列前n项和
#include <stdio.h>
int SUM(int a)
{return 2+(a-1)*3;
}int main() {int a=0;scanf("%d", &a);int sum = 0;for(int i = 0; i < a ; i++){sum +=SUM(i+1);}printf("%d",sum);return 0;
}
牛客网题号: HJ97 记负均正
描述
首先输入要输入的整数个数n,然后输入n个整数。输出为n个整数中负数的个数,和所有正整数的平均值,结果保留一位小数。
0即不是正整数,也不是负数,不计入计算。如果没有正数,则平均值为0。
#include <stdio.h>int main() {int n = 0;scanf("%d",&n);int tmp =0;float sum = 0.0;int count_sum = 0;int count_num = 0;for(int i = 0 ; i < n ; i++)
{scanf("%d",&tmp);if(tmp > 0){sum += tmp;count_sum++; }else if(tmp < 0)count_num++;
}if(count_sum == 0)
printf("%d 0.0",count_num);
else
printf("%d %.1lf\n",count_num,sum/count_sum);return 0;
}
leetcode 题号:645. 错误的集合
集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。
给定一个数组 nums 代表了集合 S 发生错误后的结果。
请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。
int* findErrorNums(int* nums, int numsSize, int* returnSize){*returnSize =2;int* ret = (int*)malloc(sizeof(int) * 2);int* arr = (int*)calloc(numsSize+1,sizeof(int));int sum = 0;int sum2 = 0;for(int i = 0;i<numsSize;i++){if(arr[nums[i]] == 1)ret[0] = nums[i];arr[nums[i]] = 1;sum += i+1;sum2 += nums[i];}ret[1] = sum - (sum2 - ret[0]);free(arr)return ret;
}
牛客网题号: OR141 密码检查
小明同学最近开发了一个网站,在用户注册账户的时候,需要设置账户的密码,为了加强账户的安全性,小明对密码强度有一定要求:
- 密码只能由大写字母,小写字母,数字构成;
- 密码不能以数字开头;
- 密码中至少出现大写字母,小写字母和数字这三种字符类型中的两种;
- 密码长度至少为8
现在小明受到了n个密码,他想请你写程序判断这些密码中哪些是合适的,哪些是不合法的。
int main() {//数组名不可以直接++,可以用一个指针指向数组名int n =0;scanf("%d" ,&n);for(int i = 0 ; i < n ; i++){int flag_num = 0;int flag_low = 0;int flag_cap = 0;int other = 0;char str [101]={0};char* cur =str;scanf("%s" ,str);if( *cur>= '0' && * cur <= '9' ){printf("NO\n");continue;}if(strlen(cur) < 8){printf("NO\n");continue;}while(*cur != '\0'){if(*cur >= 'A' && *cur <= 'Z' )flag_cap = 1;else if( *cur >= 'a' && *cur<= 'z')flag_low = 1;else if(*cur <= '9' && *cur >='0')flag_num = 1;elseother++;cur++; }if(other >0){printf("NO\n");continue;}if((flag_cap >0) + (flag_low>0) + (flag_num>0) >= 2)printf("YES\n");}return 0;
}
牛客网题号: JZ53 数字在升序数组中出现的次数
整数转换。编写一个函数,确定需要改变几个位才能将整数A转成整数B
int get_bin_cout(int num)
{int count = 0;for(int i =0 ; i < 32 ;i++)//4个字节32个比特位{if((num >> i) & 1)//&的作用是 (0 ,1) & 0 == 0 1 & 1 == 1count++;}return count;
}
int convertInteger(int A, int B){return get_bin_cout(A^B);//^的作用是相同为0相异为一
}
leetcode 题号:面试题 05.06. 整数转换
整数转换。编写一个函数,确定需要改变几个位才能将整数A转成整数B
int get_bin_cout(int num)
{int count = 0;for(int i =0 ; i < 32 ;i++){if((num >> i) & 1)count++;}return count;
}
int convertInteger(int A, int B){return get_bin_cout(A^B);
}
leetcode 题号:747. 至少是其他数字两倍的最大数
给你一个整数数组 nums ,其中总是存在 唯一的 一个最大整数 。
请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是,则返回 最大元素的下标 ,否则返回 -1
int dominantIndex(int* nums, int numsSize){int max_1 =0;
int max_2 =0;
if(nums[1] > nums[0])
{max_1 = 1;max_2 = 0;
}
else{max_1 = 0;max_2 = 1;
}for(int i = 2 ; i < numsSize ; i++)
{if(nums[i] > nums[max_1]){max_2 = max_1;max_1 = i;}else{if(nums[max_2] < nums[i])max_2 = i;}
}
int cur = nums[max_2] * 2;
if(cur <= nums[max_1])
return max_1;
else
return -1;
}
leetcode 题号:349. 两个数组的交集
给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
int* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize){*returnSize = 0;
static int arr[1000];
int i=0;
int j =0;
int n=0;
for(i = 0 ; i< nums1Size ;i++)
{for( j = 0 ; j < nums2Size ; j++){if(nums1[i] == nums2[j])//判断两个数组中是否有相同元素break; }if( j == nums2Size)//遍历一遍后是否存在continue;for( n =0 ; n < *returnSize ;n++){if(nums1[i] == arr[n])break;}if(n == *returnSize){arr[*returnSize] = nums1[i];*returnSize += 1;}
}
return arr;
}
牛客网题号: HJ34 图片整理
描述
Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过代码解决。
Lily使用的图片使用字符"A"到"Z"、“a"到"z”、"0"到"9"表示
#include <stdio.h>
#include <string.h>
int main() {//冒泡排序char arr[1000] = {0};scanf("%s",arr);int len = strlen(arr);for(int i = 0 ; i < len-1;i++){for(int j = 0 ; j < len -1-i ; j++){if(arr[j] > arr[j+1]){char kmp = arr[j+1];arr[j+1] = arr[j];arr[j] = kmp;}}}printf("%s",arr);return 0;
}
leetcode 题号:724. 寻找数组的中心下标
编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。
int pivotIndex(int* nums, int numsSize){//两次循环,外层循环找下标,内增循环总计左右之和for(int i =0 ; i < numsSize ;i++)
{int sum_l = 0;int sum_r = 0;for(int j = 0 ; j < numsSize ; j++){if(j < i){sum_l += nums[j];}else if(j > i){sum_r += nums[j];}}if(sum_l == sum_r)return i;
}
return -1;
}
牛客网题号: HJ10 字符个数统计
描述
编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。
#include <stdio.h>
#include <string.h>
int main() {char arr[500] ={0};scanf("%s",arr);char str [500] ={0};int len = strlen(arr);int count =0;for(int i = 0 ; i < len ;i++){if(str[arr[i]] == 0)//把重复的元素当成下标,并标志1{count++;}str[arr[i]] = 1;} printf("%d",count);return 0;
}
//写法二
#include <stdio.h>
#include <string.h>
int main() {char arr [501]={0};while(~scanf("%s",arr)){char str [500] ={0};char* cur =arr;//开辟新的数组当下标,并有一个指针来接收,因为数组名不可以++;int count = 0;while(*cur != '\0'){if(str[*cur] != 1)//{count++;}str[*cur++] = 1;}printf("%d\n",count);}return 0;
}
leetcode 题号:169. 多数元素
给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
int majorityElement(int* nums, int numsSize){int tmp = nums[0];
int count = 1;for(int i = 1 ; i < numsSize ; i++)
{if(nums[i] == tmp){count++;}else{count--;if(count == 0)tmp = nums[i+1];//相邻判断,tmp迭代之后count为1}
}
return tmp;
}
相关文章:

C语言之习题练习集
💗 💗 博客:小怡同学 💗 💗 个人简介:编程小萌新 💗 💗 如果博客对大家有用的话,请点赞关注再收藏 🌞 文章目录牛客网题号: JZ17 打印从1到最大的n位数牛客网题号&#x…...

Buuctf [ACTF新生赛2020]Universe_final_answer 题解
1.程序逻辑 程序逻辑并不复杂: 首先输入字符串,然后对字符串进行一个判断是否满足条件的操作 如果满足则对字符串进行处理并输出,输出的就是flag 2.judge_860函数 显然根据这十个条件可以通过矩阵解线性方程组,这里对变量的命名做了一些调整,让Vi对应flag[i]方便读 …...

【Linux】环境变量
目录背景1.概念2.常见环境变量2.1 PATH指令和自定义程序向环境变量PATH中添加路径删除PATH中的路径2.2 env:显示所有环境变量2.3 环境变量相关的命令3.通过代码获取环境变量1.char* envp[]2.第三方变量enciron3.getenv函数获取指定环境变量4.利用获取的环境变量自制…...
单一职责原则
单一职责原则: 就一个类而言,应该只有一个引起它变化的原因,如果一个类承担的职责过多就等于把这些职责耦合在一起,至少会造成以下两方面的问题: 我们要去修改该类中的一个职责可能会影响到该类的其它职责。这种耦合…...

golangの并发编程(GMP模型)
GMP模型 && channel1. 前言2. GMP模型2.1. 基本概念2.2. 调度器策略2.3. go指令的调度流程2.4. go启动周期的M0和G02.5. GMP可视化2.6. GMP的几种调度场景3. channel3.1. channel的基本使用3.2. 同步器1. 前言 Go中的并发是函数相互独立运行的体现,Gorouti…...

MacBook Pro错误zsh: command not found: brew解决方法
问题描述:本地想安装Jenkins,但是brew指令不存在/我的电脑型号是19款的MacBook Pro(Intel芯片)。解决方法MacBook Pro 重新安装homebrew,用以下命令安装,序列号选择阿里巴巴下载源。/bin/zsh -c "$(cu…...

spring中BeanFactory 和ApplicationContext
在学习spring的高阶内容时,我们有必要先回顾一下spring回顾spring1.什么是springspring是轻量级的,指核心jar包时很小的;非侵入式的一站式框架(数据持久层,web层,核心aop),为了简化企业级开发。核心是IOC&a…...
HC32L17x的LL驱动库之dma
#include "hc32l1xx_ll_dma.h"/// //函 数: //功 能: //输入参数: //输出参数: //说 明: // uint8_t LL_DMA_DeInit(DMA_TypeDef* DMAx, uint32_t Channel) {__IO uint32_t* dmac NULL;dmac &(DMAx->CONFA0);Channel << 4;dmac …...

SSM项目 替换为 SpringBoot
一、运行SSM项目 保证项目改为SpringBoot后运行正常,先保证SSM下运行正常。 项目目录结构 创建数据库,导入sql文件 查看项目中连接数据jar版本,修改对应版本,修改数据库配置信息 配置启动tomcat 运行项目,测试正常…...
RL笔记:动态规划(2): 策略迭代
目录 0. 前言 (4.3) 策略迭代 Example 4.2: Jack’s Car Rental Exercise 4.4 Exercise 4.5 Exercise 4.6 Exercise 4.7 0. 前言 Sutton-book第4章(动态规划)学习笔记。本文是关于其中4.2节(策略迭代)。 (4.3) 策略迭代 基…...

2023软件测试金三银四常见的软件测试面试题-【测试理论篇】
三、测试理论 3.1 你们原来项目的测试流程是怎么样的? 我们的测试流程主要有三个阶段:需求了解分析、测试准备、测试执行。 1、需求了解分析阶段 我们的SE会把需求文档给我们自己先去了解一到两天这样,之后我们会有一个需求澄清会议, 我…...
蓝桥训练第二周
1 ,泛凯撒加密 内存限制:128 MB时间限制:1.000 S 题目描述 众所周知,在网络安全中分为明文和密文,凯撒加密是将一篇明文中所有的英文字母都向后移动三位(Z的下一位是A),比如a向后…...

详讲函数知识
目录 1. 函数是什么? 2. C语言中函数的分类: 2.1 库函数: 2.2 自定义函数 函数的基本组成: 3. 函数的参数 3.1 实际参数(实参): 3.2 形式参数(形参): …...

gin 框架初始教程文档
一 、gin 入门1. 安装gin :下载并安装 gin包:$ go get -u github.com/gin-gonic/gin2. 将 gin 引入到代码中:import "github.com/gin-gonic/gin"3.初始化项目go mod init gin4.完整代码package mainimport "github.com/gin-go…...

Maven的下载和安装【详细】
文章目录一、什么是Maven?二、Maven的安装与配置2.1下载Maven安装包2.2配置Maven环境变量2.3验证三、Idea配置Maven3.1配置 setting.xml文件3.2Idea配置Maven一、什么是Maven? Apache Maven是个项目管理和自动构建工具,基于项目对象模型&…...

[数据结构]:04-循环队列(数组)(C语言实现)
目录 前言 已完成内容 循环队列实现 01-开发环境 02-文件布局 03-代码 01-主函数 02-头文件 03-QueueCommon.cpp 04-QueueFunction.cpp 结语 前言 此专栏包含408考研数据结构全部内容,除其中使用到C引用外,全为C语言代码。使用C引用主要是为了…...

buu [GWCTF 2019]BabyRSA 1
题目描述: import hashlib import sympy from Crypto.Util.number import *flag GWHT{******} secret ******assert(len(flag) 38)half len(flag) / 2flag1 flag[:half] flag2 flag[half:]secret_num getPrime(1024) * bytes_to_long(secret)p sympy.nextp…...
codeforces 1669F
题意: alice和bob从数组两边的吃糖果, 数组的值就是糖果重量 要求alice和bob吃的糖果重量必须一样, 输出能吃几个糖果 这题最先想到的是前后缀相加 模拟一个前缀和 和 后缀和 在n/2的位置向前找前缀和 在n/2的位置向后找后缀和 找到第一个前缀和后缀和的下标输出就好 …...
高数考试必备知识点
三角函数与反三角函数的知识点 正弦函数 ysin x, 反正弦函数 yarcsin x • y sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x (π/2) kπ 为对称轴 • y arcsin x, x∈[–1,1]…...

[蓝桥杯] 二分与前缀和习题练习
文章目录 一、二分查找习题练习 1、1 数的范围 1、1、1 题目描述 1、1、2 题解关键思路与解答 1、2 机器人跳跃问题 1、2、1 题目描述 1、2、2 题解关键思路与解答 1、3 四平方和 1、3、1 题目描述 1、3、2 题解关键思路与解答 二、前缀和习题练习 2、1 前缀和 2、1、1 题目描述…...

JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程
鸿蒙电脑版操作系统来了,很多小伙伴想体验鸿蒙电脑版操作系统,可惜,鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机,来体验大家心心念念的鸿蒙系统啦!注意:虚拟…...

归并排序:分治思想的高效排序
目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法,由约翰冯诺伊曼在1945年提出。其核心思想包括: 分割(Divide):将待排序数组递归地分成两个子…...

CTF show 数学不及格
拿到题目先查一下壳,看一下信息 发现是一个ELF文件,64位的 用IDA Pro 64 打开这个文件 然后点击F5进行伪代码转换 可以看到有五个if判断,第一个argc ! 5这个判断并没有起太大作用,主要是下面四个if判断 根据题目…...
LangChain【6】之输出解析器:结构化LLM响应的关键工具
文章目录 一 LangChain输出解析器概述1.1 什么是输出解析器?1.2 主要功能与工作原理1.3 常用解析器类型 二 主要输出解析器类型2.1 Pydantic/Json输出解析器2.2 结构化输出解析器2.3 列表解析器2.4 日期解析器2.5 Json输出解析器2.6 xml输出解析器 三 高级使用技巧3…...