两种方式实现:


1) 用scanf输入存放到一个字符数组,然后逆序拷贝到另一个字符数组,然后输出

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

int main(void)
{
    char strinput[100];
    scanf("%[^\n]", strinput); //除了换行符以外的字符全部接收

    char stroutput[100];
    int i = 0;
    int j = 0;
    int len = strlen(strinput);
    //逆序拷贝
    for (i = len - 1; i >= 0; i--)
    {
        stroutput[j++] = strinput[i];
    }
    stroutput[j] = '\0';

    printf("%s\n", stroutput);

    return 0;
}

2) 用getchar接收一个个字符存放在数组中,然后逆序putchar输出

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

int main(void)
{
    char c;
    char output[100];
    int index = 0;

    int i = 0;
    while ((c = getchar()) != EOF && c != '\n' && i <= 100)
    {
        output[index++] = c;
        i++;
    }
    //output[index] = '\0';

    for (i = index - 1; i >= 0; i--)
    {
        putchar(output[i]);
    }
    //putchar('\n');

    return 0;
}


点赞(14)
 

0.0分

89 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 51 条评论

redlantern 3年前 回复TA
@Miracle 你这循环怕是永远都推不出来了
redlantern 3年前 回复TA
@谢保闯 别人的是直接输入全部字符你这个要一个一个字符输入
TCcjx 3年前 回复TA
第一个代码,感觉画蛇添足了
#include <stdio.h>
#include <string.h>
int main()
{
    char input[101];
    scanf("%[^\n]",input);
    int num=strlen(input);
    for(int i=num-1;i>=0;i--)
    {
        printf("%c",input[i]);
    }
    return 0;
}
谢保闯 3年前 回复TA
#include<stdio.h>
#include<string.h>
int main()
{ char a[100];
 int b,i;
 for(i=0;i<100;i++)
 { scanf("%c",&a[i]);
  if(a[i]=='\n') break;
 }
 b=strlen(a);
 i=b-2;
 for(;i>=0;i--)
 printf("%c",a[i]);
return 0;
 } 
在编译器都对,为什么显示答案错误,大佬,求解,谢谢
Miracle 3年前 回复TA
大佬们,这个为什么不对呀,求解

#include<stdio.h>
int main()
{
    char str[100];
    int i=0,k;
    while(1)
    {
    	scanf("%c",&str[i]);
    	if(str[i]==10) break;
    	i++;
	}
	str[i]='\0';
	k=i-1;
	for(i=0;i<=k;i++)
	{
		printf("%c",str[k-i]);
	}
	return 0;
}
巴黎巷 3年前 回复TA
求大佬解释一下这个为什么不对,是落了哪种情况吗
#include<stdio.h>
int main (void)
{
	char s[90];
	int i=0,j;
	while((s[i]=getchar())!='\n')
	i++;
	s[i]='\0';
	for(j=i-1;j>=0;j--) printf("%c",s[j]);
	return 0;
}
巴黎巷 3年前 回复TA
@HT 利用gets函数读入字符,在读完字符之后会自动加上‘’,所以不妨把i从n开始变成从n-1开始
HT 3年前 回复TA
#include <stdio.h>
#include <string.h>
#define CH 100
int main()
{
	int i,n;
	char str[CH];
    gets(str);
	n = strlen(str);
	for(i=n;i>=0;i--)
	    printf("%c",str[i]);
	return 0;
}
为什么运行结果第一个字符是空格?
月儿会弯 3年前 回复TA
@4399 因为你没有把换行符&#039;
&#039;去掉   你可以在while语句前加一个a[--length] = a[length]-&#039;&#039;; 这样就正确了
月儿会弯 3年前 回复TA
@不打代码不开心 #include<stdio.h> int main() { 	char str[100],s,a=0; 	int i=0; 	scanf("%c",&s) ; 	while(s!=&#039;
&#039;&&i<=100)  	{ 		str[i] = s; 		i++; 		scanf("%c",&s) ; 	} 	i = i-1; 	while(i>=a&&i!=-1) 	{ 		printf("%c=%d",str[i],i); 		i--; 	} 	return 0; }