目录
一、关于printf和scanf
1、输入输出的概念
输入:从输入设备(如键盘、光盘、扫描仪等)向计算机输入数据
输出:从计算机向输出设备(如显示器、打印机等)输出数据
标准输入一般指键盘,标准输出一般指屏幕
2、语句
在C程序中用来实现输入和输出的主要是scanf函数和printf函数。而scanf函数和printf函数不是C语言提供的“输入输出语句”,scanf和printf只是库函数的名字。所以如果程序调用标准输入输出函数,就必须在本程序的开头用#include指令把stdio.h头文件包含到程序中,以调用库函数。形式可在我第二篇文章中找到
2.1 printf()函数
printf()的作用是将参数文本输出到屏幕。f代表format(格式化),表示可以定制输出文本的格式。
2.2.1 print输出格式
printf函数的一般格式:printf (格式控制,输出表列)
(1) 格式控制:是用双引号括起来的一个字符串,称为格式(控制)字符串。包括:
1)格式声明:将输出的数据转换为指定的格式后输出。由占位符如 %d、%f等组成
2)普通字符:如逗号、空格和换行符等
(2) 输出表列:是程序需要输出的一些数据,如常量、变量或表达式
2.2.2 占位符
所谓“占位符”,就是这个位置可以用其他值代入
#include<stdio.h>
int main()
{
printf("I have %d egges",2) //用2替换%d
return 0;
}
占位符列举:
%a:十六进制浮点数,字母输出为小写
%A:十六进制浮点数,字母输出为大写
%c:字符
%d:十进制整数。//int
%e:使用科学计数法的浮点数,指数部分的e为小写
%E:使用科学计数法的浮点数,指数部分的E为大写
%i:整数,基本等同于 %d
%f:小数(包含 float类型和 double类型)。//float %f double %lf
%g:6个有效数字的浮点数。整数部分一旦超过6位,就会自动转为科学计数法,指数部分的 e
为小写
%G:等同于%g,唯一的区别是指数部分的E为大写
%hd :十进制 short int类型
%ho:八进制 short int 类型
%hx:十六进制short int类型
%hu :unsigned short int 类型
%ld:十进制 long int类型
%lo:八进制 long int类型
%lx:十六进制 long int类型
%lu :unsigned long int 类型
%lld:十进制 long long int类型
%llo:八进制long long int类型
%llx:十六进制 long long int类型
%llu:unsigned long long int 类型
%Le :科学计数法表示的 long double 类型浮点数
%Lf:long double类型浮点数%n:已输出的字符串数量。该占位将本身不输出,只将值存储在指定变量之中
%o:八进制整数
%p:指针(用来打印地址)
%s:字符串
%u :无符号整数 (unsigned int)
%x:十六进制整数
%zd: size_t 类型
%%:输出一个百分号
2.2.3 限定宽度
2.2.3.1 对于小数以外的
#include<stdio.h>
int main()
{
printf("%6d\n",1234);
return 0;
}
%6d表示这个占位符的宽度至少为6位。
输出结果为:
可见,输出的值默认是右对齐,如果输入的值不满6位,对应的值的前面会添加空格
如果希望改成左对齐可以在占位符的%的后面插入一个-号,即
#include<stdio.h>
int main()
{
printf("%-6d\n",1234);
return 0;
}
2.2.3.2 对于小数
#include<stdio.h>
int main()
{
printf("%10f\n",1234);
return 0;
}
%10f表示输出的浮点数最少要占据10位。注:小数默认显示精度是小数点后6位
小数点也占据1位,前面需要补两个空格
那么可以限定小数点后的小数位数嘛,答案是肯定的
#include<stdio.h> int main() { printf("%6.3f\n", 1.2); return 0; }
%.3f表示限定小数点位数为3位
补充:%.3s表示可以指定输出字符串的长度
#include<stdio.h> int main() { printf("%6.3s\n", "hello"); return 0; }
2.2.4 显示符号
printf 不对正数显示+号,只对负数显示-号,如:
#include<stdio.h>
int main()
{
printf("%d\n", 1);
printf("%d\n", -1);
return 0;
}
如果想要显示正号,在%后加+即可:
#include<stdio.h>
int main()
{
printf("%+d\n", 1);
printf("%+d\n", -1);
return 0;
}
2.2 scanf()函数
2.2.1 基本用法
scanf()函数用于读取用户的键盘输入,即程序运行到这个语句时,会停下来,等待用户从键盘输入—>用户输入数据、scanf()就会处理用户的输入,将其存入变量—>按下回车键后,按照占位符对缓存进行解读
注:解读时,会从上一次解读遗留的第一个字符开始,直到读完缓存,或者遇到第一个不符合条件的字符为止。
2.2.2 基本格式
和print一样
scanf(“格式字符串”,&变量1,&变量2,...):占位符与变量一一对应
变量前需加上取地址符&,因为scanf需要变量的地址来存储输入的数据
#include<stdio.h>
int main()
{
int x;
scanf("%d",&x);
printf("%d\n",x);
return 0;
}
注:scanf()处理数值占位符时,会自动过滤空白字符,包括空格、制表符、换行符等
用户使用回车键,将输入分成几行,也不影响解读,分成四行输入,得到的结果与一行输入一样
#include<stdio.h>
int main()
{
int x,y;
float i,j;
scanf("%d%d%f%f",&x,&y,&i,&j);
printf("%d %d %f %f\n",x,y,i,j);
return 0;
}
注:占位符除了%c,都会自动忽略起首的空白字符,而%c不忽略空白字符,总是返回当前第一个字符。如果要强制跳过字符前的空白字符,要写成scanf(“ %c”,&ch),即在%c前加上一个空格,表示跳过或多个空白字符
%s:从当前第一个非空白字符开始读起,直到遇到空白字符(空格、换行符、制表符等)为止所以scanf()遇到%s会在字符串变量末尾存储一个空字符\0以表示结束。所以%s不会包含空白字符,无法读取多个单词。
2.2.3 限定宽度
使用%s占位符时,应该指定字符串的最长长度。
因为scanf()将字符串读入字符数组时,不会检测字符串是否超过了数组长度,储存字符串时很可能会超过数组的边界。
scanf("%10s",&x); //表示读取字符串的最大长度为10个字符
2.2.4 scanf的返回值
scanf的返回值是一个整数,表示成功读取的变量个数
如果没有读取任何项,或者匹配失败,则返回0
如果在成功读取任何数据之前,发生了读取错误或者遇到读取到文件结尾,则返回常量EOF(-1)
#include<stdio.h>
int main()
{
int x,y;
int r = scanf("%d %d",&x,&y);
printf("x=%d y=%d \n",x,y);
printf("r=%d",r);
return 0;
}
二、关于库函数
库函数(Library Functions)是编程语言中预定义好的、可供程序员直接调用的函数集合
1、 库函数的使用
在使用库函数之前,首先需要在源代码中引入相应的头文件。头文件通常包含了库函数的声明,告诉编译器这些函数的存在以及如何使用它们。头文件通常以.h
为后缀。
调用库函数:
double sqrt (double x)
//double 是返回值类型,表示函数的计算结果是double类型的值
//sqrt 是函数名
//x 是函数的参数,表示调用sqrt需要传递一个double类型的值
2、 库函数的学习和查看工具
assert - C++ Reference (cplusplus.com)
标签:int,scanf,long,printf,2.2,库函数 From: https://blog.csdn.net/2301_80967461/article/details/141032632