一.printf
1. pintf的使用:printf();
printf("hello world!");
printf()的作用是将文本参数输出到屏幕,其名字中的“f”表示format(格式化),表示可以定制输出文本的格式。
#include<stdio.h>
int main()
{
printf("打印\n");
return 0;
}
值得注意的是,printf()不会自动换行,运行结束后光标会停留在输出结束的位置,如果想要让光标换到下一行,可以在输出文本末尾添加换行符\n。
2.printf几种限制格式
限定宽度:
printf()默认是右对齐的,通过限定最小宽度,输出文本时会自动在左边补充空格。
#include<stdio.h>
int main()
{
int a = 1234;
printf("%6d\n", a);//输出为" 1234"
return 0;
}
另外,如果想使输出文本改为左对齐,可以在占位符的%后面插入一个 - 号
#include<stdio.h>
int main()
{
int a = 1234;
printf("%-6d\n", a);//输出为"1234 "
return 0;
}
限定小数位数:
printf()输出浮点数时,默认保留小数点后两位,如果想限定小数位数,可以在占位符的%后加.*实现,其中*为想被保留的小数点位数。如:%.3f表示保留小数点后三位。
#include<stdio.h>
int main()
{
float a = 3.1415926;
printf("%.3f", a);//输出结果为"3.142"
return 0;
}
限定输出部分字符串
这个用法与限定小数位数相同,作用是将默认的输出全部字符改为输出指定位数字符
#include<stdio.h>
int main()
{
printf("%.3s","abcdefg");//输出结果为"abc"
return 0;
}
显示正负号
默认情况下,printf不对正数显示+号,只对负数显示-号,如果想显示正号,可以在占位符的%号后加+号
#include<stdio.h>
int main()
{
printf("%+d",123);//输出结果为"+123"
return 0;
}
二.scanf
1.scanf的使用:scanf()
scanf()函数会读取用户的键盘输入并放入缓存区,当用户按下回车键后,scanf()会处理缓存区的数据,然后存入变量
#include<stdio.h>
int main()
{
int a;
scanf("%d", &a);
return 0;
}
上面示例中的&a表示将键盘输入的整数存入变量a
注意:scanf()函数必须提前知道用户输入的数据类型才能处理变量
2.scanf的读取
scanf()在处理数值占位符时会自动过滤空白字符,包括空格、制表符、换行符等
int main()
{
int a = 0;
float b = 0.0f;
scanf("%d%f", &a,&b);//用户输入" 12.56e6#/';565"
printf("%d\n", a);//输出"12"
printf("%f\n", b);//输出"560000.000000"
return 0;
}
如果用占位符%c则会读取开头的空格
#include<stdio.h>
int main()
{
char a;
scanf("%c", &a);//输入" ab cde"
printf("%c---------", a);//输出" ---------"
return 0;
}
如果用占位符%s则不会读取开头空格,且读到空格后读取结束
#include<stdio.h>
int main()
{
char arr[10];
scanf("%s", &arr);//输入" abc cde"
printf("%s---------", arr);//输出"abc---------"
return 0;
}
3.scanf的返回值
scanf函数的返回值是一个整数,表示成功读取的变量个数。
下面可以用一个代码进行测试
#include<stdio.h>
int main()
{
int num;
int a = scanf("%d%d%d%d", &num, &num, &num, &num);//用户输入"123 456 789 666"
printf("%d\n", a);//输出结果为"4"
return 0;
}
特殊地:如果发生了读取错误或读取到了文件结尾,则返回EOF(值为-1)
4.赋值忽略符
在占位符%后加一个*号,可以将读取的数据丢弃,可用于删除无用的输入数据
#include<stdio.h>
int main()
{
int year, month, day;
scanf("%d%*c%d%*c%d", &year, &month, &day);//输入"2023.10.27"
prinf("%d-%d-%d", year, month, day);//输出"2020-10-27"
return 0;
}
最后,感谢大家观看!