关于多组输入的问题

首先先来看几道关于多组输入的题!

描述

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的线段图案。

输入描述:

多组输入,一个整数(1~100),表示线段长度,即“*”的数量。

输出描述:

针对每行输入,输出占一行,用“*”组成的对应长度的线段。

从上述例题中我们不免看出用到了一个while循环 但while循环里面为什么会用到scanf 函数呢?

下面我们就将这两个函数展开 来分析一下 

while循环

while循环的一般形式为:

while(表达式)

{
    语句块
}

意思是先判断表达式(循环条件)的值,当表达式里面的值为真(非0)时,执行“语句块”(循环体);执行完“语句块”,再次计算表达式的值,如果为真,继续执行“语句块”,直至表达式的值为假(0)。跳出循环,执行while后面的代码。

下面咱们再说一下scanf()语句 

scanf 是 scan format 的缩写,意思是格式化扫描,也就是从键盘获得用户输入,和 printf 的功能正好相反。

下面看一个例子:

 输出结果:

 从键盘输入2,按下回车键,scanf() 就会读取输入数据并赋值给变量 a;本次输入结束,接着执行下一个 scanf() 函数,再从键盘输入 3,按下回车键,就会将 3 赋值给变量 b,都是同样的道理。

第 8 行代码中,scanf() 有两个以空格分隔的%d,后面还跟着两个变量,这要求我们一次性输入两个整数,并分别赋值给 c 和 d。注意"%d %d"之间是有空格的,所以输入数据时也要有空格。对于 scanf(),输入数据的格式要和控制字符串的格式保持一致。

与printf 不同的是scanf 的变量前要带一个&符号。&称为取地址符,也就是获取变量在内存中的地址。

数据都是以二进制保存在内存中,为了方便管理我们给每个字节分配一个编号,这个编号就叫做地址。对于int a  就是分配四个字节的空间。我们要使用&去获得他们的地址,scanf会根据地址吧读取到的数据写入内存中。        

同时scanf 还有一个重要的东西 返回值 我们看下面的代码

 有没有发现一个神奇的现象其输出的结果是3.

那当我们输入两个数字呢

当我们不输入呢 ,我们用输入错误数据类型来代替

 输出结果是0 

因此得出结论其返回值是你有效输入的个数。

对了还有一个很重要的就是EOF ,也就是end of file,字面意思也就是文件结束。通常EOF被定义为-1。

需要注意的是,EOF并不是一个实际的字符或整数值,而是一个特殊的标志,用于指示文件结束或输入流结束的状态。

在不同的操作系统和编译器中,EOF的值可能会有所不同,但通常都是一个负整数(通常为-1)。因此,将函数的返回值与EOF进行比较,可以跨平台地判断文件结束。

现在我们知道了while循环的原理和scanf 的返回值  再加上EOF,我们把三个结合起来就是多组输入while(scanf("%d",&a)!=EOF

{

}

今日鸡汤:今日事,今日毕

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值