C语言之练习题合集

news2024/9/29 9:29:20

在这里插入图片描述

💗 💗 博客:小怡同学
💗 💗 个人简介:编程小萌新
💗 💗 如果博客对大家有用的话,请点赞关注再收藏 🌞

文章目录

  • leetcode 题号:728. 自除数
  • leetcode 题号:238. 除自身以外数组的乘积
  • leetcode 题号:448. 找到所有数组中消失的数字
  • leetcode 题号:485. 最大连续 1 的个数
  • 牛客网题号: HJ37 统计每个月兔子的总数
  • 牛客网题号: ZJ16 数列的和
  • 牛客网题号: HJ56 完全数计算
  • 牛客网题号: HJ11 数字颠倒
  • 牛客网题号: HJ31 单词倒排
  • 牛客网题号: NC61 两数之和
  • 牛客网题号: KS33 寻找奇数
  • 牛客网题号: HJ46 截取字符串

leetcode 题号:728. 自除数

自除数 是指可以被它包含的每一位数整除的数。
例如,128 是一个 自除数 ,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。
自除数 不允许包含 0 。
给定两个整数 left 和 right ,返回一个列表,列表的元素是范围 [left, right] 内所有的 自除数

int* selfDividingNumbers(int left, int right, int* returnSize){
int* ret = (int*)malloc(sizeof(int) * 1000);
*returnSize = 0;
for(int i = left ; i <= right ; i++)
{
    int num =i;
    while(num)
    {
        int reminder = num % 10;//
        if(reminder == 0 || (i % reminder) != 0)//自除数不可以为0,且除以自己的每一位数等于0
            break;//个人理解 使用break这种跳出循环的语句,可以判断是遍历一遍,还是突然跳出
        num /= 10;
    }
    if(num == 0)
    ret[(*returnSize)++] = i ;
}
return ret;
}

leetcode 题号:238. 除自身以外数组的乘积

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。

题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内

int* productExceptSelf(int* nums, int numsSize, int* returnSize){
int* ret =(int*)malloc(sizeof(int) * numsSize);
*returnSize = numsSize;
int left =1;
int right =1;
for(int i = 0; i< numsSize ;i++)
{
    ret[i] = left;// ret[i]储存 i个之前的乘积共(i-1)乘积
    left *= nums[i];//为下次ret[i+1] 做准备
}   
for(int i = numsSize-1 ;i >= 0 ;i--)
{
    ret[i] *= right; //同理
    right *= nums[i];
}
return ret;
}

leetcode 题号:448. 找到所有数组中消失的数字

给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果

int* findDisappearedNumbers(int* nums, int numsSize, int* returnSize){

for(int i = 0 ; i < numsSize ; i++)
{
    if(nums[abs(nums[i]) - 1] >0)//因为输入1——n的数字,所以下标为0——n-1 ,找到下标对应的元素并乘以-1,遍历一遍之后,还是正数的元素,则是缺少的元素
    nums[abs(nums[i]) - 1] = -(nums[abs(nums[i]) - 1]);
}
int* ret = (int*)malloc(sizeof(int) * numsSize);
*returnSize = 0;
for(int i = 0 ; i < numsSize ; i++)
{
    if(nums[i] > 0)
    {
        ret[*returnSize] = i+1;//因为刚开始数组每个元素-1,并成为下标,找到缺少的下标之后,需要+1
        *returnSize +=1;
    }
}
return ret;
}

leetcode 题号:485. 最大连续 1 的个数

给定一个二进制数组 nums , 计算其中最大连续 1 的个数。

