一、输入输出

1. scanf与printf

####(1)scanf
scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。scanf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。故在程序前面要先声明#include <stdio.h>.
scanf的一般形式: scanf(“格式控制字符串”, 地址表列); 如scanf("%d",&a);
其中,格式化字符串
格式字符串的一般形式为:
%[*][输入数据宽度][长度]类型
各部分含义:
①类型

格式 字符意义
d 输入十进制整数
o 输入八进制整数
x 输入十六进制整数
u 输入无符号十进制整数
f或e 输入实型数(用小数形式或指数形式)
f或e 输入实型数(用小数形式或指数形式)
c 输入单个字符
s 输入字符串

②“*”符
用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。如:
scanf("%d %*d %d",&a,&b);
当输入为:1 2 3时,把1赋予a,2被跳过,3赋予b
③ 数据宽度
用十进制整数指定输入的宽度(即字符数)。例如:
scanf("%5d",&a);
输入12345678只把12345赋予变量a,其余部分被截去。又如:
scanf("%4d%4d",&a,&b);
输入12345678将把1234赋予a,而把5678赋予b。
④长度
长度格式符为l和h,l表示输入长整型数据(如%ld)和双精度浮点数(如%lf)。h表示输入短整型数据。

地址列表
&是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。系统先为其变量a分配内存空间,这样变量a就有了内存地址,用&取出a的地址,把输入的数根据所取出的地址,存入内存空间。
scanf实现原理:
用户输入 -> 输入缓冲区 ->scanf
scanf只要输入缓存区有内容,就不会要求用户输入数据。
由于scanf函数本身不能显示提示串,故先用printf语句在屏幕上输出提示,如:
printf("input a,b,c:");
scanf("%d%d%d",&a,&b,&c);

(2) printf

功能是将程序运行的结果输出到屏幕上.
一般格式:
①printf("字符串\n");
②printf("字符串\n");
③printf("输出控制符1 输出控制符2…", 输出参数1, 输出参数2, …); 如:
printf("%d %d\n", i, j);//%d就是输出控制符。
输出控制符:计算机中所有的数据都是二进制 0、1 代码,所以输出的时候要用“输出控制符”告诉计算机以什么形式将二进制数据显示出来。

2. getchar与putchar

(1)getchar

从标准输入流只读取一个字符(包括空格、回车、tab),读到回车符('\n')时退出,键盘输入的字符都存到缓冲区内,一旦键入回车,getchar就进入缓冲区读取字符,一次只返回第一个字符作为getchar函数的值,如果有循环或足够多的getchar语句,就会依次读出缓冲区内的所有字符直到'\n'.
如:while((ch=getchar())!='0')
// putchar(ch);
####(2)putchar
函数putchar()用于将给定的字符输出到控制台,其原型如下:
int putchar (int ch);

二、控制结构

1.分支语句

1.1 分支分类

  • if
  • if-else
  • if-else if-else
  • switch(多分支适用)
    注意:
    if-else 就近原则配对

2.循环语句

  • while
  • for
  • do while

注意
①不可以在for循环体内修改循环变量,防止for循环失去控制(死循环)。
②建议循环控制变量的取值采用“前闭后开”写法。for(i=0; i <10; i++)
③for循环的初始化、调整、判断都可以被省略,但是如果判断部分省略掉,判断条件就恒为真,陷入死循环。