printf 函数
//函数
//printf("要打印的内容");
//一行的形式
printf("ILoveYou");
printf("ILoveYou""IMissYou""HaHa");
//多行的形式 每行都需要有"" 代码格式分为多行 但实际输出并没有多行
printf("ILoveYou"
"IMissYou"
"HaHa");
/*输出*/
ILoveYouILoveYouIMissYouHaHa
printf("ILoveYou\n"
"IMissYou\n"
"HaHa\n");
/*输出*/
ILoveYou
ILoveYou
IMissYouHaHa
printf("ILove\r123"); //打印123时回到当前行首,当前行前面有东西,采用覆盖的方式
/*输出*/
123 e //123'\0'e //有一个不可见字符'\0'字符串结束标记 打印出来没有任何效果
常用的转义字符 | 效果 |
---|
\n | 换行 | \r | 换行(回到当前行首),判断按键是否是回车键 | \t | 水平制表 |
?制表的原理: 通过控制数据的输出宽度,不足8位填充空格,超过8位以16位制表,1个 ' \t ' 8位两个' \t '16位
?汉字:占用两个位置
?普通字符:占用一个位置
printf("姓名\t年龄\t编号\t");
printf("大白\t18\t1001\t");
printf("姓名\t\t年龄\t编号\t");
printf("12345678\t18\t1001\t");
/*输出*/
姓名 年龄 编号
大白 18 1001
姓名 年龄 编号
12345678 18 1001
打印特殊符号
//printf("""); 报错
printf("\"\t\'");
printf("\\"); //两个\打印一个'\' 不能是3个'\' 会和注释混在一起
printf("%%"); //特殊符号和转义字符无关 两个%打印一个%
/*输出*/
" '\%
数据的输出
-
格式控制字符: 占位符 -
不同的数据类型有不同的控制字符 -
数据的顺序必须要和占位符的顺序一致
int %d
char %c
float %f
double %lf
字符串 %s 指针类型
unsigned int %u
printf("a=%d,b=%c",1,'A');
a=%d,b=%c
1, 'A'
a=1,b=A
//一般情况: 占位符的个数是要和后面数据个数相同
printf("整数:%d,字符:%c,字符串:%s",1,'a',"iloveyou");
int iNum = 3;
char cNUm = 'N';
printf("iNUm = %d,cNum = %c\n",iNum,cNum);
/*输出*/
整数:1,字符:a,字符串:iloveyou
iNUm = 3,cNum = N
%+a.bf
%-a.blf
a:输出数据的宽度,不足补空格
b:小数位
+: 右对齐 ,不写,默认是右对齐
-: 左对齐
printf("%3.3lf\n",1.3345); //有效小数位数是3位 最后一位5没有打印,四舍五入往前进了一位
printf("%10.3lf\n",1.3345); //输出数据的宽度是10位
//通过输出数据的宽度 自己制表
printf("%-10s%-10s%-10s\n","姓名","年龄","编号");
printf("%-10s%-10s%-10s\n", "12345678","18","1001");
/*输出*/
1.335
1.335
姓名 年龄 编号
12345678 18 1001
scanf函数
#include <stdio.h>
int main()
{
//No.4 不同数据类型输入
//数字和字符组合在一起
int iNum;
char xNum;
double dNum;
printf("input int,char,double:");
//scanf自动区分数据,不需要人为区分:字符和浮点数之间不需要加空格
scanf("%d %c%lf", &iNum, &xNum, &dNum); //1 A 3.13为了避免数据出错强制加一个空格
printf("iNum=%d,xNum=%c,dNum=%lf\n", iNum, xNum, dNum);
printf("input int,char,double:"); //输入数据的格式必须是这个格式
//%d,%c,%lf
//scanf("%d,%c,%lf", &iNum, &xNum, &dNum);
//printf("iNum=%d,xNum=%c,dNum=%lf\n", iNum, xNum, dNum);
scanf_s("%d %c%lf", &iNum, &xNum,1, &dNum);//多个字符输入用scanf_s
printf("iNum=%d,xNum=%c,dNum=%lf\n", iNum, xNum, dNum);
//No.1 输入单个数据
printf("input a num:");
//习惯:定义变量的时候给变量初始化(赋初始值)
int num = 0; //定义变量赋值为0
int result = 0; //返回值被忽略 scanf的返回值:输入数据的成功个数
result=scanf("%d", &num); //等待键盘输入
printf("num=%d\n", num);
//No.2 输入多个数据
int a, b;
printf("input a,b:");
result=scanf("%d%d", &a, &b); //格式控制字符中没有空格但是可以输入空格|或者用回车当作数据的间隔|在字符输入时会有影响
printf("a=%d,b=%d\n",a,b);
//scanf("%d\n", &a); 没有这种写法
float fNum;
//scanf("%.3f", &fNum); 没有这种写法
//No.3 字符输入
char cNum;
char x;
printf("input a char:");
//getchar(); //常用
scanf("%c", &x); //接收字符再做输入 清除缓冲区的\n x等于'\n'
//fflush(stdin); //被淘汰
//setbuf(stdin); //会影响文件操作
//这个两个等效上面scanf的作用
scanf("%c", &cNum);
printf("cNum=%c\n", cNum);
printf("input a char:");
scanf("%c", &x); //没有停在字符输入的位置--->'\n'直接给了字符
scanf_s("%c", &cNum, 1); //长度一般用变量能够存储的数据长度--->能够存储的数据长度
printf("cNum=%c\n", cNum);
//字符串--字符数组;
return 0;
}
/*输出*/
input int,char,double:1 //多个输入中间有字符导致出错的原因:把空格当做字符去处理
A
1.23
iNum=1,xNum=A,dNum=1.230000
input int,char,double:1
e
1.34
iNum=1,xNum=e,dNum=1.340000
input a num:3
num=3
input a,b:2
4
a=2,b=4
input a char:A
cNum=A
input a char:C
cNum=C
字符处理函数
getchar函数
putchar函数
getch函数
#include <stdio.h>
#include <conio.h>
int main()
{
//NO.2 getch
int userKey = 0;
userKey = _getch(); //不需要回车确认,输入完就可以做交互
//想象玩游戏上下左右键的处理
putchar(userKey);
//scanf_s scanf,getchar 都需要回车确认输入
//No.1 getchar() putchar()
int number;
printf("input a number:");
scanf_s("%d", &number);
printf("number=%d\n", number);
int iNum;
printf("input a char:");
//int x;
//scanf("%c", &x); //定义一个x接收换行
getchar(); //输入一个字符,不做处理用来清空缓冲区(清除\n) C6031:返回值被忽略"getchar"
iNum=getchar(); //getchar():输入一个字符,getchar() 表示输入的字符 然后把输入的字符赋值给iNum
//上面这句话等效: scanf("%c",&iNum);
printf("iNum=");
putchar(iNum); //打印iNum
putchar('\n'); //等效printf("\n");
return 0;
}
/*输出*/
2input a number:3
number=3
input a char:e
iNum=e
ASCLL码的知识
用于做整数和字符的转换
字符存储在计算机中是一个数字,不同的字符对应不同的编码:ASCLL码,ASCLL码表代表了字符在计算机中的数据是多少
字符 A:65,字符 a:97,大写和小写之间相差 32,字符 0~9:48~57
int main()
{
//No.1 基本转换
printf("%c\n",65); //用%c的方式打印整数--->格式控制字符和数据不一致|默认通过ASCLL码表把65转换为字符
printf("%d\n",'A');
//No.2 常用形态
int a = 'A';
printf("%d\n",a); //自动把'A'转换为65--->用%d的方式打印a就是65
//2.1大小写转换--->任何大写字母和小写字母的间距是一样的 相差32--->相应的大写字母65+32==小写字母97
char number = 'A'; //把大写'A'转换为'a'
putchar(number + 32);//打印小写'a'--->打印字符|把97转换为小写a打印出来
putchar('\n');
//任何两个大、小写字母之间的间距是相同的
//'A'-'a'=number-x;
//x=number+'a'-'A';
number = 'A';
putchar(number + 'a' - 'A');
putchar('\n');
//2.2字符1转数字1
char first = '1';
int one = first -'0';//因为字符0-9是连续的
printf("%d\n",one);
printf("打印:\101\n");//特殊的格式控制字符: 65的八进制--->\ddd:1到3位八进制所代表的任意字符
}
/*输出*/
A
65
65
a
a
1
打印:A
|