C++为什么空格无法输出_瑞格系统的输入输出练习

典型题目分析

s2-1 数据输入输出练习

1. 现给定从键盘中输入如下格式的数据,请编程读入该组数据,并按输入的形式输出出来。

Input

1 A 2.5DE 12

Output

1 A 2.5DE 12

对于本题,考察的是利用scanf函数完成各类数据的输入,利用printf函数完成各类数据的输出,系统中题目的说明不够清晰,输入数据中1和A中间有两个个空格,A和2.5中间有一个空格,DE和12中间是一个空格,而输出数据中1和A中间有四个空格,A和2.5中间有两个空格,DE和12中间是1个空格。

因此,需要先接收一个整数,然后再接收一个字符,再接收一个浮点型数(该数只有一位),然后接收两个字符,最后接收一个整数。接受后输出时,前来那个个整数之间用四个空格

//code 1
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a;
    char c;
    float f;
    scanf("%d %c%f",&a,&c,&f);//接收时1和A中间的空格不管多少个都由%c前的空格吃掉
    printf("%d    %c  %.1f",a,c,f);//打印时1和A中间有四个空格,A和2.5之间有两个空格
    c=getchar();
    putchar(c);
    c=getchar();
    putchar(c);
    //也可以调用两次putchar(getchar());
    scanf("%d",&a);
    printf(" %d",a);//E和12之间有个空格
    return 0;
}

如果不考虑空格数量发生变化的事情,比如输入中几个空格输出中也输出多少个空格,就可以使用下面的方法。

有同学想到了一个偷懒的解决方法,就是不根据数据的类型,只是把所有的字符都作为普通字符进行接收,然后直接打印。也就是循环接受一个字符,接受后打印,直到遇到回车换行符。代码为:

//code 2
#include <stdio.h>
#include <stdlib.h>

int main()
{   char c;
    while((c=getchar())!='n')
    {
       putchar(c);
    }
    return 0;
}

这样的代码在本机上调试的时候看不出问题,但是在瑞格上提交的时候就会显示如下图所示的错误提示:

1fe3959974d7dd64f01cae14d5e489fe.png

也就是说输出的结果中除空格和回车等字符外,其他内容都正确。一般出现这种问题,就是输出格式设计有错误。出现问题的原因在于输出中的空格个数与输入不同,输入数据中1和A中间有两个个空格,A和2.5中间有一个空格,DE和12中间是一个空格,而输出数据中1和A中间有四个空格,A和2.5中间有两个空格,DE和12中间是1个空格。因此,用这种偷懒的方法是不行滴,必须按照数据类型的不同获取数据,获取后再按照输出格式的要求输出相应的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值