笔试题:输入一串数字,以逗号隔开,将数字排序后输出

2023-05-16

题目:输入一串数字,以逗号隔开,将数字排序后输出。
具体要求:如果有几个数字是连续的,只输出最大的和最小的数字
例如:输入:1,4,6,7,9,2,3
输出:1,4,6,7,9
按照以往惯例,先写测试用例
1、输入:1,4,6,7,9,2,3 输出:1,4,6,7,9
2、输入:1,1,1,1,1,1 输出:1
3、输入:1,2,2,2,3,3,3,5 输出:1,3,5

#include<stdio.h>
#include<string.h>
#include<math.h>
//将两个逗号之间的字符变成数字
//k是逗号所在的位置
//count是逗号与前一个逗号之间的字符的个数 
int CountNum(char *arr,int k,int count)
{
    int result=0;
    int i=0;
    while(count>0)
    {
        float ten=pow(10,i);
        result+=(arr[k-1-i]-48)*ten;
        i++;
        count--;
    }

    return result;
}

//把输入的字符串中的数字提取出来,放在num数组中
//length是arr中的字符个数 
int ConverToNum(char *arr, int length, int *num)
{
    int n=0;
    int k=0;
    int count_temp=0;
    while(k<=length)
    {
        //如果字符是逗号或者结尾,就处理两个逗号之间的字符,转换成数字 
        if(arr[k]==','||arr[k]=='\0')
        {
            num[n]=CountNum(arr,k,count_temp);
            n++;
            count_temp=0;
        }
        else
        {
            count_temp++;
        }

        k++;
    }

    return n;
}

//把数组中的数字从小到大排序
//这里用的是冒泡排序,你可以选择任意的排序算法 
void sort(int *arr, int length)
{
    int temp=0;
    for(int i=0;i<length;i++)
    {
        for(int j=0;j<length-i-1;j++)
        {
            if(arr[j]>arr[j+1])
            {
                temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
            }
        }
    }
}

//将数组中重复的数字剔除 
int DropRepeat(int *arr,int length, int *temp)
{
    temp[0]=arr[0];
    int i=1;
    int k=1;
    while(i<length)
    {
        if(arr[i]!=arr[i-1])
        {
            temp[k++]=arr[i];
        }
        i++;
    }
    return k;
}

int main()
{
    char arr[100]={'\0'};
    scanf("%s",&arr);//输入字符串 
    int length=strlen(arr);

    int num[100]={0};
    int count_num=ConverToNum(arr, length, num);//把字符串中的数字提取出来 

    sort(num,count_num);//数组中的数字排序 

    int temp[100]={0};
    int count_temp=DropRepeat(num,count_num,temp);//数组中重复的数字剔除 

    int flag=0;
    printf("%d ",temp[0]);
    for(int i=1;i<count_temp;i++)
    {
        //检查是否几个数字连续,如果和前一个后一个不满足连续的关系才输出 
        if(temp[i]!=temp[i-1]+1 || temp[i]+1!=temp[i+1])
        {
            printf("%d ",temp[i]);
        }
    }

    getchar();
    return 0;
} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