int findMaxConsecutiveOnes(int* nums, int numsSize){


int count = 0;
int max = 0;
for(i
#  牛客网题号: HJ31 单词倒排
对字符串中的所有单词进行倒排。

说明:

1、构成单词的字符只有26个大写或小写英文字母;

2、非构成单词的字符均视为单词间隔符;

3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;

4、每个单词最长20个字母;
```c
#include <stdio.h>

int main() {
    char str [10001] ={0};
    int row = 0 ;
    while(gets(str) > 0){

        char* ptr = str;
        char* word[10001]= {NULL};
        while(*ptr != '\0')//思路开始首字母在合格范围内,则加入指针数组,并循环检测,并'\0'来结尾
        {
            if((*ptr >= 'a' && *ptr <= 'z')  ||( *ptr >= 'A' && *ptr <= 'Z' ))
            { 
                
                word[row++] = ptr;、、
                while ((*ptr >= 'a' && *ptr <= 'z')  ||( *ptr >= 'A' && *ptr <= 'Z' ))
                {
                    ptr++;
                }
                
            }
                *ptr = '\0';
                ptr++;
        }
        int i =0;

        for( i = row -1; i >= 0 ;i--)
        {
            printf("%s ",word[i]);
        }

        printf("\n");
    }
    return 0;
}

牛客网题号: HJ37 统计每个月兔子的总数

有一种兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子。
例子:假设一只兔子第3个月出生,那么它第5个月开始会每个月生一只兔子。
一月的时候有一只兔子,假如兔子都不死,问第n个月的兔子总数为多少?

方法一(递归实现)
#include <stdio.h>
int Fib(int a)
{
    if(a <= 2)
    return 1;
    else
    return Fib(a-1)+Fib(a-2);
}

int main() {
    
    int count =0;
    scanf("%d",&count);
    printf("%d" , Fib(count));
    return 0;
}

方法二
#include <stdio.h>
int main() {
    int n =0;
    scanf("%d" ,&n);
    int a = 1;
    int b = 1;
    int c = 2;
    for(int i = 3 ; i <= n ; i++)
    {
        c = a + b; 
        a = b;
        b = c;
    }
    printf("%d",c);
    return 0;
}

牛客网题号: ZJ16 数列的和

数列的定义如下:数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和

#include <stdio.h>
#include <math.h>
int main() {
   double num = 0;
   int a = 0;
   while(~scanf("%lf %ld",&num,&a))
   {
        double sum = 0.0;
        for(int i = 0 ; i < a ; i++)
        {
            sum += num;
            num = sqrt(num);
        }
        printf("%.2lf\n" ,sum);
   }
    return 0;
}

牛客网题号: HJ56 完全数计算

完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。

它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。

例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。

输入n,请输出n以内(含n)完全数的个数。

#include <stdio.h>
#include <math.h>
int is_perfect_number(int n)
{
    int sum = 1;
    for(int i = 2 ; i <= sqrt(n) ;i++)
    {
        if(n % i == 0)
        {
            sum += i;
            if(i != sqrt(n))
            sum += n/i;    
        }
    }
    if(sum == n)
    return 1;
    return 0;
}
int main() {
    
    int count = 0;
    int a = 0;
    scanf("%d",&a); 
    for(int i = 2 ; i <= a ;i++)
    {
        if(is_perfect_number(i) == 1)
        count++#include <stdio.h>
#include <string.h>
int main() {
    int n = 0;
    while (scanf("%d", &n) != EOF) { 
        if(n == 0)
        {
             printf("%d" ,n % 10);
             continue;
        }
       while(n)
        {
           int tmp = (n%10) ;
           printf("%d",tmp);
            n /= 10;
        }
    }
    return 0;
}
    }
    printf("%d\n",count);
    return 0;
}

牛客网题号: HJ11 数字颠倒

输入一个整数,将这个整数以字符串的形式逆序输出
程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001

#include <stdio.h>
#include <string.h>
int main() {
    int n = 0;
    while (scanf("%d", &n) != EOF) { 
        if(n == 0)
        {
             printf("%d" ,n % 10);
             continue;
        }
       while(n)
        {
           int tmp = (n%10) ;
           printf("%d",tmp);
            n /= 10;
        }
    }
    return 0;
}

牛客网题号: HJ31 单词倒排

对字符串中的所有单词进行倒排。

说明:

1、构成单词的字符只有26个大写或小写英文字母;

2、非构成单词的字符均视为单词间隔符;

3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;

4、每个单词最长20个字母

#include <stdio.h>

int main() {
    char str [10001] ={0};
    int row = 0 ;
    while(gets(str) > 0){

        char* ptr = str;
        char* word[10001]= {NULL};
        while(*ptr != '\0')
        {
            if((*ptr >= 'a' && *ptr <= 'z')  ||( *ptr >= 'A' && *ptr <= 'Z' ))
            { 
                
                word[row++] = ptr;
                ptr++;
                while ((*ptr >= 'a' && *ptr <= 'z')  ||( *ptr >= 'A' && *ptr <= 'Z' ))
                {
                    ptr++;
                }
                
            }
                *ptr = '\0';
                ptr++;
        }
        int i =0;

        for( i = row -1; i >= 0 ;i--)
        {
            printf("%s ",word[i]);
        }

        printf("\n");
    }
    return 0;
}

牛客网题号: NC61 两数之和

给出一个整型数组 numbers 和一个目标值 target,请在数组中找出两个加起来等于目标值的数的下标,返回的下标按升序排列。

int* twoSum(int* numbers, int numbersLen, int target, int* returnSize ) {
    int* ret = (int*)calloc(2,sizeof(int));
    *returnSize = 2;
  
    for(int i = 0 ; i < numbersLen ; i++)
    { 
        if(numbers[i] > target + 10)
                continue;
        for(int j = i + 1 ; j < numbersLen ;j++)
        {
            if((numbers[i] + numbers[j]) == target)
            {
                ret[0] = i + 1;
                ret[1] = j + 1;
                return ret; 
            }
        }
    }

    *returnSize = 0;
    return NULL;
}

牛客网题号: KS33 寻找奇数

现在有一个长度为 n 的正整数序列,其中只有一种数值出现了奇数次,其他数值均出现偶数次,请你找出那个出现奇数次的数值。

#include <stdio.h>

int main() {
    int n = 0;
    int tmp = 0;
    int num = 0;
    scanf("%d",&n);
    for(int i = 0 ; i < n ; i++)
    {
        scanf("%d",&tmp);
        num ^= tmp;
    }
    printf("%d\n",num);
    return 0; 
}

牛客网题号: HJ46 截取字符串

输入一个字符串和一个整数 k ,截取字符串的前k个字符并输出

#include <stdio.h>

int main() {
   
   char str[100] ={0};
    int a =0;
    scanf("%s %d",str,&a);
    str[a] ='\0';
    printf("%s",str);
    return 0;
}

在这里插入图片描述

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

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

相关文章

linux基本功系列之mount命令实战

文章目录前言一. mount命令的介绍二. 语法格式及常用选项三. 参考案例3.1 将iso镜像挂载到/mnt上3.2 把某个分区挂载到/sdb1上3.3 用只读的形式把/dev/sdb2挂载到/sdb2上3.4 设置自动挂载总结前言 大家好&#xff0c;又见面了&#xff0c;我是沐风晓月&#xff0c;本文是专栏【…

阶段八:服务框架高级(第二章:分布式事务)

阶段八&#xff1a;服务框架高级&#xff08;第二章&#xff1a;分布式事务&#xff09;Day-分布式事务0.学习目标1.分布式事务问题1.1.本地事务1.2.分布式事务1.3.演示分布式事务问题2.理论基础2.1.CAP定理2.1.1.一致性2.1.2.可用性2.1.3.分区容错2.1.4.矛盾2.2.BASE理论2.3.解…

超出认知的数据压缩 用1-bit数据来表示32-bit的梯度 语音识别分布式机器学习 梯度压缩 论文精读

说明 介绍1−bit1-bit1−bit论文内容。 原文链接&#xff1a;1-bit stochastic gradient descent and its application to data-parallel distributed training of speech DNNs | Semantic Scholar ABS 实验证明在分布式机器学习的过程中能够通过将同步所传递的梯度进行量化…

什么是企业商机管理 管理销售商机流程方法

现代企业发展道路上&#xff0c;市场竞争愈演愈烈&#xff0c;很多企业都开始重视客户信息化管理来促成销售交易&#xff0c;在销售管理中的商机需按照轻重缓急进行分类、跟进、监控&#xff0c;才能对商机进行有效管理。 从某种程度上来说&#xff0c;一个订单成功与否的关键…

SpringBoot整合XxlJob

SpringBoot整合XxlJob 1.XxlJob简介 官方网址&#xff1a;https://www.xuxueli.com/xxl-job XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。 为什么要使…

【10k~30k的区别】=== 功能测试、自动化测试、性能测试的区别

按测试执行的类型来分&#xff1a;功能测试、自动化测试、性能测试 1&#xff0e;功能测试 功能测试俗称点点点测试。初级测试人员的主要测试任务就是执行测试工程师所写的测试用 例&#xff0c;记录用例的执行状态及bug情况。与开发人员进行交互直到bug被修复。 功能测试理论…

Java查漏补缺(14)数据结构剖析、一维数组、链表、栈、队列、树与二叉树、List接口分析、Map接口分析、Set接口分析、HashMap的相关问题

Java查漏补缺&#xff08;14&#xff09;数据结构剖析、一维数组、链表、栈、队列、树与二叉树、List接口分析、Map接口分析、Set接口分析、HashMap的相关问题本章专题与脉络1. 数据结构剖析1.1 研究对象一&#xff1a;数据间逻辑关系1.2 研究对象二&#xff1a;数据的存储结构…

(pytorch进阶之路)Informer

论文&#xff1a;Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting (AAAI’21 Best Paper) 看了一下以前的论文学习学习&#xff0c;我也是重应用吧&#xff0c;所以代码部分会比较多&#xff0c;理论部分就一笔带过吧 论文作者也很良心的…

微服务的Feign到底是什么

Feign是什么 分区是一种数据库优化技术&#xff0c;它可以将大表按照一定的规则分成多个小表&#xff0c;从而提高查询和维护的效率。在分区的过程中&#xff0c;数据库会将数据按照分区规则分配到不同的分区中&#xff0c;并且可以在分区中使用索引和其他优化技术来提高查询效…

目标检测论文阅读:CBNet算法笔记

标题&#xff1a;CBNet: A Composite Backbone Network Architecture for Object Detection 期刊&#xff1a;TIP2022 论文地址&#xff1a;https://ieeexplore.ieee.org/document/9932281/ 官方代码&#xff1a;https://github.com/VDIGPKU/CBNetV2 作者单位&#xff1a;北京大…

【正点原子FPGA连载】第二十章AXI4接口之DDR读写实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第二十章AXI4接口…

如何查看Spring Boot各版本的变化

目录 1.版本 2.基础特性和使用 3.新增特性和Bug修复 1.版本 打开Spring官网&#xff0c;点进Spring Boot项目我们会发现在不同版本后面会跟着不同的标签&#xff1a; 这些标签对应不同的版本&#xff0c;其意思如下&#xff1a; GA正式版本&#xff0c;通常意味着该版本已…

VsCode安装PlatformIO 开发ESP arduino,买的板子或者随便ESP,PlatformIO添加Board(不是自定义Board)

这次主要记录怎么给新建选板子的时候没有的板子下程序 我这里是一块 WiFi Kit 32 (V3) PlatformIO里面只有到V2 先从头开始&#xff0c;安装PlatformIO 安装PlatformIO 直接搜索安装 安装有时候会比较慢&#xff0c;左侧出现蚂蚁图标之后点击会显示 右下角会提示正在安…

【神经网络】Transformer基础问答

1.Transforme与LSTM的区别 transformer和LSTM最大的区别就是LSTM的训练是迭代的&#xff0c;无法并行训练&#xff0c;LSTM单元计算完T时刻信息后&#xff0c;才会处理T1时刻的信息&#xff0c;T 1时刻的计算依赖 T-时刻的隐层计算结果。而transformer的训练是并行了&#xff0…

AndroidStudio打包HBuilderX的H5+项目为安卓App【一次过,无任何异常报错】

目录 1.查看HBuilderX的版本号 2.下载Dcloud上对应的安卓SDK 3.下载完安卓SDK后&#xff0c;我们解压它&#xff0c;注意不要放在任何有中文组成的文件夹中【是否有中文决定于你鼠标单击上面路径后&#xff0c;第一张图还没鼠标单击&#xff0c;第二张已鼠标单击&#xff0c…

【前端工程化】01-Node.js基础

Node.js基础认识NodeNode的定义Node的应用场景Node的安装和版本管理Node的基本操作Node.js执行文件Node的参数传递Node的REPL认识Node Node的定义 Node.js是一个基于V8 JavaScript引擎的JavaScript运行时环境 Node.js为JavaScript提供了一些服务器级别的操作API 文件读写网…

背靠“湘潭系”的谭新乔,能带领湖南裕能再上一个台阶吗?

文丨熔财经作者|kinki近日&#xff0c;磷酸铁锂正极材料龙头湖南裕能正式登陆A股&#xff0c;上市当天市值超过了400亿元&#xff0c;投资者中一签可赚1.49万元&#xff0c;可谓近年低迷的资本市场中一支“大肉签”。不过在 “开门红”之后&#xff0c;湖南裕能的股价便一路下挫…

ETL工具(kettle) 与 ETL产品(BeeloadBeeDI) 差之毫厘,谬以千里

E T L——是英文Extract-Transform-Load的缩写&#xff0c;用来描述将数据从来源端经过抽取&#xff08;extract&#xff09;、转换&#xff08;transform&#xff09;、加载&#xff08;load&#xff09;至目的端的过程。工具——原指工作时所需用的器具&#xff0c;后引申为达…

Clickhouse学习(一):MergeTree概述

MergeTree一、Clickhouse表引擎概述二、MergeTree表引擎<一>、ReplacingMergeTree引擎<二>、SummingMergeTree引擎<三>、AggregatingMergeTree引擎三、MergeTree分区一、Clickhouse表引擎概述 MergeTree表引擎:允许根据日期和主键创建索引 1、ReplacingMerge…

实践IC-GVINS: 以惯导为核心的GNSS-Visual-INS组合导航系统

视觉导航系统对环境比较敏感&#xff0c;受到光照变化、重复纹理、动态物体等影响&#xff1b;惯性导航系统(INS)则完全自主工作&#xff0c;不受外部环境影响&#xff0c;能够实现连续、高频的自主导航&#xff0c;但其误差发散较快。两者组合能够取长补短&#xff0c;形成视觉…