本书主要介绍C语言程序设计的结构和语法规则。分别从下面几个方面来表达:
1. C语言的概述
2. C语言的简单数据类型
3. C语言的程序结构
4. C语言的其它数据类型及其它内容
1. C语言概述
1.1 本书学习时注意的几点问题
(1) 本书学习的方法
熟悉C语言的语法规则,结合程序的基本结构,针对问题,表达解题思想,同时应该能够多上机练习,学以致用。
(2) 学习的重点
C程序设计主要讲授的是C编译环境下的语法规则,以及程序的基本结构思想,所以我们就应该着重学习这两个方面,本书没有怎么提及解题思想,所以在学习时对书中的例子要慢慢理解。
(3) 学习的疑点
C程序设计这本书整体来看,其比较难于学习的地方主要是指针及其应用和函数的形参与值参的传递这两个方面。
1.2 C程序的初步介绍
(1) C程序的构成
一个完整的C程序有一个唯一的main(),也叫主函数,和若干个(也可以没有)子函数来构成,而每个函数由若干条语句构成。
[案例1.1]由main()函数和1个其它函数max()构成的C语言程序。
/*功能:由main()函数和1个其它函数max()构成的C语言程序示例*/
int max(int x, int y)
{ return( x>y ? x : y ); }
main()
{ int num1,num2;
printf(“Input the first integer number: ”);
scanf(“%d”, &num1);
printf(“Input the second integer number: ”);
scanf(“%d”, &num2);
printf(“max=%d\n”, max(num1, num2));
}
程序运行情况:
Input the first integer number:6←┘
Input the second integer number:9←┘
max=9
几点说明
1. 函数是C语言程序的基本单位。
main()函数的作用,相当于其它高级语言中的主程序;其它函数的作用,相当于子程序。
2. C语言程序总是从main()函数开始执行。
一个C语言程序,总是从main()函数开始执行,而不论其在程序中的位置。当主函数执行完毕时,亦即程序执行完毕。习惯上,将主函数main()放在最前头。
1.3 解题思想
自顶而下、逐步细化、模块化设计、结构化编码。
1.4 源程序书写格式
1. 所有语句都必须以分号“;”结束,函数的最后一个语句也不例外。
2. 程序行的书写格式自由,既允许1行内写几条语句,也允许1条语句分写在几行上。
例如
main()
{ int num1,num2;
printf(“Input the first integer number: ”); scanf(“%d”, &num1);
printf(“Input the second integer number: ”); scanf(“%d”, &num2);
printf(“max=%d\n”, max(num1, num2));
}
如果某条语句很长,一般需要将其分写在几行上。
3. 允许使用注释。
C语言的注释格式为: /* …… */
(1)“/*”和“*/” 必须成对使用,且“/”和“*”、以及“*”和“/”之间不能有空格,否则都出错。
技巧 为避免遗漏必须配对使用的符号,例如注释符号、函数体的起止标识符(花括号)、圆括号等等,在输入时,可连续输入这些起止标识符,然后再在其中进行插入来完成内容的编辑。在起止标识符嵌套时,以及相距较远时,这样做更有必要。
(2)注释的位置,可以单占1行,也可以跟在语句的后面。
(3)如果1行写不下,可另起1行继续写。
(4)注释中允许使用汉字。在非中文操作系统下,看到的是一串乱码,但不影响程序运行。
1.5 运行一个C语言程序的一般过程

2 C语言的简单数据类型
2.1 C语言的数据类型
C语言的数据类型如下:
2.2 常量及变量
1. 常量—值不变的量,分为:字面常量和符号常量(用标识符代表一个常量),例如:345,‘a’,”man”, #define PI 3.14159 等。
2. 变量—值可以改变的量,变量的要素有变量的名称、内容和存储单元的地址构成。
3. C语言变量的使用
变量必须遵循先定义再使用的规则,变量定义的一般形式为:
类型名变量名列表;
例如
int a;
char b;
float f1,f2,f3;
变量在定义时应做到“见名知意”,变量的名称的命名遵循标识符的规则。
4. 变量的存储类别
分类
● auto变量
● static 变量
● register 变量
●外部变量
2.3 简单数据类型及其分类
简单数据类型共三种,详见下表:
几个注意的问题
(1) 整型数据的溢出问题
(2) 实型数据的误差问题
(3) 字符变量与字符串变量的存储问题
2.4 常见的运算符及其表达式
常见运算符及表达式见下表:

