将子字符串插入到主字符串指定位置
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char a[40],b[40],c[40];
gets(a);
gets(b);
int i,l1,l2,n;
scanf("%d",&n);
l1=strlen(a)-1;
l2=strlen(b)-1;
for(i=0;i<l1+l2;i++){
if(i<n)c[i]=a[i];
else if(i<n+l2) c[i]=b[i-n]; //中间插入第二个字符串
else c[i]=a[i-l2]; //第二个字符串插入完毕后将第一个字符串剩余部分插入,因为是剩余部分因此只要i-l2
}
c[i]='\0'; //字符串后加\0表示终止否则会出现乱码(dev-c++不会)
puts(c);
}
输入俩字符串,输出第二个字符串在第一个字符串中出现的次数,
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char a[40],b[40];
gets(a);
gets(b);
int i,n=0,j;
for(i=0;i<strlen(a);i++)
{ for(j=0;j<strlen(b);j++)
if(a[i+j]!=b[j]) //a的每个字符都要b的每个字符进行连续比较
break; //如a[0]a[1] 要与b[0]b[1] a[1]a[2]与b[0]b[2]比较俩俩相比
if(j==strlen(b))
n++;
}
printf("%d\n",n);
}
猴子选王-约瑟夫环问题
一堆猴子都有编号,编号是1,2,3 …m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,k,a[40],n,m;
scanf("%d",&m); //输入总猴子数
scanf("%d",&n); //输入被叫出来的数字
k=0;
j=n;
for(i=0;i<n;i++)
a[i]=0; //留着的
for(i=0;j!=1;){
if(a[i]==0)
k++; //数量+1
if(k==m){
a[i]=1; //被淘汰的
k=0;
j--;
}
i++;
if(i==n) //当一圈数完重置i
i=0;
}
for(i=0;i<n;i++)
if(a[i]==0)
printf("猴子王是最初的第%d只\n",i+1);
}