MockerOvO 2022-06-05 10:08 采纳率: 89.9%
浏览 11
已结题

为什么在程序里自己打的时候,ABC*是一起输入的,为什么不是一个一个输入,他明明用的是getchar和putchar,但一个个输入答案不对

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

递归题目是输入ABC*,问输出的结果是什么?
结果为ABC**CBA

img

  • 写回答

1条回答 默认 最新

  • FanSky_Qs 2022-06-05 11:34
    关注

    getchar()函数机制
    在调用getchar()函数时,编译器会依次读取用户键入缓存区的一个字符(注意这里只读取一个字符,如果缓存区有多个字符,那么将会读取上一次被读取字符的下一个字符),如果缓存区没有用户键入的字符,那么编译器会等待用户键入并回车后再执行下一步
    (注意键入后的回车键也算一个字符,输出时直接换行)。
    而putchar()是直接把刚刚获取的字符打印出来。所以说你这样直接把get和put连接一起写可以说有很大漏洞。
    getchar()回车也算字符,然后putchar又是及时打印的。
    如果用getchar还需要处理空格。
    建议还是这样写

    #include <stdio.h>
    int main(){
        char c[5];    
        scanf("%s",&c);//获取ABC* 
        printf("%s",c);//先把ABC*打印出来 
        for(int i=3;i>=0;i--){//for循坏逐个打印*CBA(倒序) 
            printf("%c",c[i]);//注意此处为逐个输出单个字符,要用%c 
        }
        return 0; 
    }
    

    img

    如果还有什么问题欢迎提出!

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月13日
  • 已采纳回答 6月5日
  • 创建了问题 6月5日

悬赏问题

  • ¥15 mmocr的训练错误,结果全为0
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