几个注意的问题
(1) 运算符的优先级
(2) 类型自动转换问题
2.5 C程序的语句
C程序的语句的一般形式为:
表达式;
C程序的语句分为以下五种:
1. 控制语句
控制语句完成一定的控制功能。C语言只有9条控制语句,又可细分为三种:
(1)选择结构控制语句
if()~else~, switch()~
(2)循环结构控制语句
do~while(), for()~, while()~, break, continue
(3)其它控制语句
goto, return
2. 函数调用语句
函数调用语句由一次函数调用加一个分号(语句结束标志)构成。
例如printf("This is a C function statement.");
3. 表达式语句
表达式语句由表达式后加一个分号构成。最典型的表达式语句是,在赋值表达式后加一个分号构成的赋值语句。
例如“num=5 ”是一个赋值表达式,而“num=5;”却是一个赋值语句。
4. 空语句
空语句仅由一个分号构成。显然,空语句什么操作也不执行。
例如,下面就是一个空语句:
;
5. 复合语句
复合语句是由大括号括起来的一组(也可以是1条)语句构成。例如:
main()
{ ……
{……} /*复合语句。注意:右括号后不需要分号。*/
}
复合语句的性质:
(1)在语法上和单一语句相同,即单一语句可以出现的地方,也可以使用复合语句。
(2)复合语句可以嵌套,即复合语句中也可出现复合语句。
3.C语言的程序结构
3.1 C语言的程序结构
1) C语言的程序结构类型如下:
A. 顺序结构
B. 选择结构
C.循环结构
子程序
2)三种基本结构的示意

3.2 顺序结构
特征:语句按照前后顺序依次执行,中间没有分支或跳转
例如
main()
{ int a;
printf(“\n Input the number:”);
scanf(“%d”,&a);
a=a-100;
printf(“\n The number is %d”);
}
3.3 选择结构
选择结构的两类使用关键字if和switch
A. if语句
if语句的三种形式
1) if(表达式) 语句
2) if(表达式) 语句1 else 语句2
3) if(表达式1) 语句1
else if(表达式2) 语句2
else if(表达式3) 语句3
…
else 语句n
此外,还有if语句的嵌套,所谓嵌套就是上述三种形式中的语句均可以为if 语句。
举例求一元二次方程ax2+bx+c=0 (a≠0)的根。
#include “math.h”
main()
{ inta,b,c,disc;
float x1,x2;
scanf(“%d%d%d”,&a,&b,&c);
disc=b*b-4*a*c;
if(disc==0)
{x1=-1.0*b/a/2;
printf(“\n有相同实根,实根为%f”,x1);
}
else
if(disc>0)
{x1=(-1.0*b+sqrt(disc))/2/a;
x2=(-1.0*b-sqrt(disc))/2/a;
printf(“\n x1=%f,x2=%f”,x1,x2);
}
else{
x1=-1.0*b/2/a;
x2=1.0*sqrt(-disc)/2/a;
printf(“x1=%f+%fi,x2=%f-%fi”,x1,x2,x1,x2);
}
}
B. switch语句
switch 语句是多分支选择语句,其一般形式是:
swtich(表达式)
{ case 常量表达式1:语句1
case 常量表达式2:语句2
…
case 常量表达式n:语句n
default :语句n+1
}
例如 要求按照成绩的等级打印出百分制分数段,则下列两种表达方式有何区别?
switch(grade)
{ case ‘A’: printf(“85~100\n”);
case ‘B’: printf(“70~84\n”);
case ‘C’: printf(“60~69\n”);
case ‘D’: printf(“<60\n”);
default:printf(“error\n”);
}
switch(grade)
{case ‘A’: printf(“85~100\n”);break;
case ‘B’: printf(“70~84\n”); break;
case ‘C’: printf(“60~69\n”); break;
case ‘D’: printf(“<60\n”); break;
default:printf(“error\n”);
}
3.4 循环结构
1)分类
A. goto语句
格式:goto语句标号
B. while 语句
一般形式:while(表达式)语句
C. do –while语句
格式:do 循环体语句while (表达式);
D. for语句
格式:for(表达式1;表达式2;表达式3)语句
常用表达:for(循环变量赋初值;循环条件;循环变量增值)语句
for语句的执行过程
2) 对同一个问题可以有不同的表达方式;如下例
问题:求解 1!+2!+…+20!
●用goto表达:
main()
{ int n;
longsum,s;
n=1;sum=0;s=1;
loop: s=s*n;
sum=sum+s;
n=n+1;
if (n<21) goto loop;
printf(“sum=%ld\n”,sum);
}
●用while 表达:
main()
{
int n;
longsum,s;
n=1;sum=0;s=1;
while(n<=20)
{
s=s*n;
sum=sum+s;
n++;
}
printf(“sum=%ld\n”,sum);
}
●用do~while表达:
main()
{
int n;
longsum,s;
n=1;
sum=0;
s=1;
do {s=s*n;
sum=sum+s;
n=n+1;
} while(n<21);
printf(“sum=%ld\n”,sum);
}
●用for 表达:
main()
{ int n;
longsum,s;
for( n=1,sum=0,s=1;n<=20;n++)
{
s=s*n;
sum=sum+s;
}
printf(“sum=%ld\n”,sum);
}