C语言 关于字符的经典操作

 1.从给定字符串中查找某指定的字符

输入样例1:

m
programming

输出样例1:

index = 7
scanf("%c",&c);
    getchar();        //吃掉一个空格,否则会被认为是字符串中的内容
    gets(b);          //受到gets输入的影响,字符串都以\0作为结尾
    for(int i=0;b[i]!='\0';i++)    //所以这里就从0开始,一直执行到等于\0时才结束
        if(b[i]==c)    //当出现一次待查询字符时,就标记一次,一直到循环结束为止
            index=i;

2.输入一个字符串,对该字符串进行逆序,输出逆序后的字符串

输入样例:

Hello World!

输出样例:

!dlroW olleH
#include <stdio.h>
#include <string.h>
int main()
{
	int a; char b[100];
	gets(b);
	for (int i = strlen(b) - 1; i >= 0; i--)
		printf("%c", b[i]);
	return 0;
}

 3.字符串替换

本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:

原字母对应字母
AZ
BY
CX
DW
XC
YB
ZA
#include<stdio.h>
#include<string.h>
int main(){
	int l,i;
	char s[85];
	gets(s);
	l=strlen(s);
	for(i=0;i<l;i++)
		if(s[i]>='A'&&s[i]<='Z')
			s[i]='A'+'Z'-s[i];
	puts(s);
	return 0;
} 

4.字符串大小写转换

strupr(a)
将字符串中的小写字母转换成大写字母
strlwr(a)
将字符串中的大写字母转换成小写字母
 

#include<stdio.h>
#include<string.h>
void main()
{
	char a[] = "aBcD", b[] = "aBcD";
	printf("%s\n%s", strlwr(a), strupr(b));

}//abcd    ABCD

5.找最长的字符串之strcpy

字符串复制函数 strcpy(),strcpy 是 string copy 的缩写
strcpy(a,b)相当于a=b,将字符串b赋给a
需要头文件string.h的支持
 

#include<stdio.h>
#include<string.h>
int main()
{
	int n,i;
	char a[100],b[100];	//a→拿来输入的,b→拿来得到最长的字符串
	scanf("%d",&n);
	getchar();	//吃掉空格or'\n'
	for(i=0;i<n;i++){
		gets(a);
		if(i==0)
			strcpy(b,a);	//第一此需复制,防止第一个就是最长的情况
		if(strlen(b)<strlen(a))	//若新来的比原来的还要长,那么就复制新来的来覆盖掉原来的
			strcpy(b,a);
	}
	printf("The longest is: ");
	puts(b);
	return 0;
}

6.按照字符ASCII码顺序从小到大排序后输出

输入样例:

dionfefh238hfifme,eekksj

输出样例:

,238deeeeffffhhiijkkmnos

#include<stdio.h>
#include<string.h>
int main()
{
    char a[85];
    gets(a);
    int i = 0;
    int len = 0;
    len = strlen(a);
    int j = 0;
    char t;           //开启冒泡排序
    for (i = 0; i < len - 1; i++)
    {
        for (j = 0; j < len - i - 1; j++)
        {
            if (a[j] > a[j + 1])
            {
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
    }
    for (i = 0; i < len; i++)
    {
            printf("%c", a[i]);
    }//此段为重点
}

7.倒序输入单词

输入样例:

Hello World   Here I Come

结尾无空行

输出样例:

Come I Here World Hello
#include<stdio.h>
#include<string.h>

int main(void)
{
    char str[500001];
    int i = 0;
    int j = 0;
    int k = 0;
    int rear = 0;
    int front = 0;
    int count = 0;
    int len = 0;

    gets(str);
    len = strlen(str);
    for (i = len - 1; i >= 0; i--)//逆向遍历   //再来一遍后i--,i位于单词最后一个字母
    {
        if (str[i] != ' ')
        {
            rear = i;//指向当前单词的最后一个字母

            for (j = i - 1; j >= 0; j--)
            {
                if (str[j] == ' ')//计算单词长度
                {
                    break;
                }
            }

            front = j + 1;//指向当前单词的第一个字母

            if (count > 0)
            {
                printf(" ");
            }

            for (k = front; k <= rear; k++)//从单词第一个字母开始打印
            {
                printf("%c", str[k]);
            }

            count++;
            i = j;//再来一遍,j位于两个单词之间的空格

        }

    }

    return 0;

}

8.中心对称的字符串 

for (i = 0; i < (n / 2); i++)
{
    if (a[i] == a[n - 1 - i])               //核心操作
}

输入说明:

每组数据有2行:第一行为整数n,表示字符的个数,n小于100;第二行为n个字符组成的字符串。

输出说明:

判断这个字符串是否是中心对称的,是输出“YES”,不是输出“NO”。

输入样例:

12

ThanksThanks

输出样例:

NO

#include<stdio.h>
int main()
{
	char a[100];
	int i, n;
	int key = 1;
	scanf("%d", &n);
	scanf("%s", a);

	for (i = 0; i < (n / 2); i++)
	{
		if (a[i] != a[n - 1 - i])
		{
			printf("NO");
			return 0;
		}
	}

	printf("YES");
	return 0;
}

冷知识:

输入abcd

char a[100];
scanf("%s", a);   ---- a="abcd"


char a[100];
scanf("%s", &a);  ----- a={'a','b','c','d','\0'}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

NO.-LL

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

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

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

打赏作者

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

抵扣说明:

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

余额充值