文章目录
一、printf
1.1 基本用法
printf ( )的作用是将参数文本输出到屏幕。f 代表format(格式化),表示可以定制输出文本的格式。
#include<Stdio.h> //使用该函数printf,必须包含头文件<stdio.h>
int main()
{
printf("Hello World");
printf("hello world\n"); // \n换行符
return 0 ;
}
屏幕上第一行会出现"Hello World".
1.2 占位符
printf ( ) 可以在输出文本中指定占位符。
#include<stdio.h>
int main()
{
int a = 0;
printf("%d\n",a); // %d 就是占位符
return 0 ;
}
//输出值为10
%d 表示这里代入的值必须是一个整数
- printf( )的第二个参数就是替换占位符的值
常用的占位符除了%d,还有%s表示输入的是字符串。
#include<stdio.h>
int main()
{
printf("%s will come tonight\n","zhangsan"; // 字符串需要用""包括
return 0;
}
//打印结果显示为 zhangsan will come tonight
%s 表示输入的是字符串
输出的文本里面可以使用多个占位符
#include<stdio.h>
int main ()
{
printf("%s says it is %d o'clock\n","list",21)
return 0;
}
//输出结果显示为list says it is 21 o'clock
- printf( )参数是一一对应关系,如果有n个占位符,printf()的参数就应该有n +1 个。如果参数个数少于对应的占位符,printf()可能会输出内存中的任意值。
1.3 占位符列举
printf ( ) 的占位符有许多种类,与C语⾔的数据类型相对应。下面按照字母顺序,列出常用的占位符,⽅便查找,具体含义在后面章节介绍
- %d------整型
- %f------浮点数输入%lf输出%f------高精度浮点数(比较特殊)
- %s------字符串
- %c------字符
- %p------指针
- %e------科学计数法
- %g------小数或科学计数法
1.4 输出格式
printf()可以定制占位符的输出格式。
1.4.1 限定宽度
printf() 允许限定占位符的最小宽度。
#include<Stdio.h>
int main ()
{
printf("%d\n",123); //输出为"123"
printf("%5d\n",123); //输出为" 123"(最少打印5位)
printf("%05d\n",123); //输出为"00123"
printf("%5d\n",123456789); //输出为"12345"(数据如果超过5位,就按照实际位数打印)
printf("%-5d\n",123); //输出为"123 "
return 0;
}
输出的值是默认是右对齐,即输出内容前面会有空格;如果希望改成左对齐,在输出内容后面添加空格,可以在占位符的%的后面插入一个-号
1.4.2 总显示正负号
#include <stdio.h>
int main()
{
printf("%+d\n", 12); // 输出+12
printf("%+d\n", -12); // 输出-12
return 0;
}
上面实例中,%d可以确保输出的数值,总是带有正负号。
1.4.3 限定小数位数
输出小数时,有时希望限定小数的位数。举例来说,希望小数点后面只保留两位,占位符可以写
成%.2f
#include<stdio.h>
int main()
{
printf("%f\n",123.456); //输出为"123.456000"(小数打印默认后六位)
printf("%.2f\n",123.456); //输出为"123.46"
printf("%12f\n",123.456); //输出为"123.456000"
return 0;
}
1.4.4 输出部分字符串
%s 占位符用来输出字符串,默认是全部输出。如果只想输出开头的部分,可以⽤ %.[m]s指定输出的长度,其中[m] 代表⼀个数字,表⽰所要输出的⻓度。
#include<stdio.h>
int main()
{
printf("%s\n","abcdef"); //输出为"abcdef"
printf("%.3s\n","abcdef"); //输出为"abc"
return 0;
}
二、scanf
vs中首次使用scanf会报错,需要加头文件**#define _CRT_SECURE_NO_WARNINGS** (将此代码放在代码的第一行
当我们有了变量,我们需要给变量输入值就可以使用scanf函数了,如果需要将变量的值输出在屏幕上的时候就可以使用printf函数,下面看一个例子:
#include <stdio.h>
int main()
{
int score = 0;
printf("请输⼊成绩:");
scanf("%d", &score);
printf("成绩是:%d\n", score);
return 0;
}
运行截图:
图画演示:
2.1 基本用法
scanf( )函数用于读取用户的键盘输入。
程序运行到这个语句时,会停下来,等待用户从键盘输入。
用户输入数据,按下回车键后,scanf()就会处理用户的输入,将其存入变量。
scanf()语法跟printf()类似。
int i = 0;
printf("%d",&i); //&取地址
上面示例中,scanf ( ) 的第⼀个参数%d ,表示用户输入的应该是⼀个整数。%d就是⼀个占位符,%是占位符的标志,d表示整数。第⼆个参数&i表示,将用户从键盘输⼊的整数存入变量i。
下面我们看几个例子:
int main()
{
int i = 0;
int j = 0;
float x = 0;
float y = 0;
scanf("%d%d%f%f", &i, &j, &x, &y);
// 输入1 3 3.5 -4.0e3
printf("i = %d\n", i); // i = 1
printf("j = %d\n", j); // j = 3
printf("x = %f\n", x); // x = 3.500000
printf("y = %f\n", y); // y = -4000.000000
return 0;
}
scanf( )处理用户输入的原理是:用户的输入先放入缓存,等到按下回车键后,按照占位符对缓存进行解读。解读用户输入时,会从上一次解读遗留的第一个字符开始,直到读完缓存,或者遇到第一个不符合条件的字符为止。
2.2 scanf的返回值
scanf( ) 的返回值是⼀个整数,表示成功读取的变量个数。
如果没有读取任何项,或者匹配失败,则返回0。
如果在成功读取任何数据之前,发⽣了读取错误或者遇到读取到⽂件结尾,则返回常量EOF(-1)。
EOF-end of file ⽂件结束标志
int scanf的四种形式
#include<stdio.h>
int main
{
int a = 0;
int b = 0;
float f = 0.0f;
int r = scanf("%d %d %f",&a,&b,&f);
printf("a = %d b = %d f = %f\n",a,b,f);
printf("r = %d\n",r);
return 0 ;
}
2.3 占位符
scanf( ) 常⽤的占位符如下,与printf() 的占位符基本⼀致。
• %c:字符。
• %d:整数。
• %f :float 类型浮点数。
• %lf:double 类型浮点数。
• %Lf:long double 类型浮点数。
• %s:字符串。
#include <stdio.h>
int main()
{
char name[11];
scanf("%10s", name);
return 0;
}
上面实例中,name是一个长度为11的字符数组,scanf()的占位符%10s表示最多读取用户输入的10个字符,后面的字符将被丢弃,这样就不会有数组溢出的风险了。
2.4 赋值忽略符
有时,用户的输⼊可能不符合预定的格式。
#include <stdio.h>
int main()
{
int year = 0;
int month = 0;
int day = 0;
scanf("%d %d %d", &year, &month, &day); //情况一:2024 10 10
printf("%d/%d/%d",year,month,day); //输出:2024/10/10
scanf("%d %d %d", &year, &month, &day); //情况二:2024/10/10
printf("%d/%d/%d",year,month,day); //输出:2024/0/0 (报错)
return 0;
}
为了避免这种情况,scanf ( ) 提供了⼀个赋值忽略符(assignment suppression character)。
只要把*加在任何占位符的百分号后⾯,该占位符就不会返回值,解析后将被丢弃。
#include <stdio.h>
int main()
{
int year = 0;
int month = 0;
int day = 0;
scanf("%d%*c%d%*c%d", &year, &month, &day);
return 0;
}
上面示例中,% * c 就是在占位符的百分号后⾯,加⼊了赋值忽略符 * ,表示这个占位符没有对应的变量,解读后不必返回。
总结
10/30 完结
10月的最后一篇博客,本月共完成4篇笔记
制作不易,感谢投币