codeup 字符串处理 问题 F: 数组逆置

题目描述

输入一个字符串,长度小于等于200,然后将数组逆置输出。(字符串中可能有空格)

输入

测试数据有多组,每组输入一个字符串

输出

对于每组输入,请输出逆置后的结果

我的解答

#include <stdio.h>
 
int main(){
    char c,str[210];
    int i=0;
    while(scanf("%c",&c) != EOF){
            if(c != '\n'){
                str[i++]=c;
            }
            else{
                while(i){
                    printf("%c",str[--i]);
                }
                if(i != 0)   printf("\n");//注意换行
                i=0;
            }
           // if(i>=200)  return 0;
    }
    return 0;
}

结果

已在网上看到很多人用gets直接读取一行解决,但我更想逐个字符解决,不知道为什么总是答案错误。

你题目的解答代码如下:

#include <stdio.h>

int main(){
    char c,str[210];
    int i=0;
    while(scanf("%c",&c)>0){//改成>0
            if(c != '\n'){
                str[i++]=c;
            }
            else{
                while(i){
                    printf("%c",str[--i]);
                }
                printf("\n");//注意换行
                i=0;
            }
           // if(i>=200)  return 0;
    }
    return 0;
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

换getchar()试试:

#include <stdio.h>
int main() {
    char c, str[201];
    int i = 0;
    while ((c = getchar()) != EOF) {  //修改
        if (c != '\n') {
            str[i++] = c;
        }
        else {
            while (i) {
                printf("%c", str[--i]);
            }
            if (i != 0)   
                printf("\n");//注意换行
            i = 0;
        }
        // if(i>=200)  return 0;
    }
    return 0;
}

把输入输出截图发出来啊