字符串顺序的转换11

从键盘输入 不到十个字符(0-9,a-z),将英文位颠倒,数字不变,

定义一个数组记录所有字符位的下标,然后收尾下标对应字符逐个交换即可

int main() {
	int i = 0;
    int count;
    scanf("%d',&count);
	char ch[10];
	for (i = 0; i < count; i++)
		scanf_s("%d", &ch[i]);
	char flag[10] = { 0 };
	int n = 0;
	for (i = 0; i < count; i++)
		if ((ch[i] >= 'a' && ch[i] <= 'z') || (ch[i] >= 'A' && ch[i] <= 'Z'))
		{
			flag[n] = i;
			n++;
		}
	if (n > 1)
	{
		for (i = 0; i < n / 2; i++)
		{
			int t = ch[i];
			ch[i] = ch[n - i - 1];
			ch[n - i - 1] = t;
		}
	}
	return 0;
}

 

#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int inverse(char *str1)
{
	int length = 0;
	char *p1 = NULL;
	char *p2 = NULL;
	if (str1 == NULL)
	{
		return -1;
	}
	length  = strlen(str1);
	p1 = str1;                 //指针指向字符串的开头;
	p2 = str1 + (length - 1);  //指针指向字符串的最后一个;
	while (p1 < p2)
	{
		char c = *p1;
		*p1 = *p2;
		*p2 = c;
		++p1;
		--p2;
	}
	return 0;
}
int  main(void)
{
	char buf[10];
	printf("输入字符串:");
	scanf("%s",&buf);
	inverse(buf);
	printf("反转后的字符串:%s\n", buf);
	system("pause");
	return 0;
}

指针的实现方式,性能更好,容易理解。

 

思路:

1、申请两个数组A和B,A存输入字符串,B存A的逆序。
2、for循环将A中字符替换为B中相同下标的字符。

代码仅供参考:

#include <stdio.h>
#include <string.h>

int main(void )
{
    char str[10] = {0};
    printf ("Please input a string: ");
    scanf ("%s", str);
    int len = strlen (str);
    if (len > 10) {
        printf ("Out of range!!!\n");
        return -1;
    }

    // 逆序字符串str,并将结果存到str2中。
    char str2[11] = {0};
    int count = 0;
    for (int i = 0;i < len ;i ++) {
        if (str[i] >= 'a' && str[i] <= 'z') {
            str2[count] = str[i];
            count ++;
        }
    }
    //将上一个for循环最后多加的一次减掉
    count --;
    //将str2中的字符赋值给str中对应位置的字符。
    for (int i = 0;i < len;i ++) {
        if (str[i] >= 'a' && str[i] <= 'z') {
            str[i] = str2[count];
            count --;
        }
    }
    //输出进行字符逆序操作后的字符串
    printf ("After: %s\n", str);

    return 0;
}

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632