C基础日差练习2024-7-17

第一题:

        string函数的改写,不使用库函数实现string函数族的功能:strlen strcpy strcmp strcat

strlen:
 #include <stdio.h>
 
 int main(int argc, const char *argv[])
 {
     char str[100];
     printf("请输入字符串:\n");
     scanf("%s",str);
 
     int i;
     for(i=0;str[i]!='\0';i++);
     printf("str的有效长度为:%d\n",i);        
     return 0;
 }
strcpy:
 #include <stdio.h>
 
 int main(int argc, const char *argv[])
 {
     char str1[100];
     char str2[100];
     printf("请输入第一个字符串:\n");
     scanf("%s",str1);
     printf("请输入第二个字符串:\n");
     scanf("%s",str2);
 
     int i;
     for(i = 0;str2[i]!='\0';i++)
     {
         str1[i] = str2[i];
     }
     str1[i]='\0';
     printf("str1=%s\n",str1);                    
     return 0;
 }
strcmp:
 #include <stdio.h>
 
 int main(int argc, const char *argv[])
 {
     char str1[100];
     char str2[100];
     printf("请输入第一个字符串:\n");
     scanf("%s",str1);
     printf("请输入第二个字符串:\n");
     scanf("%s",str2);
 
     int i;
     for(i=0;str1[i]==str2[i]&&str1[i]!='\0';i++);
     if(str1[i]>str2[i])
     {
         printf("str1比str2大\n");
     }
     else if(str1[i]<str2[i])
     {
         printf("str1比str2小\n");
     }
     else
     {
         printf("str1与str2相等\n");
     }
 
     return 0;
 }                                                                         
                                                                           
strcat:
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
    char str1[100];
    char str2[100];
    printf("请输入第一个字符串:\n");
    scanf("%s",str1);
    printf("请输入第二个字符串:\n");
    scanf("%s",str2);

    int len = strlen(str1);
    int i;
    for(i =0;str2[i]!='\0';i++)
    {
        str1[len+i] = str2[i];
    }
    str1[len+i] = '\0';
    printf("str1=%s\n",str1);                               

    return 0;
}

第二题:

        从终端输入一个字符串,要求删除字符串中的空格字符。提示:可以新建一个辅助数组。

 #include <stdio.h>
 
 int main(int argc, const char *argv[])
 {
     char str[100];
     printf("请输入字符串:\n");
     gets(str);
 
     char str1[100]="";
     int j = 0;
     for(int i =0;str[i]!='\0';i++)
     {
         if(str[i]!=' ')
         {
             str1[j] = str[i];
             j++;
         }
     }
     int i;
     for(i =0;str1[i]!='\0';i++)
     {
         str[i] = str1[i];
     }
     str[i] = '\0';
     printf("%s\n",str);                                    
     return 0;
 }

第三题:

        从终端获取一个字符串,要求将该字符串倒置存储。不允许使用辅助数组。

#include <stdio.h>

int main(int argc, const char *argv[])
{
    char str[100];
    printf("请输入字符串:\n");
    scanf("%s",str);
    int i;
    for(i = 0;str[i]!='\0';i++);
    int j;
    for(j = 0,i=i-1;j<i;j++,i--)
    {
        str[i] = str[i]+str[j];
        str[j] = str[i]-str[j];
        str[i] = str[i]-str[j];
    }
    printf("%s",str);
    return 0;
}                                                         

第四题:

        从终端获取一个字符串,判断该字符串中小写字母分别有几个。aabbbcc ->a有2个b有3个 c有2个     

#include <stdio.h>

int main(int argc, const char *argv[])
{
    char str[100];
    char str1[26]={0};
    printf("请输入字符串:\n");
    gets(str);

    int i;
    for(i = 0;str[i]!='\0';i++);
    for(int j = 0;j<i;j++)
    {
        if(str[j]>='a'&&str[j]<='z')
        {
            str1[str[j]-'a']+=1;
        }
    }
    for(int j = 0;j<sizeof(str1);j++)                                  
    {
        if(str1[j]>0)
        {
            printf("%c有%d个\n",j+'a',str1[j]);
        }
    }
    return 0;
}

第五题:

        从终端输入一 个字符串,要求删除字符串中的空格字符,请在原字符串上操作,不允许使用辅助数组。

 #include <stdio.h>
 
 int main(int argc, const char *argv[])
 {
     char str[100];
     printf("请输入字符串:\n");
     gets(str);
 
     for(int i =0;str[i]!='\0';i++)
     {
         if(str[i]==' ')
         {
             for(int j =i;str[j]!='\0';j++)
             {
                 str[j] = str[j+1];
             }
         }
     }
     printf("str=%s\n",str);
     return 0;
 }                                                                
                                                                  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值