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 题目描述…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...
第八部分:阶段项目 6:构建 React 前端应用
现在,是时候将你学到的 React 基础知识付诸实践,构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段,你可以先使用模拟数据,或者如果你的后端 API(阶段项目 5)已经搭建好,可以直接连…...
DAY 26 函数专题1
函数定义与参数知识点回顾:1. 函数的定义2. 变量作用域:局部变量和全局变量3. 函数的参数类型:位置参数、默认参数、不定参数4. 传递参数的手段:关键词参数5 题目1:计算圆的面积 任务: 编写一…...
Java数组Arrays操作全攻略
Arrays类的概述 Java中的Arrays类位于java.util包中,提供了一系列静态方法用于操作数组(如排序、搜索、填充、比较等)。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序(sort) 对数组进行升序…...
Python异步编程:深入理解协程的原理与实践指南
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 持续学习,不断…...
