1、 C语句概述C程序源程序文件1源程序文件2源程序文件n预处理命令函数n函数1数据声明函数首部函数体数据声明执行语句 C+程序的编写和实现源程序源程序(文本文件)(文本文件)*.C目标文件目标文件(二进制文件)(二进制文件)*.OBJ可执行文件可执行文件(二进制文件)(二进制文件)*.EXE库文件库文件(各种函数)(各种函数)有些编辑系统,可直接从源程序编译连接至可执行程序,有些编辑系统,可直接从源程序编译连接至可执行程序,F7编译编译连接连接compilelink C语言的基本元素一、符号集(字符集)一、符号集(字符集)C语言使用的基本符号共有如下五种:(1)大写字母:A-Z (3)阿拉伯数字
2、0-9(2)小写字母a-z (4)下划线:(5)标点符号和运算符 C语言的基本元素语言的基本元素二、标识符二、标识符 用来标记常量、变量、函数及文件名字的字符序列用来标记常量、变量、函数及文件名字的字符序列 标识符的构成规则:标识符的构成规则:以字母(大小写都可以)或下划线开头以字母(大小写都可以)或下划线开头 随后可跟若干个(包括随后可跟若干个(包括0个)字母、数字、下划线个)字母、数字、下划线 标识符的长度各个系统不同,最好不要超过标识符的长度各个系统不同,最好不要超过8个字符个字符 注意:区分大小写注意:区分大小写,如:如:sum,SUM是两个不同的标识符是两个不同的标识符C语言的基本元
3、素三、关键字(p375)也称“保留字”它是c语言中具有特定含义、专门用作语言特定成分的一类标识符 ANSI推荐的C语言的关键字是32个(Turbo c另扩展了11个)如:main、int、char、float、define等 注意:注意:所有的关键字都有特定的含义不能用作它用 所有的关键字都必须小写如:else 和ELSE 有不同含义else是关键字,ELSE可是用户定义的标识符 C的数据类型数据是操作的对象,数据类型是指数据的内在表现形式(代码、存储、运算)数据是操作的对象,数据类型是指数据的内在表现形式(代码、存储、运算)C C语言提供了以下一些数据类型:语言提供了以下一些数据类型:4.1
4、 C语句概述 n语句:语句:用来对数据进行加工(完成操作任务),是构成程序的基本单位用来对数据进行加工(完成操作任务),是构成程序的基本单位通常一个通常一个c c程序由若干函数(系统,用户)组成程序由若干函数(系统,用户)组成每个函数由若干条语句组成,每条语句总是以每个函数由若干条语句组成,每条语句总是以“;”结束。结束。nC C语句的分类:语句的分类:简单语句 分三大类 复合语句 空语句 表达式语句表达式语句 函数调用语句函数调用语句 结构控制语句结构控制语句结构控制语句结构控制语句n 构成循环的语句:构成循环的语句:whilewhile语句实现循环语句实现循环 do-whiledo-whi
5、le语句实现循环语句实现循环 for for 语句实现循环语句实现循环 n breakbreak语句语句continuecontinue和语句和语句n条件判定条件判定 语句语句:if if语句语句 switchswitch语句语句 学过的输入输出函数 getchar()scanf()putchar(c)printf()Scanf()函数%c格式存在的问题及解决办法 常用 格式输入与输出(一)格式输出函数(一)格式输出函数 作用:向显示器(或系统隐含指定的输出设备)输出作用:向显示器(或系统隐含指定的输出设备)输出若干个任意若干个任意类型类型的数据。的数据。一般格式:一般格式:printfpri
6、ntf(格式控制符,输出项列表)(格式控制符,输出项列表)双引号括起来双引号括起来的字符串的字符串要输出的内容(常量、要输出的内容(常量、变量、表达式等)变量、表达式等)#includevoid main()int i=5;float f=32.345;printf(“i=%3df=%5.1fn”,i,f);printf(“End.n”);格式控制字符串:格式控制字符串:i=%3d f=%5.1f引导符宽度小数位数精度类型符结果:i=5 f=32.3 End.4.5 格式输入与输出 格式控制符完整格式:%0 m.n l/h 格式字符指定输出的数据l类型输出长度的修正制定输出域宽度和精度指定空位
7、填0指定左对齐输出格式说明的引导符号 4.5 格式输入与输出%u%u:以无符号十进制形式输出整数以无符号十进制形式输出整数%c%c:以字符形式输出,输出一个字符以字符形式输出,输出一个字符%s%s:输出一字符串输出一字符串%f%f:以小数形式输出实数,隐含输出六位小数以小数形式输出实数,隐含输出六位小数%e%e:以指数形式输出实数以指数形式输出实数%g%g:自动选用自动选用%f%f或或%e%e格式中输出宽度较短的一种格式,不输格式中输出宽度较短的一种格式,不输 出无意义的出无意义的0 0%:输出:输出%格式字符格式字符:指定输出项的数据类型和输出的格式指定输出项的数据类型和输出的格式%d%d:
8、以带符号的十进制形式输出整数以带符号的十进制形式输出整数%o%o:以八进制无符号形式输出整数以八进制无符号形式输出整数%x%x:以十六进制无符号形式输出整数以十六进制无符号形式输出整数 格式输入与输出 格式输入函数 作用:按照格式控制符的要求将数据从终端传送到变量地址所指的内存空间。一般格式:scanf(格式控制,变量地址表列)1.1.变量地址变量地址 变量的地址通过对变量名变量的地址通过对变量名“求地址求地址”运算得到运算得到 形式:形式:&变量名变量名同同printf函数函数是由若干个地址组成的表列,可以是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址是变量的地址,或字符串的首
9、地址 4.5 格式输入与输出 2.格式控制符:%*m l/h 格式字符格式字符输入的数据类型和格式长度修正说明符(了解,不要求)域宽说明符(了解,不要求)附加说明符(了解,不要求)格式说明的起始符号 格式输入与输出例:#include#includeint main()int main()int aint a;float b,c;float b,c;printf printf(”input ainput a,b b,c c:”););scanf(“%d%f%f”,&a,&b,&c);scanf(“%d%f%f”,&a,&b,&c);printf(“a=%d,b=%f,c=%fn”,a,b,c)
10、;printf(“a=%d,b=%f,c=%fn”,a,b,c);结果:input a,b,c:12 3 4a=12,b=3.000000,c=4.000000n输入数据分隔符:输入数据分隔符:n采用隐含的分隔符:空格、回车键、Tab键n根据格式中指定的域宽分隔数据项(不提倡)如如“”,只取列;,只取列;n采用用户指定的分隔符(不提倡),如逗号scanf(“%3d%2f%2f”,&a,&b,&c);scanf(“%d,%f,%f”,&a,&b,&c);输入:输入:12,3,4 数组 函数 指针 排序算法指针指针指针的定义指针运算符指针的运算指针的应用间接地址运算*取地址运算符&指针加减整数指针
11、间的减指针间的关系运算指针的赋值运算指针与数据指针与函数指针对一维数组的引用指针对一维数组的引用指针对字符串的引用指针数组数组指针指针函数函数指针指针作为函数参数应用题 例例6.106.10 译密码。为使电文保密,往往按一定规律将其转换成密码,收报译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。人再按约定的规律将其译回原文。思路:思路:可以按以下规律将电文变成密码:将字母将字母A A变成字母变成字母E E,a a变成变成e e,即变成其后的第,即变成其后的第4 4个字母,个字母,W W变成变成A A,X X变变成成B B,Y Y变成变成C C,Z Z变成变
12、成D D。1F例6.10输入一行字符,要求输出其相应的密码include include void main()void main()char c;char c;while(c=getchar()!=n)while(c=getchar()!=n)if(c=a&c=A&c=a&c=A&cZ&cz)c=c-26;if(cZ&cz)c=c-26;printf(%cn printf(%cn,c);c);1001nnn运行结果:运行结果:China!Glmre!/编写计算器程序,/主要练习多条件分支语句if.else/和switch(又称开关语句)#include#include main()int d
13、ata1,data2,i;char op,op1=Y;for(i=1;i3;i+)printf(请输入;);scanf(%d%c%d,&data1,&op,&data2);if(op=+)printf(%d%c%d=%dn,data1,op,data2,data1+data2);else if(op=-)printf(%d%c%d=%dn,data1,op,data2,data1-data2);if(op=/)printf(%d%c%d=%dn,data1,op,data2,data1/data2);if(op=*)printf(%d%c%d=%dn,data1,op,data2,data1*
14、data2);/printf(是否结束?请输入Y或N:);/scanf(%c,&op1);system(pause);方法二/编写计算器程序,/主要练习多条件分支语句if.else/和switch(又称开关语句)#include#include main()int data1,data2;char op,op1=y;doprintf(请输入;);scanf(%d%c%d,&data1,&op,&data2);switch(op)case+:printf(%d%c%d=%dn,data1,op,data2,data1+data2);break;case-:printf(%d%c%d=%dn,da
15、ta1,op,data2,data1-data2);break;case/:printf(%d%c%d=%dn,data1,op,data2,data1/data2);break;case*:printf(%d%c%d=%dn,data1,op,data2,data1*data2);break;default:;printf(是否继续输入y/n);scanf(%c,&op1);while(op1=y|op1=Y);system(pause);1.结构体的应用题 有一个结构体变量有一个结构体变量stu,内含学生学号、姓名和,内含学生学号、姓名和3门门课程的成绩。要求在课程的成绩。要求在main函
16、数中赋予值,在函数中赋予值,在另一函数另一函数print中将它们输出。今用结构体变中将它们输出。今用结构体变量作函数参数。量作函数参数。#include#include define FORMAT“%dn%sn%fn%fn%fn”struct student int num;char name20;float score3;void main()void print(struct student);struct student stu;/*声明结构体变量声明结构体变量*/stu.num=12345;strcpy(stu.name,LiLin);stu.score0=67.5;stu.score
17、1=89;stu.score2=78.6;print(stu);void print(struct student stu)printf(FORMAT,stu.num,stu.name,stu.score0,stu.score1,stu.score2););printf(n););运行结果:运行结果:67.50000089.00000078.599998方法一:用结构体变量作参数方法2 将上题改用指向结构体变量的指针作实参。#include define FORMAT“%dn%sn%fn%fn%fn”;struct student int num;char name20;float score
18、3;stu=12345,LiLi,67.5,89,78.6;void main()void print(struct student*);print(&stu);/*实参改为stu的起始地址*/void print(struct student*p)/*形参类型修改成指向结构体的指针变量*/printf(FORMAT,p-num,p-name,p-score0,p-score1,p-score2);/*用指针变量调用各成员的值*/printf(”n”);指针数组应用题指针数组应用题:将若干字符串按字母顺序(由小到大)输出。将若干字符串按字母顺序(由小到大)输出。#include#include
19、 void main()void sort(char*name,int n);void printf(char*name,int n);char*name=Follow me,BASIC,Great Wall,FORTRAN,Computer design;int;sort(name,);print(name,);void sort(char*name,int n)char *;int,;for(;-;);for(;)if(strcmp(name,name)0)=;if(!)temp=namei;namei=namek;namek=temp;void print(char*name,int);
20、(;)printf(,);运行结果为:运行结果为:Computer designFORTRANFollow meGreat Wall指针函数应用题指针函数应用题 有若干个学生的成绩(每个学生有门课程),要求有若干个学生的成绩(每个学生有门课程),要求在用户输入学生序号以后,能输出该学生的全部成绩。在用户输入学生序号以后,能输出该学生的全部成绩。用指针函数来实现。用指针函数来实现。#include void main()float score 4=60,70,80,90,56,89,67,88,34,78,90,66;float *search(float(*pointer)4,int n);/
21、*定义指针函数*/float *p;int i,m;printf(enter the number of student:);scanf(%d,&m);printf(The scores of No.%d are:n,m);p=search(score,m);for(i=0;i4;i+)printf(%5.2ft,*(p+i);printf(n);float*search(float(*pointer)4,int n)/*返回指针的函数*/float*pt;pt=*(pointer+n);/*指向第n行第0列元素,return(pt);运行情况如下:运行情况如下:enter the numbe
22、r of student:The scores of No.are:56.00 89.00 67.00 88.0030 数组的应用:输入10个学生的成绩,求平均成绩,并将低于平均成绩的分数打印出来。#include#include void readdata(float score10)/输入10个学生的成绩 coutPlease input 10 students score:endl;for(int i=0;i10;i+)sacnf(“%f”,&scorei);return;31float aver(float score10)/求平均成绩 float sum=0;int i;for(i=
23、0;i10;i+)sum+=scorei;return(sum/10);void print(float score10,float ave)/打印低于平均成绩的分数。int i;coutthe scores which are below the average:;for(i=0;i10;i+)if(scoreiave)printf(“%f”,scorei);return;32 void main()void readdata(float score10);/声明输入10个学生的成绩 float aver(float score10);/声明求平均成绩 void print(float sc
24、ore10,float ave);/声明打印 float ave,score10;readdata(score);ave=aver(score);/返回值给ave /平均值 coutaverage=aveendl;print(score,ave);2.枚举类型的应用题枚举类型的应用题#include enum cityShanghai,Beijing,Nanjing,Tianjin=5,Guangzhou;void ff(enum city x)switch(x)case 0:printf(Shanghain);break;case 1:printf(Beijingn);break;case
25、2:printf(Nanjingn);break;case 5:printf(Tianjinn);break;case 6:printf(Guangzhoun);break;default:printf(非法城市!n);int main()enum city c1,c2,c3,c4;int i=7;c1=(enum city)i;/不能:c1=i;c2=Nanjing;c3=(enum city)5;c4=Shanghai;/枚举变量的赋值:只能为列举元素之一 ff(c1);ff(c2);ff(c3);ff(c4);printf(%d%d%d%d,c1,c2,c3,c4);i=Shanghai
26、;printf(%d,i);system(pause);/*执行结果:非法城市!Nanjing Tianjing Shanghai 7 2 5 0 */投骰子游戏#include#include /投骰子、计算和数、输出和数 int rollDice()int die1=1+rand()%6;int die2=1+rand()%6;int sum=die1+die2;printf(player rolled%d+%d=%dn,die1,die2,sum);return sum;enum GameStatus WIN,LOSE,PLAYING;int main()int sum,myPoint;
27、enum GameStatus status;unsigned seed;printf(Please enter an unsigned integer:);scanf(%u,&seed);/以无符号整数,输入随机数种子srand(seed);/将种子传递给rand()sum=rollDice();/第一轮投骰子、计算和数switch(sum)case 7:/如果和数为7或11则为胜,状态为WINcase 11:status=WIN;break;case 2:/和数为2、3或12则为负,状态为LOSEcase 3:case 12:status=LOSE;break;default:/其它情况,
28、游戏尚无结果,状态为PLAYING,记下点数,为下一轮做准备 status=PLAYING;myPoint=sum;printf(point is%dn,myPoint);break;while(status=PLAYING)/只要状态仍为PLAYING,就继续进行下一轮 sum=rollDice();if(sum=myPoint)/某轮的和数等于点数则取胜 status=WIN;else if(sum=7)/出现和数为7则为负 status=LOSE;/当状态不为PLAYING时上面的循环结束,以下程序段输出游戏结果if(status=WIN)printf(player winsn);else printf(player losesn);system(pause);return 0;
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。