从健盘上输入两个字符串(长度不大于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;
}
#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运行结果就会出错,但用别的编译器运行,就没什么问题了。