C语言概述
C程序的结构

C语句分类
- 表达式语句
- 函数调用语句
- 控制语句
- if语句、switch语句、do while语句、while语句、for语句、break语句、goto语句、continue语句、return语句
- 复合语句
- 空语句
while(getchar()!='\n'){;}
输入输出
在C语言中的实现
- 在C语言中,所有的输入/输出都是由库函数完成,都是函数语句
- 在使用C语言库函数时,需要使用预编译命令
#include <头文件>
或#include "头文件"
,将有关"头文件"包括到源文件中
- stdio即standard input & output
- 使用printf和scanf函数时,可以不加"stdio.h"
字符数据的输入输出
- putchar函数,需包含"stdio.h"
- getchar函数,需包含"stdio.h"
- getchar函数只能接收单个字符,输入数字也按字符处理,输入多余一个字符时,只接收第一个字符
格式输入输出
- 一般形式
printf("格式控制字符串",输出表列)
"%d"
按十进制整型输出,"%ld"
按十进制长整型输出,"%c"
按字符型输出
- 格式字符串
[标志][输出最小宽度][.精度][长度]类型
- 类型:类型字符用以表示输出数据的类型
d
:输出十进制带符号整数(输出正数不带符号)
u
:输出十进制无符号整数
0
:输出八进制无符号整数(不输出前缀)
x、X
:输出十六进制无符号整数(不输出前缀)
f
:输出小数形式单、双精度实数
e、E
:输出指数形式单、双精度实数
g、G
:以%f或%e中较短的输出宽度输出单、双精度实数
c
:输出单个字符
s
:输出字符串
- 标志
-
:结果左对齐,右边填空格
+
:输出符号(正号或负号)
空格
:输出值为正时冠以空格,为负时冠以负号
- 对c,s,d,u类无影响
- 对o、x类,在输出时加前缀
- 对e,g,f类,当结果有小数时才给出小数点
- 输出最小宽度:用十进制整数来表示输出的最少位数
- 精度:以"."开头,后接十进制整数
- 输出数字,则表示小数的位数
- 输出字符,则表示输出字符的个数
- 若实际位数大于精度,则截去多余部分
- 长度
顺序结构
#include
int main(){
int a = 0;
int b = 0;
a = 5;
b = 4;
{
int a = 6;
printf("%d\n",a);
a++;
printf("%d\n",a);
++b;
}
printf("%d\n",a);
printf("%d\n",b);
return 0;
}

选择结构
条件语句
- if语句
if(a==0){
b--;
a++;
}
- if…else语句
if(a==0){
b--;
a++;
}
else{
b++;
a=0;
}
- if…else if语句
if(条件表达式1) 语句1;else if(条件表达式2) 语句2;...;else 语句n
if(a==0){
b--;
a++;
}
else if(a==1){
b++;
a++;
}
else if(a==2){
b+=2;
a++;
}
else{
b--;
a=0;
}
- if语句嵌套
if(条件表达式) if语句;
if(条件表达式) if语句1;else if语句2;
if(a==0){
if(b==0){
a++;
b++;
}
b++;
}
if(a==0){
if(b==0){
a++;
b++;
}
else if(b>1){
a++;
b--;
}
}
- switch语句
- 若case后无break语句,则会继续执行随后的所有case语句
- switch后括号中表达式可以是整型、字符型、枚举型
- case后各常量表达式值不能相同
switch(表达式){
case 常量表达式1:语句1(集合);
case 常量表达式2:语句2(集合);
...
case 常量表达式n:语句n(集合);break;
default:语句n+1;
}
switch(x){
case 0: a++;break;
case 1: b++;break;
case 2: a--;break;
case 3: b--;break;
default: break;
}
- 条件运算符和条件运算表达式
表达式1?表达式2:表达式3
- 表达式1值为真,以表达式2值作为条件表达式的值,否则以表达式3值作为条件表达式的值
a==0?b=1:b=2;
if(a==0)
b=1;
else
b=2;
循环结构
三种循环语句
- while语句
while(~scanf("%d",&a))
while(scanf("%d",&a)!=EOF)
- do…while语句
- for语句
for(表达式1;表达式2;表达式3){循环体语句;}
- for语句三个表达式不是必须的
- 可在循环体中执行break,continue,goto语句
- 表达式2为空,即死循环
中断语句
- break语句
- continue语句
- 只用于结束本次循环,即直接去执行表达式3,进行下一次循环
- goto语句(了解)