C printf和scanf & 多组输入

目录

1.关于库函数scanf的相关介绍

2.多组数据的输入

2.1   EOF法

2.2   计数法

2.3   特殊值法

3.如何停止输入


1.库函数printf

1.printf() 用于格式化输出到屏幕。printf() 函数在 "stdio.h" 头文件中声明。

2.关于返回值:这个函数的返回值是其打印输出功能的附带用途,在检查输出错误时可能会用到。

#include<stdio.h>
int main()
{
    int bph2o = 212;
    int rv;
    rv = printf("%d F is water's boiling point.\n", bph2o);  //把printf返回值赋给rv
    printf("%d", rv);
    return 0;
}

//输出结果为:212 F is water's boiling point.
             32  //32是上一个输出的所有字符数,包括空格和不可见换行符'\n'

3.printf中" "中的内容换行会被报错。

解决方案:

①使用多个printf函数,注意不要用\n,这样下一个printf内容就能接续上去。

②用反斜杠(/)和Enter(或Return)键组合来断行。

③ANSI C引入的字符串连接。在两个用双引号括起来的字符串之间用空白隔开,C编译器会把多个字符串看成一个字符串。因此,下面三个形式是等效的:

printf("hello, young lovers, wherever you are.");

printf("hello, young"  "lovers "   ", wherever you are.");

printf("hello, young lovers"   
", wherever you are.");

注:"young""lovers"等于"younglovers"

只有"young"  "lovers"才等于"young lovers"。

2.库函数scanf

1.描述:从标准输入 stdin 读取格式化输入。

2.声明:说明scanf返回值是int类型的数据。

int scanf(const char *format, ...)

3.关于返回值:

①如果成功,该函数返回成功匹配和赋值的个数。

②如果到达文件末尾或发生读错误,则返回 EOF。

4.scanf在读取字符串的时候,遇到空格便不再读取。

3.多组数据的输入

2.1   EOF法

1.先看代码:

#include <stdio.h>
 int main()
 {
 	int a,b;
 	while(scanf("%d%d",&a,&b)!=EOF) 
    //while一定不要有分号,否则你就会发现你无限输入但并不输出
 	{
 		printf("%d\n",a+b);
	}
 	return 0;
 }

2.方法原理介绍:因为在线评测系统的输入数据存放在一个文件中,因此可以通过文件是否结束的方式判断输入的数据是否结束。scanf在读取到文件结束符时,会返回标识EOF(end of life),EOF是一个预定义的常量,等于-1。通过判断scanf的返回值否为EOF决定是否退出循环。

2.2   计数法

1.先看代码:

#include <stdio.h>

int main()
{
    int T;
    int a;
    scanf("%d",&T);     //这里T为要输入数据的组数
    while(T--)     //这里的T每次减1知道为0,结束循环
    {
        scanf("%d",&a);
        printf("%d ",a);
    }
    return 0;
}

//当然除了while,用for自增也是可以的

 #include <stdio.h>
 int main()
 {
 	int T;
    int i;
 	scanf("%d",&T);    //T为你要输入的数据组数
 	for(int i=1;i<=T;i++)     //这里i从1开始,一直输入到你需要的组数T,结束循环
 	{
 		int a
 		scanf("%d",&a);
 		printf("%d\n",a);
	 }
 	return 0;
 }
、

2.方法原理介绍:通过循环的方式,先确定你要输入的数据组数,然后循环输入数据直到达到你预先设定的数据组数为止结束循环。

2.3   特殊值法(标兵法)

1.先看代码:

#include<stdio.h>

int main()
{
    int a;
    scanf("%d", &a);
    while(a != 0)    //这里的0是我规定的特殊值,也可以是别的值
    {
        printf("%d", a);
        scanf("%d", &a);   //输出后再次输入,继续进入循环
    }
    return 0;
}

2.方法原理介绍:输入的数据为某个你规定的特殊值的时候,不满足循环条件,停止下一次输入。

4.如何停止输入

1.windows平台,即dos命令窗口:输入CTRL+Z即为文件结束。

注:VS要输入三次这个命令(按一次命令后要按次回车)(目前原因未知)

2.其它平台,如Unix, Linux,Mac等:输入CTRL+D即为文件结束。

猜你喜欢

转载自blog.csdn.net/2303_77414881/article/details/131798515