课题:如何实现利用while循环和scanf输入函数实现多组输入

文章介绍了C语言中scanf函数的使用,特别是其返回值在处理不确定数量的数据输入时的作用。通过示例展示了当需要对未知数量的数对进行加法运算时,如何利用scanf的返回值判断何时结束输入,并提供了两种解决方案,利用while循环条件来实现多组数据的处理。
摘要由CSDN通过智能技术生成

    今天我们来聊一聊我们C语言当中经常会用到的一个函数scanf函数,它是一个输入函数,作用简单来说就是:向一个变量地址里面传值。函数最基本格式就写作:scanf("%格式符“,&变量),而即便是这样一个比较简单的结构,也蕴藏着很多我们可能不知道的操作方法。

    1.提出问题及分析问题:

   我们知道,scanf可以依次给各个变量地址进行传值操作,但是如果有一天有一个人给你抛出这么一个问题:我要对多组数据进行加法运算的操作,每次操作我都要得到两个数据的和的值,但是我事先并不清楚我数据的个数,请你帮我编写程序实现这么一个逻辑。

    eg:输入:1 2 3 4 5 6        输出:3 7 11——依次是1+2,3+4,5+6的结果,那么这里你能不能控制变量的个数来控制这个输入,显然不现实,因为我们之前说了,我们事先并不清楚我读入了多少个数据······这里其实你对scanf的返回值有一定了解的话,这种问题就可以迎刃而解了!

    2简单介绍一下scanf的返回值

    在cpp reference官网上面你可查询到,scanf函数是有返回值的,它的返回值是int类型,这个返回值如何确定呢,分为一下两种情况:

     1.通过scanf正常读取到数据,此时scanf的返回值总是与它读取到的数据个数保持一致。

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

  运行结果1:

 运行结果2:

 

测试说明:作者的scanf输入不同数据通过逗号加以区分的,各位读者也可以尝试用空格加以区分,那么这个时候计算机怎么知道你只读取一个数据的情况呢,很简单,键盘上Ctrl+Z就可以了!

2.通过scanf一个数据都没有得到:这个时候它会返回0吗?不对它会给你返回一个EOF(end of file的缩写,在标准C语言里面规定,这个值的大小为-1):

    最后的总结:scanf函数啊,我们不难发现,只要形式确定了,它的返回值的可能取值也就确定了下来。eg:你写了一个scanf("%d %d",&a,&b);那么这个scanf就有三种可能的返回值,分别是:2,1,-1。

    3.提出解决方案:

    因此我们可以就上面那个问题,提出下面两种解决方案:

    解决方案1:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a, b;
	int sum;
	while (scanf("%d,%d", &a, &b) == 2)
	{
		sum = a + b;
		printf("%d\n", sum);
	}
	return 0;
}

   解决方案2:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a, b;
	int sum;
	while (scanf("%d,%d", &a, &b) != EOF)
	{
		sum = a + b;
		printf("%d\n", sum);
	}
	return 0;
}

运行结果:

    这样我们就清楚了,我们可以通过我们所学的知识和while循环来实现数据的多组输入,问题也就得到了解决,谢谢大家!

  • 16
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值