首页 > 试题广场 >

字符逆序

[编程题]字符逆序
  • 热度指数:288555 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
将一个字符串str的内容颠倒过来,并输出。

数据范围:

输入描述:

输入一个字符串,可以有空格



输出描述:

输出逆序的字符串

示例1

输入

I am a student

输出

tneduts a ma I
示例2

输入

nowcoder

输出

redocwon
#include <stdio.h>
#include "string.h"
int main()
{
    char str[10000];
    scanf("%[^\n]",str);//这将使scanf函数可以读取空格,而非遇到空格结束读取。
    int i,length = strlen(str);
    for(i = length - 1; i >= 0; --i)
    {
        printf("%c", str[i]);
    }
}


编辑于 2024-03-28 00:37:05 回复(0)
#include <stdio.h>

int main() {
    char ch;
    int len;
    char str[10001] = {0};
    while (scanf("%c", &ch) != EOF) {
        str[len++] = ch;
    }

    for (int i = len - 2; i >= 0; i--) {
        printf("%c", str[i]);
    }
    return 0;
}
发表于 2023-08-17 15:25:41 回复(1)
#include <stdio.h>
#include<string.h>

int main() {
    char a[10000],b[10000];
    int i,len;
    gets(a);
    len=strlen(a);
    for(i=0;i<len;i++)
    {
        b[i]=a[len-1-i];
    }
    puts(b);
    return 0;
}
就是把b字符串和a字符串的字符从后往前一一对应,再输出就行了
发表于 2023-03-19 21:43:39 回复(0)
#include <stdio.h>
#include <string.h>

int main() {
    char arr[10000]={};
    scanf("%[^\n]",arr);
    int len = strlen(arr);
    //printf("%d\n",len);
    for(int i=len-1;i>=0;i--){
        printf("%c",arr[i]);
    }
    printf("\n");
    return 0;
}

此处尝试了一下关于正则的使用,目前还没有系统的学习正则表达式,不过这道题还可以用gets函数处理scnaf所不能处理的空格问题
发表于 2023-01-01 16:43:22 回复(0)
#include<stdio.h>
//将一个字符串str的内容颠倒过来,并输出。
int main()
{
	char str[10000] = { 0 };
	//字符串中可能有空格,不能直接用scanf
	//scanf遇到空格就结束读取了

	//我们这里用gets函数来读取
	gets(str);
	int len=strlen(str);//求出字符串长度,中间的空格也会被算进去
	for (int i = len-1;i >= 0;i--)
	{
		printf("%c", str[i]);
	}
	return 0;
}

发表于 2022-08-08 15:44:51 回复(0)
发表于 2022-07-08 11:21:41 回复(0)
#include <stdio.h>

int main()
{
   char arr[10001] ={0};
    int i = 0;
   do
    {
        scanf("%c",&arr[i]);
        i++;
    } while(arr[i-1] !='\n');
    int j = 0;
    for(j = i-2;j>=0;j--)
    {
        printf("%c",arr[j]);
    }
   
  
    return 0;
}
发表于 2022-07-07 22:08:05 回复(0)
#include <stdio.h>
#include <string.h>
#define    N    10000
int main()
{
    char str[N],temp;
    gets(str);
    int right=strlen(str)-1,left=0;
    while(left<right)
    {
        temp=str[left];
        str[left]=str[right];
        str[right]=temp;
        left++;right--;
    }
    printf("%s\n",str);
    return 0;
}

发表于 2022-04-26 18:18:55 回复(0)
c语言实现,代码写的长些,主要是为了拆分模块,方便移植,调用
#include "stdio.h"
#include "string.h"

#define null 0
void show(char* str,int len)
{
    for(int i=0;i<len;i++)
    {
        //注意要把操作符这些给规避掉,不然打印时会引起格式不对,例如打印回车,就会空一行出来,或者传入参数时手动丢弃回车符
        if(*(str+i) != '\n')
        printf("%c",*(str+i));
    }
}
char* str_overturn(char* str,int len)
{
    if(len > 10000)
    {
        printf("error");
        return null;
    }
    char input_string[10000] = {0};
    char *s = input_string;
    for(int i=0;i<len;i++)
    {
       *(s+i) = *(str + len - 1 - i);
    }  
    return s;
}

int main()
{
    char input_string[10000] = {0};
    fgets(input_string,sizeof(input_string),stdin);
    char* str = str_overturn(input_string,strlen(input_string)-1);
    show(str,strlen(str));
    return 0;
}
发表于 2022-01-27 17:29:17 回复(0)
#include "stdio.h"
#include "string.h"
//双指针法
int main(void)
{
    char str1[100];
    int length, i, right, left;
    char temp;
    left = 0;
    gets(str1);
    right = strlen(str1)-1;
    while(left<right){
        temp = str1[left];
        str1[left] = str1[right];
        str1[right] = temp;
        left++;
        right--;
    }
    printf("%s",str1);
}

发表于 2021-09-13 16:55:41 回复(0)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char Buff[100];
    char cTmp;
    int cnt = 0;
    
    while(scanf("%c",&cTmp) != EOF)
    {
        if(cTmp != '\n')
        {
            Buff[cnt++] = cTmp;
        }
        else
        {
            for(int i = cnt-1; i >= 0; i--)
            {
                printf("%c",Buff[i]);
            }
            printf("\n");
            cnt = 0;
        }
        
        
        
    }
    return 0;
    
}

发表于 2021-09-03 09:38:09 回复(0)
C语言书上的例子吧,倒叙输出字符数组内容即可
#include<stdio.h>
int main(){
    char in[100];
    gets(in);
    for(int  i=strlen(in)-1;i>=0;i--){
        printf("%c", in[i]);
    }
}
发表于 2021-08-08 11:51:58 回复(4)
int main()
{
    char a[100];
    int n,i;
    char temp;//中间变量
    gets(a);

    n=strlen(a);
    for(i=0;i<(n/2);i++){
        temp=a[i];
        a[i]=a[n-i-1];
        a[n-i-1]=temp;
    }

    puts(a);
    return 0;
}
发表于 2021-08-04 00:16:41 回复(0)