C语言基础、printf、scanf、格式符、字符输入输出函数

C语言基础、printf、scanf、格式符、字符输入输出函数

1. 起步

#include <stdio.h>
    
int main() {
    printf("Hello!\n")
        
    return 0
}

2. printf 输出函数、格式符

表1 printf 函数中用到的格式字符

格式字符说 明
d, i带符号的十进制整数输出
o以八进制无符号整数输出
x, X以十六进制无符号整数输出
u无符号十进制整数输出
c以字符形式输出,只输出一个字符
s输出字符串
f以小数形式输出单、双精度,隐含输出6位小数
e, E以指数形式输出实数
g, G选用 %f 或 %e 格式中宽度较短的方式输出

表2 printf 函数中用到的格式附加符

字 符说 明
l长整型整数,可加在格式符 d、o、x、u之前
m数据最小宽度
n小数位数或截取的字符个数
-输出的内容在域内靠左

① %d 用来输出一个有符号的十进制整数

printf("%d", 6);

// 1. 可以在声明中指定输出数据的域宽,例如:
printf("%5d", 12);
printf("%5d", -345);
// 输出的数据显示在 5 列区域的右侧
// 输出结果为:
//    12
//  -345

// 2. 输出 long 类型数据,需要在格式符 d 前面加字母 l 使用 %ld
// long long 类型的则需要加两个l , %ll

② %c 用来输出一个字符

// 1. 与 %d 一样可以指定域宽
// 2. 如果用来输出一个 0~127 范围的数字(即一个字节,8位),系统会找到该数字在 ASCII 码中对应的字符输出,例如:
	short a = 121;
	printf("%c", a);
// 输出 y

// 如果数字超过一个字节,%c 也只看最后一个字节
	short a = 377;
	printf("%c", a);
// 输出 y

③ %s 用来输出一个字符串

	short a = "china";
	printf("%s", a);
// 输出 china

④ %f 用来输出实数(包括单精度、双精度、长双精度)

// 1. 基本型 %f
// 只能得到 6 位小数
	double a = 1.0;
	printf("%f", a/3);
// 输出 0.333333

// 2. 指定数据宽度和小数位数,用 %m.nf,例如:%7.2f 表示输出数据占7列,其中包括2位小数,对其后一位采用四舍五入的方法处理。
// 如果把小数位数指定为 0 ,则不会输出小数。例如:
	printf("%7.0f", 0.5);
// 输出 0

	printf("%20.15f", 1.0/3);
// 输出 0.333333333333333

注意:在用 %f 输出时,要注意数据本身能提供的有效数字,如 float 型数据的存储单元只能保证6位有效数字。double 型数据只能保证15位有效数字。例如:

	float a = 1000/3.0;
	printf("%f", a);
// 输出 3333.333252
// 本应输出 3333.33333333
// 3. 数据向左靠齐 %-m.nf

⑤ %e 以指数形式输出实数。如不指定数据宽度和小数位数,系统自动指定小数位6位,指数位5位。其中e也可以写成大写E。

	printf("%e", 123.456);
// 输出 1.234560e+002   共13位

也可以使用 %m.ne 指定数据宽度和小数位数,例如:

	printf("%13.2e", 123.456);
// 输出      1.23e+002   共13位(前面4个空格)

其他格式符

​ %i 作用与 %d 相同,按十进制整数实际长度输出。一般习惯用 %d 而少用 %i

​ %o 以八进制整数输出

​ %x 以十六进制整数输出
​ %u 无符号以十进制整数输出

​ %g 用来输出浮点数,系统自动选 %f 或 %e 格式输出,选择长度较短的格式

3. scanf 输入函数、格式符

表3 scanf 函数中用到的格式字符

格式字符说 明
d, i输入有符号的十进制整数
o输入无符号的八进制整数
x, X输入无符号的十六进制整数
u输入无符号的十进制整数
c输入单个字符
s输入字符串
f输入实数,可以用小数或指数形式
e, E, g, G与 %f 作用相同

表2 scanf 函数中用到的格式附加符

字 符说 明
l输入长整型整数,可加在格式符 d、o、x、u、f、e之前
h输入短整型数据,可加在d、o、x
域宽输入数据所占宽度
*本输入项在读入后不赋给相应的变量

与 printf 不同,scanf 函数中的格式控制后面应当是变量地址,而不是变量名。

	scanf("%f %f %f", &a, &b, &c);
	printf("%f %f %f", a, b, c);

输入的数据必须与 scanf 函数 “” 中的内容相同,例如:

    scanf("a=%f,b=%f,c=%f", &a, &b, &c)
    // 则在输入时也要输入 a=1,b=2,c=3

在使用 %c 格式输入时,空格和转义字符都作为有效字符输入,例如:

	scanf("%f%f%f", &a, &b, &c)
    // 如果输入 1 2 3 (中间有空格)
    // 实际输出会是 a=1  b=空格  c=2

在输入数值时,如果遇到不属于数值的字符,会认为该数据结束。例如:

	scanf("%d%c%f", &a, &b, &c)
    // 如果输入 1234a123o.26
    // 实际输出会是 a=1234  b=a  c=123

4. 字符输入输出函数

putchar(变量名) 输出单个字符

	char a = 'B', b = 'O', c = 'Y';
	putchar(a);
	putchar(b);
	putchar(c);
// 输出 BOY

	int a = 66, b = 79, c = 89;
	putchar(a);
	putchar(b);
	putchar(c);
// 输出 BOY

getchar() 输入单个字符

char a,b,c;
a=getchar();
b=getchar();
c=getchar();

相关书籍:《C程序设计》 谭浩强著

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值