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的字符串 依次类推,当要切的字符串长度 大于 剩余的字符串长度时,停止切割(剩余长度不足时,不计数) 输出:可以切出来的有效数据的个数,并输出每次切出来的值。

全部评论

相关推荐

投递OPPO等公司10个岗位
点赞 评论 收藏
分享
08-27 22:11
已编辑
门头沟学院 嵌入式工程师
我上个月来这家公司实习的,期间有一个女的估计在这里干好几年了,前几天掀开我的肚子上的衣服嘲笑我肚子胖,我说“你不要这样说我了,我不喜欢这样,我是因为要秋招了找工作压力比较大才胖了点”;她说“你能有什么压力”;然后她转头和旁边的人讨论我身材不好很胖(我是个女的,旁边还有男的在),然后我说“你别这样说”,她用嘲笑的语气说“你怎么破防了”。两天前,我来得比较早,当时我带我的师父也来了,我因为没有事干就坐在工位上发呆,然后她走过来和我师父说“我和你说一个乐子”,我师父就问她是什么乐子,她走过来指着我说“她就是一个乐子”,我全程没有说过一句话,没有看她一眼,她莫名其妙就说我是个乐子。这两件事我很不开心,我最近看着她都绕道走,可能是因为我说不过她吧,也可能是我不想再不开心了,然后她今天来我工位旁边找我师父,我问我师父我能干些什么活,我师父说我啥也不会,我目前才来40天左右;我在工位上说“我师父不相信我,为什么不给我活干”,然后那个女的听见了,就说“你干不好你师父才不给你活干”我说“我还是个学生,才刚上班”,她说“干不了可以走”,我说“实在是干不了再回学校吧”,她说“干不了趁早回你的象牙塔”。然后我因为前段时间的积累再也忍不了了,就问她说为什么要一直欺负我,难道就是因为我比较好欺负吗?
实习的内耗时刻
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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