基本的输入和输出函数的用法
printf的用法
printf() --将变量的内容输出到显示器上
四种用法
-
printf("字符串"); ------ 双引号内部可以是英文、中文等任意字符
-
printf("输出控制符",输出参数);
-
printf("输出控制符1 输出控制符2...",输出参数1,输出参数2,...);
输出控制符和输出参数的个数要一一对应
1 # include<stdio.h> 2 3 int main() 4 { 5 6 int i = 100; 7 printf("%x",i);//输出结果为64 8 printf("%#x"i);//输出结果为0x64 9 printf("%#X",i);//输出结果为0X64 推荐这种写法 10 11 return 0; 12 13 }
-
printf("输出控制符 非输出控制符",输出参数); 非输出控制符内容会原样输出,不会改变
1 # include<stdio.h> 2 3 int main() 4 { 5 6 int i , j; 7 i = 3; 8 j = 5; 9 printf("i = %d,j = %d\n",i,j);//为了程序易读性,可以这么写,输出结果为i = 3,j = 5 10 11 return 0; 12 13 }
输出控制符如下:
-
%d --- int
-
%ld --- long int
-
%c --- char
-
%f --- float
-
%lf --- double
-
%x(X或者%#X); --- int 或long int 或short int
-
%o --- 同上
-
%s --- 字符串
-
为什么需要输出控制符
-
01组成的代码可以表示数据也可以表示指令
-
如果01组成的代码表示的是数据的话,那么同样的01代码组合以不同的格式输出就会有不同的输出结果
测试:
如果在printf参数中,输入参数加入取地址符&,那么就会输出该变量地址的十进制数
1 # include <stdio.h> 2 3 int main() 4 { 5 int i; 6 7 scanf("%d",&i); 8 9 printf("i = %d",&i); 10 return 0; 11 } 12 /* 13 如果在printf参数中,输入参数加入取地址符&,那么就会输出该变量地址的十进制数 14 15 结果为 : 16 输入字符为2 17 i = 6487628 18 -------------------------------- 19 */
scanf的用法
scanf()[通过键盘将数据输入到变量中]
两种用法:
-
scanf("输入控制符",输入参数);
功能:将从键盘输入的字符转化为输入控制字符所规定格式的数据,然后存入以输入参数的值为地址的变量中
-
scanf("非输入控制字符 输入控制符",输入参数);
功能:将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中
如何使用scanf编写出高质量的代码
-
使用scanf之前最好先使用prinf提示用户以什么样的方式来输入,便于让用户知道需要做什么
-
scanf中尽量不要使用非输入控制符(因为只有输入对应非输入控制符,才能输出,并且无实际意义,降低了使用体验),尤其是不要用\n(因为需要输入\n,指令才会执行)
1 # include <stdio.h> 2 3 int main() 4 { 5 int i; 6 char ch; 7 8 scanf("%d",&i); 9 printf("i = %d\n",i); 10 scanf("%c",&ch); 11 printf("ch = %c\n",ch); 12 13 return 0; 14 } 15 /* 16 C语言中规定,解析到正确格式的字符后转换对应格式存入变量,解析失败放回输入,再次解析时,从失败的位置重新读取 17 18 1.如果输入1,那么输出为i = 1; 19 20 2.如果输入m,那么就会输出 i = 0 21 22 3.如果输入1m,那么输出为 i = 1,因为编译器识别到一串字符后,就会去一一解析, 23 当识别到与输入控制符不一样字符后,就停止解析(然后m不会丢弃,如果下面有一个char的打印,那么就会打印输出),然后将前面的字符转换成相应格式存入变量中 24 */ 25
-
应该编写代码对用户的非法输入做适当的处理(非重点)------此条指令在DEC -C++无法执行,在研究
while( (ch=getchar())! ='\n') continue;