笔试题:输入一串数字,以逗号隔开,将数字排序后输出 的相关文章

  • 动手学深度学习——7. CNN可视化

    动手学深度学习 7 CNN可视化 记录一下学习深度学习的一些 本篇记录一下使用 Grad CAM 可视化 CNN 环境 xff1a Windows 108700K2070Pytorch 1 7 1 深度学习在很多任务上 xff0c 特别是计
  • 动手学深度学习——8. 人物肖像画

    动手学深度学习 8 人物肖像画 记录一下学习深度学习的一些 本篇记录一下使用 U 2 Net paper 生成人物肖像画 xff0c 还有 APDrawingGAN 环境 xff1a Windows 108700K2070Pytorch 1
  • python函数--enumerate()方法

    enumerate 方法 描述 enumerate 函数用于将一个可遍历的数据对象 如列表 元组或字符串 组合为一个索引序列 xff0c 同时列出数据和数据下标 xff0c 一般用在 for 循环当中 Python 2 3 以上版本可用 x
  • [HAL库学习之路]1.点亮LED

    记录自己的STM32的HAL库的学习之路 xff0c 不定期更新 一 创建工程 二 Pinout 三 Clock Configuration 四 Configuration 配置GPIO的模式 速度等等 五 Generate Code Pr
  • [HAL库学习之路]5.IWDG-独立看门狗

    记录自己的STM32的HAL库的学习之路 xff0c 不定期更新 一 Pinout 二 Clock Configuration 三 Configuration 配置GPIO 配置IWDG 四 Generate Code 代码 主函数首先点亮
  • [HAL库学习之路]7.定时器中断

    记录自己的STM32的HAL库的学习之路 xff0c 不定期更新 一 Pinout 二 Clock Configuration 三 Configuration 定时器溢出时间 T o u t 61 a r r 43 1 p s c 43 1
  • [HAL库学习之路]8.PWM输出

    记录自己的STM32的HAL库的学习之路 xff0c 不定期更新 一 Pinout 二 Clock Configuration 三 Configuration 四 Generate Code 代码 span class hljs keywo
  • [HAL库学习之路]9.输入捕获

    记录自己的STM32的HAL库的学习之路 xff0c 不定期更新 一 Pinout 二 Clock Configuration 三 Configuration 四 Generate Code 代码 计数频率为1MHz xff0c 捕获到高电
  • [HAL库学习之路]11.RTC-实时时钟

    记录自己的STM32的HAL库的学习之路 xff0c 不定期更新 一 Pinout 二 Clock Configuration 三 Configuration 四 Generate Code 代码 int span class hljs f
  • 数字电路基础(四) 数据分配器、数据选择器和数值比较器

    数字电路基础 xff08 四 xff09 数据分配器 数据选择器和数值比较器 一 数据分配器 在数据传输的过程中 xff0c 数据选择器可以把某一路的数据分配到不同的数据通道上 xff0c 这种电路称为数据分配器 简称DEMUX xff0c
  • 好心博主祝您解决sql右模糊匹配一个列表的问题

    LambdaQueryWrapper if span class token punctuation span CollectionUtil isNotEmpty span class token punctuation span requ
  • IPV9 : 中国摆脱美国IPV6, 自订互联网标准

    IPV9 中国摆脱美国IPV6 自订互联网标准 根据新华网消息指出 中国于2008 1 23宣布基于十进制技术构建的互联网投入使用 十进制互联网技术形成的IPV9协议 xff0c 是中国在互联网技术上取得的重大自主创新成果 xff0c 为摆
  • K_A18_001 基于STM32等单片机采集MQ2传感参数串口与OLED0.96双显示

    K A18 001 基于STM32等单片机采集MQ2传感参数串口与OLED0 96双显示 一 资源说明二 基本参数参数引脚说明 三 驱动说明IIC地址 采集通道选择 时序对应程序 四 部分代码说明1 接线引脚定义1 1 STC89C52RC
  • Linux命令总结--grep命令

    linux grep命令详解 简介 grep global search regular expression RE and print out the line 全面搜索正则表达式并把行打印出来 是一种强大的文本搜索工具 xff0c 它能
  • OpenStack:01---通过packstack在CentOS7上安装OpenStack(不限版本)

    官方手册步骤太多 xff0c 一着不慎满盘皆输 对于学习体验来说自动化安装的方法较为合适 1 CentOS虚拟机安装 需要注意三点 xff1a 使用mini镜像进行最小化安装配置给够CPU开启虚拟化 下面分别解释 第一条 xff1a cen
  • OpenStack 入门学习之八:OpenStack OVS GRE/VXLAN网络

    文章来自 xff1a http blog sina com cn s blog 9762b74e010135vv html 学习或者使用OpenStack普遍有这样的现象 xff1a 50 的时间花费在了网络部分 xff1b 30 的时间花
  • 面试系列之抽象类和接口的区别

    抽象类 在Java中被abstract关键字修饰的类称为抽象类 xff0c 被abstract关键字修饰的方法称为抽象方法 抽象方法只有方法的声明 xff0c 没有方法体 抽象类无法被实例化 public abstract class Hu
  • 综述:小样本学习中的自监督元素

    来源 xff1a 知乎 嬉嬉皮 侵删 地址 xff1a https zhuanlan zhihu com p 363959407 本文是笔者周末翻论文时做的一点概览性的总结 xff0c 关注一下近年小样本学习中的embedding func
  • 数据库锁机制和CAS概念

    这个作者介绍比较清晰 https www cnblogs com X knight p 10669934 html 64 勋爵
  • SpringBoot整合shiro的一个完整的小案例

    SpringBoot整合配置版的shiro很简单 逻辑清 首先在pom xml的配置如下 shiro使用缓存ehcache span class hljs tag lt span class hljs title dependency sp

随机推荐