输出 printf
- puts():只能输出字符串,并且输出结束后会自动换行
- putchar():只能输出单个字符, 不换行
- printf():可以输出各种类型的数据
printf() 是最灵活、最复杂、最常用的输出函数,可以取代上面两种:
小数的输出
#include <stdio.h>
#include <stdlib.h>
int main()
{
float a = 0.00001;
float b = 3000000;
float c = 12345678.84;
float d = 11.229338455;
printf("a=%g \nb=%g \nc=%g \nd=%g\n", a, b, c, d);
printf("c=%e\n", c);
/*
%g以最短的方式来输出小数,让输出结果更加简练。所谓最短,就是输出结果占用最少的字符。
但是比较长时有损失数据的问题出现
%e是科学计数法输出数字,最多八位底数,多余8位会损失数据
*/
/*
小数赋值给整数类型时,会丢掉小数部分
整型赋值给小数会在,小数点后加0
%f 和 %lf 默认保留六位小数,不足六位以 0 补齐,超过六位按四舍五入截断。
*/
int f = 123.0123f;
printf("%d\n", f);
double g = f;
printf("%lf\n", g);
return 0;
}
printf() 的高级用法
%[flag][width][.precision]type
-
type 表示输出类型,必须有
-
.precision 表示输出精度,也就是小数的位数
-
width 表示最小输出宽度,占几位
-
flag 是标志字符。
#include <stdio.h>
int main()
{
int a1 = 20, a2 = 345, a3 = 700, a4 = 22;
int b1 = 56720, b2 = 9999, b3 = 20098, b4 = 2;
int c1 = 233, c2 = 205, c3 = 1, c4 = 6666;
int d1 = 34, d2 = 0, d3 = 23, d4 = 23006783;
printf("%-9d %-9d %-9d %-9d\n", a1, a2, a3, a4);
printf("%-9d %-9d %-9d %-9d\n", b1, b2, b3, b4);
printf("%-9d %-9d %-9d %-9d\n", c1, c2, c3, c4);
printf("%-9d %-9d %-9d %-9d\n", d1, d2, d3, d4);
printf("\n");
printf("%9d %9d %9d %9d\n", a1, a2, a3, a4);
printf("%9d %9d %9d %9d\n", b1, b2, b3, b4);
printf("%9d %9d %9d %9d\n", c1, c2, c3, c4);
printf("%9d %9d %9d %9d\n", d1, d2, d3, d4);
return 0;
}
%-9d中,d表示以十进制输出,9表示最少占9个字符的宽度,宽度不足以空格补齐,-表示左对齐。综合起来,%-9d表示以十进制输出,左对齐
输入 scanf
- scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。
- getchar()、getche()、getch():这三个函数都用于输入单个字符。
- gets():获取一行数据,并作为字符串处理。
- scanf 是 scan format 的缩写,意思是格式化扫描,也就是从键盘获得用户输入,和 printf 的功能正好相反。
- scanf() 不会跳过不符合要求的数据,遇到不符合要求的数据会读取失败,而不是再继续等待用户输入。
- 对于 scanf(),输入数据的格式要和控制字符串的格式保持一致。
- scanf 的变量前要带一个&符号。&称为取地址符,也就是获取变量在内存中的地址。
#include <stdio.h>
int main()
{
char letter;
int age;
char url[30];
float price;
scanf("%c", &letter);
scanf("%d", &age);
scanf("%s", url); //可以加&也可以不加&
scanf("%f", &price);
printf("26个英文字母的最后一个是 %c。\n", letter);
printf("C语言中文网已经成立%d年了,网址是 %s,开通VIP会员的价格是%g。\n", age, url, price);
char author[30], lang[30], url[30];
scanf("%s %s", author, lang);
printf("author:%s \nlang: %s\n", author, lang);
scanf("%s", url);
printf("url: %s\n", url);
return 0;
}