工作生活C语言

C语言 第3节 运算符和表达式

2019-07-04  本文已影响0人  小超_8b2f
基本输入和输出函数的用法

printf() -- 将变量的内容输出到显示器上
四种用法:

  1. printf("字符串\n");
  2. printf("输出控制符", 输出参数);
  3. 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
为什么需要输出控制符?
  1. 0101组成的代码本身没有任何含义,既可以表示数据,也可以表示指令,看你如何解读。
  2. 如果0101组成的代码是数据,那么同样的0101代码组合以不同的输出格式输出就会有不同的输出结果。
    scanf()

二、scanf()

两种用法:

  1. scanf("输入控制符", 输入参数);
    功能:将键盘输入的字符转化为输入控制符锁规定的格式的数据,然后存入以输入参数的值为地址的变量中
  2. 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代码?

  1. 使用scanf之前最好用printf给出提示输入什么样的字符
  2. scanf中尽量不要带非输入控制符,尤其不要有\n
  3. 应该编写代码对用户的非法输入做适当的处理【非重点】
    while((ch = getchar()) != '\n' )
    continue;
上一篇 下一篇

猜你喜欢

热点阅读