C语言字符串算法

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);
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值