求编程如何将字符串输出

从健盘上输入两个字符串(长度不大于20)和整数n(0

该回答引用chatgpt:

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

int main() {
    char str1[21], str2[21], result[41];
    int n, len1, len2;

    printf("请输入第一个字符串:");
    scanf("%s", str1);
    printf("请输入第二个字符串:");
    scanf("%s", str2);
    printf("请输入插入位置n:");
    scanf("%d", &n);

    len1 = strlen(str1);
    len2 = strlen(str2);

    if (n < 0 || n > len1) {
        printf("插入位置不合法\n");
        return 0;
    }

    // 将第一个字符串的前n个字符复制到结果字符串中
    strncpy(result, str1, n);

    // 将第二个字符串复制到结果字符串的n位置处
    strncpy(result+n, str2, len2);

    // 将第一个字符串的n位置后面的字符复制到结果字符串中
    strncpy(result+n+len2, str1+n, len1-n);

    // 输出结果字符串
    printf("插入后的结果为:%s\n", result);

    return 0;
}


  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7652782
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:n个元素的所有子集(递归+非递归 +不去重)
  • 除此之外, 这篇博客: 一本书的页码从自然数1开始编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。中的 2.区间法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #include<stdio.h>
    #include<math.h>
    int main()
    {
        int a[10]= {0},b[10]= {0},n,m,i=1,k=0,j,h,p,sum;
        scanf("%d",&n);
        while(n!=0)
        {
            m=n%10;
            a[i]=m;
            n/=10;
            k++;
            i++;
        }
        h=k;
        for(j=0; j<h-1; j++)
        {
    
            for(p=0; p<10; p++)
                b[p]=b[p]+a[k]*(k-1)*pow(10,k-2);
            for(p=0; p<a[k]; p++)
                b[p]+=pow(10,k-1);
            sum=1;
            for(p=1; p<k; p++)
                sum+=a[p]*pow(10,p-1);
            b[a[k]]=sum+b[a[k]];
            k--;
        }
        for(j=0; j<h; j++)
            b[0]-=pow(10,j);
        for(j=0; j<=a[1]; j++)
            b[j]=b[j]+1;
        for(p=0; p<10; p++)
            printf("%d ",b[p]);
        return 0;
    }
    

    区间法的思路就稍微大一点,利用for就可轻松解决(也可以利用递归的方法)。但不知道为什么,数字稍微大一点时,用codeblocks运行结果就会出错,但用别的编译器运行,就没什么问题了。