本节主要讲解
- 结构化输出函数printf
- 结构化输入函数scanf
一、printf与占位符
printf的作用是在屏幕上输出文字
它有两种用法:
1. 直接输出字符串
#include<stdio.h>
void main()
{
printf("你好"); //将输出“你好”
}
“字符串”就是被双引号包裹起来的文本内容。
字符串和char类型的区别:
- 字符串用双引号,char类型用单引号
- 字符串的内容可以为空,char类型不能
- 字符串中可以有多个文字,char类型中只能有一个
- 字符串中有中文,char类型中没有中文
2.输出格式化字符串
#include<stdio.h>
void main()
{
printf("你好,我叫%s", "小明");
}
上面的代码会输出:
你好,我叫小明
名词解释
- %和字母的组合称为占位符,它的作用是先占住一个固定的位置,等着你在里面添加内容,最后,计算机会用相应的数据替换掉占位符。
- 格式化字符串可以简单理解为带有占位符的字符串
例如上面的%s是字符串占位符,又因为它是第一个出现的占位符,所以它代表了格式化字符串后的第一个字符串。以此类推,第二个出现的占位符代表了格式化字符串后的第二个数据…
printf基本用法
printf("格式化字符串", 变量1, 变量2, 变量3...);
常用占位符 (printf和scanf通用):
占位符 | 说明 |
---|---|
%c | 字符 |
%d | 有符号十进制整数 |
%u | 无符号十进制整数 |
%o | 无符号八进制整数 |
%x | 无符号十六进制整数 |
%f | 十进制小数 |
%s | 字符串 |
%p | 指针 |
%%代表一个普通百分号
例子
void mian()
{
printf("大家好,我是练习了%f年的%s,我喜欢%s", 2.5, "小明", "唱、跳、rap、篮球");
}
输出结果:
大家好,我是练习了2.5年的小明,我喜欢唱、跳、rap、篮球
二、printf的其他用法
1. 设置输出文字的长度
格式为:%num占位符 (num表示一个整数)
-
正数表示如果长度不够在前面补空格
-
负数表示如果长度不够在后面补空格
#include<stdio.h>
void main()
{
printf("%3d", 1);
printf("%3d", 1);
printf("\n");
printf("%-3d", 1);
printf("%-3d", 1);
}
以上代码运行结果为:
2. %.数字f :表示要保留几位小数
- 结果会四舍五入
- 如果小数位数不够会在后面补0
#include<stdio.h>
void main()
{
printf("%.3f\n", 3.14159); //保留3位小数
printf("%.10f\n", 3.14159); //保留10位小数
}
以上程序运行结果
三、结构化输入scanf
scanf与printf用法类似,它的作用是将用户的输入赋予给相应变量:
scanf("格式化字符串", &变量1, &变量2...);
注意:不要忘记变量名前的“&”
#include<stdio.h>
void main()
{
int a;
printf("请输入一个数:");
scanf("%d", &a);
printf("你刚才输入的数是:%d", a);
}
运行结果:
输入多个变量的方式:
-
将多个数据用空格或“,”隔开,再按Enter键
-
重复输入数据并按Enter键
#include<stdio.h>
void main()
{
int a, b, c;
printf("请输入三个数:");
scanf("%d%d%d", &a, &b, &c);
printf("你刚才输入的三个数分别是:%d, %d, %d", a, b, c);
}
代码运行结果:
小练习
还记得吗?我们上节写了一个“将小写字母转换为大写字母”的程序。
现在把它用printf和scanf重写一遍。
答案
#include<stdio.h>
void main()
{
printf("请输入一个小写字母:");
char a; // 声明一个char型变量a
scanf("%c", &a); // 获取输入的字符
a = a - 32; // 让a减去32
printf("%c\n", &a); // 输出转换后的字符
printf("程序结束");
}
好了,文章到这里就结束了,我们下一节再见
每周五晚20:00更新