01串的切割

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAX_LEN 1000
#define MAX_CUTS 100

typedef struct {
    int cut_number;
    int length;
    char *content;
} CutResult;

int main() {
    char str[MAX_LEN];
    CutResult results[MAX_CUTS];
    int total_cuts = 0;
    
    printf("请输入只包含0和1的字符串: ");
    scanf("%s", str);
    
    char *current_ptr = str;
    int remaining = strlen(str);
    int cut_length = 1;
    
    printf("\n切割过程:\n");
    
    while (remaining > 0 && total_cuts < MAX_CUTS) {
        // 检查剩余长度是否足够切割
        if (cut_length > remaining) {
            break;
        }
        
        // 分配内存存储切割结果
        results[total_cuts].content = (char *)malloc(cut_length + 1);
        results[total_cuts].cut_number = total_cuts + 1;
        results[total_cuts].length = cut_length;
        
        // 复制切割内容
        strncpy(results[total_cuts].content, current_ptr, cut_length);
        results[total_cuts].content[cut_length] = '\0';
        
        printf("第%d次: 长度=%d, 内容=%s\n", 
               results[total_cuts].cut_number, 
               results[total_cuts].length, 
               results[total_cuts].content);
        
        // 更新指针和剩余长度
        current_ptr += cut_length;
        remaining -= cut_length;
        total_cuts++;
        
        // 更新下一次切割的长度
        cut_length++;
        if (cut_length > 10) {
            cut_length = 1;
        }
    }
    
    printf("\n=== 切割结果 ===\n");
    printf("有效切割次数: %d\n", total_cuts);
    printf("剩余字符串: %s\n", current_ptr);
    printf("剩余长度: %d\n\n", remaining);
    
    printf("所有切割出来的字符串:\n");
    for (int i = 0; i < total_cuts; i++) {
        printf("第%d次: %s (长度=%d)\n", 
               results[i].cut_number, 
               results[i].content, 
               results[i].length);
    }
    
    // 释放内存
    for (int i = 0; i < total_cuts; i++) {
        free(results[i].content);
    }
    
    return 0;
}

输入一个只包含0和1的字符串str,比如(1010101010)按照如下规则从头开始切割: 第1次 切掉长度为1的字符串,(切掉1,剩下 010101010) 第2次 从剩余串里切掉长度为2的字符串, (切掉01,剩下0101010) 第3次 从剩余串里切掉长度为3的字符串, (切掉010,剩下1010) ... 第10次 从剩余串里切掉长度为10的字符串, 第11次切得长度又回到1,从剩余串里 切掉长度为1的字符串 依次类推,当要切的字符串长度 大于 剩余的字符串长度时,停止切割(剩余长度不足时,不计数) 输出:可以切出来的有效数据的个数,并输出每次切出来的值。

全部评论

相关推荐

08-27 16:27
门头沟学院 C++
###&nbsp;手撕区间合并&nbsp;5分钟秒了###&nbsp;八股从项目引申到mysql、redis八股,OS、计网一点没问1.&nbsp;redis为什么快,性能为什么高?2.&nbsp;redis里面基本的数据类型有哪些?3.&nbsp;一些数据类型也是redis优化之后导致redis快的原因,能够就其中一个redis数据结构的优化来举出一个实际的例子吗?4.&nbsp;你能先描述一下跳表的数据结构长什么样子?5.&nbsp;跳表空间复杂度是多少?6.&nbsp;说说对redis事务的理解?7.&nbsp;说说对mysql事务的理解?8.&nbsp;说一下redis的持久化方案把?9.&nbsp;redis主从同步主要采取哪种形式?10.&nbsp;redis有几种部署模式?11.&nbsp;你觉得集群模式和哨兵模式的主要区别是?12.&nbsp;集群模式中如何出现一个redis热点key的情况,怎么做防止节点单点压力过大?(我回答是业务层面解决,每个节点都缓存热点key,用一个哈希集合存储热点key,直接快速判断是否走本地查询,而不是哈希索引节点)13.&nbsp;说一下mysql的隔离级别以及每种隔离级别下可能出现的问题?14.&nbsp;说一下可重复读是怎么解决不可重复读的问题?15.&nbsp;说一下什么是聚簇索引?16.&nbsp;聚簇索引和聚簇索引有什么区别?17.&nbsp;数据结构的区别在哪里?都用的是B+数吗?18.&nbsp;B+数的结构原理是什么?19.&nbsp;什么是覆盖索引?20.&nbsp;覆盖索引有什么好处?21.&nbsp;最近的话,AI大模型比较火,你有没有学习AI大模型相关的原理,大模型微调了解过吗?###&nbsp;反问什么业务、有几面、什么时候出结果?拼好饭(商家、商品层);3面业务面;不知道
落北北:同学,瞅瞅我司,医疗独角兽,校招刚开,名额有限,先到先得,我的主页最新动态,绿灯直达,免笔试~
查看21道真题和解析
点赞 评论 收藏
分享
投递OPPO等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务