www.f4nn/
第二章 C语言程序结构
在学习本章前先看个实例,主要的目的就是认识C语言,熟悉C语言的编写环境。
/*输入三个整数然后从小到大依次输出*/
#include "stdio.h"
main()
{int a,b,c,n;
printf("请输入3个整数:\n");
scanf("%d%d%d",&a,&b,&c);
if(b>c) {n=b;b=c;c=n;}
if(a>c) {n=a;a=c;c=n;}
if(a>b) {n=a;a=b;b=n;}
printf("\n从小到大:%d\t%d\t%d\n",a,b,c);
getch();
}
运行结果:
请输入3个整数:
6
8
5
从小到大:8 6 5
分析:
在这个程序中,我们先看到的是#include "stdio.h", 这是C语言的预处理命令我们会在后面讲到,其次
就是main()主函数,每个源文件只有一个主函数main()。下面行是定义了4个变量,a,b,c,n分别是变量的
标识符,int是数据的存储类型,声明它们是整型的变量。下面使用了库函数中的输入和输出函数printf
()和scanf(),其中的'\n'是输出回车的转义字符,'%d'是格式控制字符,'&'是取地址字符,即把输入的
数放到a,b,c中。底下我们用到判断语句if,最后还有getch()函数,它的作用是获得运行结果。
main()的格式如下:
main()
{声明部分;
执行部分;
}
程序中用到的{}可以理解成语句的组合,即多条语句同时运行,构成程序段;
在这个程序中还有逗号','和分号';',我们根据这个案例来讲一下C语言重点的介绍:
1,标识符
如程序中的a,b,c,n;我们在学习C语言时需要给变量、常量、自定义函数等起个名字,用来标识铭记,方
便我们对其所标识的内容进行各种操作。通俗的讲,它就是用来标识我们在C语言中能进行操作的对象。
比如函数、变量,以及用#define进行宏定义等。
标识符的定义规范
标识符由‘1~9’‘A~Z’‘a~z’和下划线'_'组成,但标识符的头一个字符不能为数字,例如:A56对,
_125对 a2D对 5JG错0_D错。
不成形的定义规则:
局部变量定义,在定义变量时,为了能‘见名知意’,尽量使用英文或英文缩写定义变量,也可以汉语拼
音以及拼音缩写,例如用来存储数据的成绩变量可以写成:scrore chengji chj等。
序列法:我们在变程时往往会遇到能组成序列的变量,例如定义用来存储三种书数量的变量:book1
book2 book3;
据有相对性的定义:
比如我们要定义一个学生的数学成绩和英语成绩:stu_math stu_eng 在使用时能更容易的明白目标。!
全局变量:
在定义全局变量时我们通常把标识符的第一个字母写成大写,以跟局部变量区分。如定义一个变量来存储
其和:Sum 其平均数:Aver
宏定义和类型定义
我们在使用宏定义(#define)和类型定义(typedef)时,其标识符一般都采用大写字母。宏定义时采
大写是为了与变量区分,类型定义时采用大写
是为了与C语言中的类型名区分。例如:
#define PI 3.14
关于#define和typedef的使用方法我们分别在第 章和第 章会详细讲解。
这些不成形的规则在ANSI中并没有明文规定,但在编程的过程中,为了不会把不同的含义的标识符混搅,
为了编写程序的构造简洁,通俗易懂,所以希望读者养成良好的编写习惯。
2,逗号与分号
1)分号
在程序中还用到好多逗号','。C语言规定,每条件语言后面都要跟一个分号,表示
逗号在C语言中分为逗号表达式和逗号运算符。它的主要作用是变量的分隔,如定义多个同一类型的变量
:int a,b,c;
还有就是出现在参数表列中,如:
用于表达式:
它可以将两个表达式连接起来,进行顺序求解,格式为:
表达式1,表达式2;
它先求解表达式1再求解表达式2比如:
int a=6,b;
a=a*6,b=a;
这段程序有两个“,”,第一条语句可以写成:
c语言中逗号表达式的用法int a=6;
int b;
可见C语言的灵活性,第二条语句也用到了逗号,当然也起分隔的作用,但在这个应式是个表达式,它的
作用在于使多个运算表达式进行依次执行。
2)分号
在这个程序中,几乎每条语句后面都跟着一个';',C语言规定,每条语句后面都要跟';'号。在执行程序
中,遇到分号表示这个条语句结束,如果在一条语句后忘了加分号,那么程序会出现错误。
3,运算符
C语言提供的运算符非常丰富。在语言中所有有操作都要用到运算符。比如给变量赋值等等,C语言的运算
符可大概分为以下几类:
算术运算符(+-*/%)
关系运算符(<,>,>=,<=,==,!=)
逻辑运算符(!,&&,||)
位运算符(~,^,>>,<<)
条件判断运算符(?
分量运算符(.,->)
数组运算符(*,&)
求字节数运算符(sizeof)
特殊运算符((),"",[],.等等)
复合运算符(++,--,+=,-=,*=,/=,%=,~=,^=,|=)
算术运算符:有加法+减法-乘法*除法/和取余%;跟数学一样加法和减法还有正数和负数的意思。
关系运算符:大于(>),小于(<),大于等于(>=),小于等于(<=),等于(==),不等于(!=);主要用于判断语句
if和多分支选择语句switch中。
逻辑运算符:逻辑非(!),逻辑与(&&),逻辑或(||);“逻辑与”相当于生活中说的“并且”,就是两个条件
都同时成立的情况下“逻辑与”的运算结果才为“真”。“逻辑或”相当于生活中的“或者”,当两个条
件中有任一个条件满足,“逻辑或”的运算结果就为“真””逻辑非“就是指本来值的反。
复合运算符:++自加1,--自减1,+=加等于,-减等于...例如:
i++  i=i+1
++i  i+1=i
i--  i=i-1
i+=2  i=i+2
i*=5  i=i*5
其他运算符不再介绍,我们在学习中用到的时候会详细讲解
在程序运行时,系统是跟据运算符依次运行的,在这里只对运算符做简单介绍,关
于运算符的优先级可参
考附录一。例如:
a=b+c;
系统会先算出b+c的值然后将值赋给a,而不会先让a=b再去加c。
运算符还分为单目双目和三目运算符,这是跟据运算符运算对象的多少而定的,比单目运算符只有一个运
算对象:
a++;
双目运算符有两个运算对象:a=b;
条件运算符是唯一的三目运算符,我们会在第五章讲到。
a>b?a++,c=a;/*如果a大于b,那么a自增1,否则c=a;
4,变量和常量
1)变量:
变量是指在程序运行的过程中其值能改变的具有特殊属性的存储单元。我们用标识符来存储变量的值。它
由变量名和变量值组成,变量名就是一个标识符。
变量的定义:
基本类型 标识符;
前面已经介绍过基本类型种类和标识符的使用方法。
我们应该知道,不同类型变量中的数据在内存中的存储占用的字节数是不同的。int整型的变量在内存内
存中占两个字节,float实数型变量在内存占用四个字节。char字符型在内存中占用一个字节,因为它
存储一个字符。
int a;
float b;
char c;
关于不同类型变量的使用和定义我们会在第二章详细讲解。
2)常量:
常量相对来说比较容易理解的,它由数字常量(1~9),字符常量('A~Z' 'a~z'和'_')和特殊字浮组成。应
该注意的在C语言以及其他编程语言中,大写字目跟小写字母不是一回事,它们所对应的ASCII值是不同的
(见附录一)比如:A不是或不等于a。
常量也可以用标识符来表示,比如:
#define PI 3.14
此时,PI就是个符号常量,因为在程序运行时它的值不能被改变,即在程序中哪有PI哪就是3.14。
5,函数介绍
在C语言中,是以函数来实现程序的模块化,一个大型的C语言的程序都是由一个主函数和若干个子函数组
成,在以后编写的程序中,往往会把一个程序分成块编写。子函数之间是可以相互调用的。但子函数是不
能调用主函数的。比如我们要编写一个存储学生信息的小程序,我们需要有一个存储新同学信息的函数,
有一个查询学生信息的函数,还需要有一个删除退学学生信息的函数,这样不就实现模块化了吗?
一个完整的程序其函数可以有无数个,但主函数只有一个,我们通过主函数来调用子函数,关于函数的使
用我们会在第章会详细讲解,再次只做简单介绍。下面我们来看一个简单的函数调用实例,但不必会用,
只需明白其使用的简单格式即可:
程序分析:
/*简单的函数调用 案例:*/
#include<stdio.h>
main()
{void shuchu1();
void shuchu2();
shuchu1();
shuchu2();
shuchu1();
getch();
}
void shuchu1()
{printf("--------------------------\n");
}
void shuchu2()
{printf("简单的函数调用\n");
}
运行结果:
--------------------------
简单的函数调用
-
-------------------------
程序分析:
首先声明两个函数:shuchu1(),shuchu2()为void ;void表示无类型,也可以说是无返回值。函数跟变量
一样先定义,后使用。看完上面那个案例我想你已经知道函数定义结构了。关于函数我们会在第六章详细
讲解。
6,指针介绍
指针是C和C++的特,学习指针是C语言学习最重要也是最难的知识点,所以我们在指针的学习中需要多
分析案例,多上机调试。
什么是指针变量?
指针变量直接指向的是地址。
指针的地址调用分直接调用和间接调用两种。比如,
int a;
a=10/*直接使用的地址*/
int a;
int *p;/*声明p为基本型指针*/
*p=&a;/*将指针变量p指向a的地址,为取地址*/
p=10;/*间接给a赋值*/
关于指针变量的声明和定义,以及使用方法会在第章详细讲解。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。