基本输入和输出函数的用法
printf() -- 将变量的内容输出到显示器上
四种用法:
- printf("字符串\n");
- printf("输出控制符", 输出参数);
- printf("输出控制符1 输出控制符2......", 参数1,参数2......);
#i存储的是二进制代码010101,而不是你看到的15
#ps: %d告诉printf()函数将变量i的二进制代码以十进制方式读取并显示
int i = 15;
printf("%d", i);
int j = 3;
printf("%d\n",i,j); // 输出结果是15,没报错,3被忽略了
int x = 47;
printf("%x\n" , x); //2f
printf("%X\n" , x); //2F
printf("%#x\n" , x); //0x2f
printf("%#X\n" , x); //0X2F 推荐使用
控制符 | 意义 |
---|---|
%d | 十进制 int short |
%o | 八进制 int short long |
%c | 字符 |
%X & %x %#X %#x |
十六进制 int short long VS OK,gcc不OK |
%p | 地址(十六进制) gcc VS 都OK |
%ld | long |
%f | float |
%lf | double |
%c | char |
%s |
为什么需要输出控制符?
- 0101组成的代码本身没有任何含义,既可以表示数据,也可以表示指令,看你如何解读。
- 如果0101组成的代码是数据,那么同样的0101代码组合以不同的输出格式输出就会有不同的输出结果。
scanf()
二、scanf()
两种用法:
- scanf("输入控制符", 输入参数);
功能:将键盘输入的字符转化为输入控制符锁规定的格式的数据,然后存入以输入参数的值为地址的变量中 - scanf("非输入控制符 输入控制符", 输入参数);
功能:功能:将键盘输入的字符转化为输入控制符锁规定的格式的数据,然后存入以输入参数的值为地址的变量中
非输入控制符必须原样输入
#include <stdio.h>
int main(void){
int i, j, k;
scanf("%d", &i); //&i表示i的地址,&是一个取地址符
scanf("m%d", &i); //m123对,123错,m123n对,输出123
printf("i = %d\n" , i);
printf("请输入三个数字,以逗号分隔:");
scanf("%d,%d,%d", &i, &j, &k);
printf("i = %d, j = %d, k = %d\n", i, j , k);
scanf("%d\n", &j); //这样写不好,不敲\n不能结束
return 0;
}
#include <stdio.h>
int main(void){
int i;
char ch;
scanf("%d", &i); //&i表示i的地址,&是一个取地址符
printf("i = %d\n" , i);
//解决下面注释行的错误问题,将前面遗留的错误数据全部清除掉
while((ch = getchar()) != '\n' )
continue;
//输入123m 会把123赋值给i,然后m赋值给j,但是m不是%d,所以报错。
int j;
scanf("%d", &j); //&i表示i的地址,&是一个取地址符
printf("j = %d\n" , j);
return 0;
}
123m可以:123 给i m给ch
int i;
char ch;
scanf("%d", &i);
printf("i = %d\n" , i);
scanf("%c", &ch);
printf("i = %d\n" , i);
如何写出高质量的scanf代码?
- 使用scanf之前最好用printf给出提示输入什么样的字符
- scanf中尽量不要带非输入控制符,尤其不要有\n
- 应该编写代码对用户的非法输入做适当的处理【非重点】
while((ch = getchar()) != '\n' )
continue;
网友评论