在字符数组中指定开始位置插入字符串;
#include <stdio.h>
#include <string.h>
int main()
{
char a[32] = {0}; //被插入的数组
char b[32] = {0}; //插入的数组
int num, i; //num为输入的插入位置,i为for循环循环数
printf("input char a,num,char b:\n");
scanf("%s%d %s",&a,&num,&b);
int lengtha = strlen(a);
int lengthb = strlen(b); //计算a,b长度
for(i = 0; i<lengtha - num + 1; i++) // a数组中插入位置后的字符所做移动
{
a[lengtha +lengthb -1 - i] = a[lengtha - 1 -i];
}
for(i = 0; i < lengthb; i++) //插入b
{
a[num - 1 + i] = b[i];
}
printf("%s",a);
printf("\n");
return 0;
}
几个字符串求出最小串;
#include <stdio.h>
#include <string.h>
int main()
{
char a[32][32]={'0'};
int num,i,tmp = 0;
for(i = 0; i < 30; i++) //每行存放输入的字符串
{
printf("char of %d:\n",i+1);
scanf("%s",&a[i]);
if(a[i][0] == '0')
{
break;
}
tmp++;
}
memcpy(a[31],a[0],32); //最后一行存放最小数组,并记录是哪个数组
num = 1;
for (i = 1; i<tmp; i++)
{
if(memcmp(a[i],a[31],32)<0) //每个数组依次与最后一行比较
{
memcpy(a[31],a[i],32);
num = i + 1;
}
}
printf("min is number %d:%s\n",num,a[31]);
return 0;
}
请编写一个C函数,该函数将一个字符串逆序
#include <stdio.h>
#include <string.h>
int main()
{
char a[32];
char b[32];
int i;
printf("input char:\n");
scanf("%s",&a);
int length = strlen(a);
for(i = 0; i < length; i++) //在b数组将a逆序输出
{
b[i] = a[length - 1 - i];
}
printf("%s\n",&b);
return 0;
}
输入一个字符串,计算字符串中子串出现的次字数
#include <stdio.h>
#include <string.h>
int main()
{
char a[32] = {0};
char b[32] = {0};
char c[32] = {0};
int num = 0, i, j;
printf("input ch and son:\n");
scanf("%s%s",&a,&b);
int lengtha = strlen(a);
int lengthb = strlen(b);
for(i = 0; i < lengtha - lengthb + 1; i++)
{
for(j = 0; j < lengthb; j++) //从a中提取和b长度相等的字符串赋给c,并依次后推
{
c[j] = a[i + j];
}
if(strcmp(b,c) == 0) //如果bc相等,计数值+1,并将i推至该串字符之后(如aaaa寻找aa结果应为2不加语句为3)
{
num++;
i += (lengthb -1);
}
}
printf("%d time(s)\n",num);
return 0;
}