关于C语言输入输出的逗号问题(小细节)

C语言的输入输出必须要遵循scanf和printf的格式,就是你是什么格式你就要输入什么。

 

一、输入问题

#include <stdio.h>
int main()
{  	int a,b;
    scanf("%d,%d",&a,&b);
	printf("a+b=%d",a+b);
    return 0;
}

 这个程序我们可以看到它运行的结果是错误的!为什么呢,因为我们在scanf中已经指定了输入格式,输入格式是两个数中间用逗号隔开,所以我们输入时也必须在输入的两个数之间加逗号隔开,我们再次输入试一下

这样就对了!哪假如把逗号改成别的字符,还需要输入别的字符吗?

#include <stdio.h>
int main()
{  	int a,b;
    scanf("%d+%d",&a,&b);
	printf("a+b=%d",a+b);
    return 0;
}

 我们把","改成了"+",我们再试试直接用空格隔开两个数,看看结果对吗?

 答案是错的,那我们在输入的两个数之间加入逗号呢?

答案还是错的,最后我们试着也在输入的时候在两个数之间加入"+"。

哇哦!答案终于对了!所以我们可以得出一个结论就是scanf中的输入格式是什么样的,我们输入时也就必须和其中格式完全一致,否则就会出现读取错误。 

我们平时的输入一般以空格隔开,一般不会以逗号隔开,所以我们将程序改成我们日常习惯的输入然后再试试结果。

#include <stdio.h>
int main()
{  	int a,b;
    scanf("%d %d",&a,&b);
	printf("a+b=%d",a+b);
    return 0;
}

我们将程序改成这样,我们再输入试试。

没问题了!那我们要是把scanf中的空格去掉呢?

#include <stdio.h>
int main()
{  	int a,b;
    scanf("%d%d",&a,&b);
	printf("a+b=%d",a+b);
    return 0;
}

我们把程序改成这样,按理是不是我们输入的时候不用空格直接连着输入两个数呢?不!如果你输入三位数,这样程序怎么知道你是把前两位赋值给了a,还是把前1位赋值给了a呢?这样会造成歧义,所以如果scanf中两个%d之间什么也不加就是默认空格隔开了,我们再试一下程序看看!

好的!没有问题!这样我们就搞清了输入格式。 

 二、输出问题

先看这样一个程序,猜猜它的输出是什么。

#include <stdio.h>
int main()
{  	int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
	printf("a=%d,b=%d,c=%d",a,b,c);
    return 0;
}

你猜对了吗?

有了上面输入问题的铺垫相信大家都可以很快明白为什么是这样输出了。 

那我们再试着去掉逗号看看,把程序改成这样。

#include <stdio.h>
int main()
{  	int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
	printf("a=%db=%dc=%d",a,b,c);
    return 0;
}

输出自然也是紧挨的。

那我们如果在之间加上空格呢?把程序修改成下面这样。

#include <stdio.h>
int main()
{  	int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
	printf("a=%d b=%d c=%d",a,b,c);
    return 0;
}

看看输出

哇哦!输出之间也有了空格,所以我们可以得出结论:输入scanf下的%d之间,因为输入歧义性问题有空格和无空格实际上是一样的,而输出的printf下的%d之间,如果有空格就输出空格,如果没有就不输出。 

总结

总之,无论输入与输出,都遵循着一定的格式,我们必须严格按照我们自己所规定的格式进行输入输出,否则就会造成不小的麻烦。细节决定成败,态度决定高度。让我们一起加油!

  • 25
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马看到什么是人决定的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值