1.编写复制一个字符串的程序。
#include<stdio.h>
main()
{
int i;
char s1[20],s2[20];
printf("String1:");
gets(s1);
for(i=0;s2[i]=s1[i];i++)
printf("String2:%s/n",s2);
}
2.编写一个将两上字符串合并成一个字符串的程序。
#include<stdio.h>
main()
{
char s1[20],s2[20],s3[40];
int i,j;
printf("String1:");
gets(s1);
printf("String2:");
gets(s2);
for(i=0;s1[i] !='/0';i++)
s3[i]=s1[i];
for(j=0;s2[j] !='/0';j++)
s3[i+j] = s2[j];
s3[i+j] ='/0';
printf("Append string:%s/n",s3);
}
3.编写一个计算字符串长度的程序。
#include<stdio.h>
main()
{
int i=0;
char str[30];
printf("String:");
gets(str);
while(str[i] != '/n')
i=i+1;
printf("length=%d/n",i);
}
4.编写一个将一子字符串插入到主字符串指定位置中的程序。
#include<stdio.h>
main()
{
int n,i,j,k;
char s1[20],s2[20],s3[40];
printf("Main String:");
gets(s1);
printf("Sub String:");
gets(s2);
printf("Start index:");
scanf("%d",&n);
for(i=0;i<n;i++)
s3[i] = s1[i];
for(j=0;s2[j] != '/n';j++)
s3[i+j] = s2[j];
printf("i=%d,j=%d/n",i,j);
for(k=n;s1[k] != '/0';k++)
s3[j+k]=s1[k];
s3[j+k]='/0';
printf("Insert String:%s/n",s3);
}
5.编写一个将一字符串逆转的程序。
#include<stdio.h>
main()
{
char s1[20],s2[20];
int i,j;
printf("String:");
scanf("%s",s1);
for(i=0;s1[i] != '/n';i++)
for(j=0;s1[j] != '/n';j++)
s2[i-j-1]=s1[j];
s2[i]='/0';
printf("Reverse String:%s/n",s2);
}
6.编写一个求一字符在字符串中位置的程序。
#include<stdio.h>
main()
{
char s1[20],ch;
int i;
printf("String:");
gets(s1);
printf("Character:");
scanf("%c",&ch);
for(i=0;(s1[i] != ch);i++)
i=i+1;
if(i>=20)
i=0;
printf("Index:%d/n",i);
}
7.编写一个将一字符串中所有旧字符替换成新字符的程序。
#include<stdio.h>
main()
{
char s1[20],s2[20],ch1,ch2;
int i,j;
printf("String:");
gets(s1);
printf("Old,New char:");
scanf("%c,%c",&ch1,&ch2);
for(i=0;(s1[i] != '/0');i++)
if(s1[i] == ch1)
s2[i] = ch2;
else
s2[i] = s1[i];
s2[i]='/0';
printf("End String:%s/n",s2);
}
8.编写一个比较两字符串大小的程序。
#include<stdio.h>
main()
{
int i,c;
char s1[20],s2[20];
printf("First String:");
gets(s1);
printf("Second String:");
gets(s2);
i=0;
while(s1[i] != '/0' && s2[i] !='/0')
{
if(s1[i] > s2[i])
{
c=1;
break;
}
else if(s1[i] < s2[i])
{
c=-1;
break;
}
else
i=i+1;
}
if(s1[i] = '/0' && s2[i] =='/0')
c=1;
if(s1[i] == '/0' && s2[i] ='/0')
c=-1;
if(s1[i] == '/0' && s2[i] =='/0')
c=0;
if(c==0)
printf("%s = %s/n",s1,s2);
else if(c==-1)
printf("%s<%s/n",s1,s2);
else
printf("%s>%s/n",s1,s2);
}
9.编写一个判定一字符串是否是另一字符串子串的程序。
#include<stdio.h>
main()
{
int i,j,k,index;
char s1[20],s2[20];
printf("String:");
gets(s1);
printf("Sub String:");
gets(s2);
index = 0;
for(i=0;s1[i];i++)
{
for(j=i,k=0;s1[j] == s2[k];j++,k++)
if(! s2[k+1])
{
index = i+1;
break;
}
if(index != 0)
break;
}
printf("Index =%d/n",index);
}
10.编写一个计算一个字符串中子串出现次数的程序。
#include<stdio.h>
main()
{
int i,j,k,count;
char s1[20],s2[20];
printf("主串:");
gets(s1);
printf("子串:");
gets(s2);
count = 0;
for(i=0;s1[i];i++)
for(j=i,k=0;s1[j] == s2[k];j++,k++)
if(! s2[k+1])
count++;
printf("出现次数=%d/n",count);
}
11.编写一个程序输入一行字符,统计其中有多少个单词,单词之间用一个或多个空格分隔开。
#include<stdio.h>
main()
{
char str[80];
int n,i;
printf("String:");
gets(str);
n=1;
i=0;
while (str[i] != '/0')
{
if(i>0 && str[i] == ' ' && str[i-1] != ' ')
n++;
i++;
}
printf("Word number:%d/n",n);
}
字符串算法
最新推荐文章于 2024-09-12 19:02:20 发布