C语言之字符串强化练习题

第4关:把它“脱”出去

本关需要完成将字符串中某字符全部删去的小程序。

编程要求

要求编写程序将字符串中的指定字符删去。

测试输入: I am happy a

预期输出:I m hppy

#include<stdio.h>
#include <string.h>
void string(char a[],char ch);//函数声明
void string(char a[],char ch)
{
    for(int i=0;a[i]!='\0';i++){
       
        if(a[i]==ch){
           for(int j=i;j<strlen(a);j++)
                a[j]=a[j+1];
        }
    }
    puts(a);
}
int main()
{
    char s[100];
    char x;
    fgets(s,sizeof(s),stdin);
    scanf("%c",&x);
    string(s,x);

}

第3关:接龙也可以这么玩

本关要求:如果两个字符串不相等,将短的字符串连接到长的字符串的末尾并输出新字符串,否则输出“相等”。

#include<stdio.h>
#include<string.h>
int main()
{
    char s1[100];
    char s2[100];
    int x,y;
    scanf("%s %s",s1,s2);

    x=strlen(s1);
    y=strlen(s2);
    if(x!=y){
        if(x>y)
            printf("%s",strcat(s1,s2));
        else{
            printf("%s",strcat(s2,s1));
        }
    }else
        printf("相等");



}

 第2关:远亲不如近邻

本关要求:将任意一个大写字母,转换成小写字母并输出这个小写字母左右相邻的两个字母,以及它们的ASCII码值。

#include<stdio.h>
int main()
{
    char x,y;
    scanf("%c",&x);

    if(x>'A'&&x<'Z'){
        y=x+32;
        printf("小写字母为:%c ,ASCII码为:%d\n",y,y);
        printf("前一个小写字母为:%c ,ASCII码为:%d\n",y-1,y-1);
        printf("后一个小写字母为:%c ,ASCII码为:%d\n",y+1,y+1);

    }else if(x=='A'){
        y=x+32;
        printf("小写字母为:%c ,ASCII码为:%d\n",y,y);
        printf("后一个小写字母为:%c ,ASCII码为:%d\n",y+1,y+1);
    }else{
        y=x+32;
        printf("小写字母为:%c ,ASCII码为:%d\n",y,y);
        printf("前一个小写字母为:%c ,ASCII码为:%d\n",y-1,y-1);
    }

}

第1关:变身

将字符串s转化为整型返回。

输入格式:输入包括一行,是一个字符串(只包含数字和‘-’)。

输出格式:输出只有一行,转换后的整数。

测试说明:

测试输入: -123。 预期输出: -123

测试输入: 45。 预期输出: 45

#include <stdio.h>
#include <stdlib.h>
/*int atoi(char s[])
{
    int num = 0;
    int sign = 1;
    int i = 0;
    if(s[i] == '-')
    {
        sign = -1;
        i++;
    }
    for (;s[i] != '\0';i++)
    {
        num = num *10 + (int)(s[i] - '0');
    }
    num *= sign;
    return num ;
}*/

int main ()
{
    char a[100];
    fgets(a,sizeof(a),stdin);
    int b;
    b = atoi(a);
    printf("%d",b);
}

第5关:Y大还是y小

编写一个能实现两个字符串相互比较的小程序。

相关知识

strcmp函数

一般形式为strcmp(字符串1,字符串2)

比较规则:

对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到‘0’为止。如果全部字符相同,则认为相等;若出现不相同的字符,则以第一个不相同的字符的比较结果为准。

s1<s2时,返回为负数; 当s1==s2时,返回值=0; 当s1>s2时,返回正数。

自定义一个strcmp函数实现两个字符串比较,函数原型为int strcmp(char * p1, char *p2)

平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。

测试输入:hello hair

预期输出:hello>hair

测试输入:egg egg

预期输出:egg=egg

#include<stdio.h>
#include<stdlib.h>
int strcmp(char *p1,char *p2);
int main()
{
    char s1[100];
    char s2[100];
    scanf("%s",s1);
    scanf("%s",s2);
    //fgets(s1,sizeof(s1),stdin);
    //fgets(s2,sizeof(s2),stdin);
    if(strcmp(s1,s2)>0){
        printf("%s>%s",s1,s2);
    }else if(strcmp(s1,s2)<0){
        printf("%s<%s",s1,s2);
    }else{
        printf("%s=%s",s1,s2);
    }
}
int strcmp(char *p1,char *p2)
{
    int i=0,j=0;
    while(p1[i]==p2[i]&&p1[i]!='\0'&&p2[i]!='\0'){
        i++;
    }

    if(p1[i]>p2[i])
        return 1;
    else if(p1[i]<p2[i])
        return -1;
    else if(p1[i]=p2[i]){
        //printf("%c\n",p1[i+1]);
        //printf("%c",p2[i+1]);

        if(p1[i+1]!='\0'&&p2[i+1]=='\0'){
            return 1;
        }else if(p1[i+1]=='\0'&&p2[i+1]!='\0'){
            return -1;
        }

        return 0;
    }

  }

如果文章对你有帮助的话,可不可以点个赞鼓励以下我!!  ^o^   谢谢了!!!

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

又是被bug折磨的一天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值