




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计基础作者:杨 鉴第一讲 C程序基本语法1、C程序的基本框架/*这是一个用于练习的程序*/本程序用于实现15+25的和#includestdio.h /编译预处理命令,另外一种写法:#includevoid main() /函数首部(或函数头) /函数体开始 int a,b,sum; /数据说明部分,用于说明程序中要用到的常量,变量,数组,函数等等. a=15; /执行部分开始,执行部分用于实现程序要求的功能 b=25; sum=a+b; printf(sum=%dn,sum);/执行部分结束 /函数体结束/每一个语句的末尾必须以分号(;)结束,而且这些符号必须在英文状态下来打出.
2、注意:注释不会参与程序的编译和执行2、函数体内的说明部分(1)标识符A、标识符只能由字母(a-z,A-Z)、数字(0-9)、下划线(_)所构成B、标识符的第一个字符必须是字母或者下划线C、在C语言中,标识符中的字母是区分大小写的。(Sum和sum)D、在定义标识符的时候,标识符不能与系统关键字同名。char 32 as* mr.david _s $32 -hx date main标识符包含三种:系统关键字(32个)预定义关键字(include、define、所有系统库函数的函数名如:sin、cos等)用户定义标识符(2)常量和变量常量:在程序的运行过程中,值不发生改变的量。分类: 直接常量(字
3、面常量):258,65534(整型常量),3.14(实型常量),2.568,0.5,a(字符常量),!。 符号常量:就是用一个标识符去表示一个常数值。利用符号常量可以做到一改全改。符号常量的定义格式:#define 符号常量名 常量值说明:#define这是一个宏定义命令,属于编译预处理命令。符号常量名是一个合法的标识符,通常全部用大写字母表示。举例:#define X=2 (wrong)#define XYZ 2; (wrong)#define X 2 (right)例题:#define PAI 3.1415927main() float r,s,c; r=1.5; s=PAI*r*r; c
4、=2*PAI*r; printf(s=%f,c=%fn,s,c);变量的含义:在程序的运行过程中,值可以随时发生改变的量。变量分配内存空间的大小是由变量所属的数据类型来决定。(3)数据类型C语言所包含的数据类型有:基本数据类型(整型、实型、字符型),构造数据类型(数组、结构体、共用体),空类型(void),指针类型,用户自定义类型1整型整型常量:在C语言中,整型常量通常有三种表示方法:十进制、八进制、十六进制。256,0256-174,0x256-598整型变量通常情况下,整型分为三大类:长整型、整型、短整型。他们都可以分为有符号和无符号两种。有符号的长整型:long无符号的长整型:unsig
5、ned long有符号的整型:int无符号的整型:unsigned int(或者直接写成unsigned)有符号的短整型:short int无符号的短整型:unsigned short int变量在内存中所占存储空间的大小是由变量所属的数据类型决定的。比如:long a;a在编译时在内存中分配4B的空间。int类型(有符号的整型)的数据的取值范围:-32768-32767unsigned int类型(无符号的整型)的数据的取值范围:0-65535注意:在VC6.0中,int占4B的内存单元。变量定义的格式:数据类型 变量名1,变量名2,变量名3.;举例:、int a;int a,b;int a
6、,b,c;long x,y,z;补充:12l或着12L,这样12就表示了一个长整型数据。12LU或者12lu就表示12是一个无符号长整型数据。12u或者12U就表示12是一个无符号的整型数据。2实型实型常量:两种表现形式:(1)十进制小数形式;(2)指数形式。十进制小数形式:由三部分构成,整数部分,小数点,小数部分。例如:356.789,2.,0.5,.5均是合法的。指数形式:由三部分构成,十进制小数部分,阶码标志(E或者e),阶码(整数)。举例:2.56e32.56*1032.560000e+003;.5E38;2.E-56注意:实型数据小数点后默认保留六位小数。 当实型数据以指数形式输出时
7、,通常按照规范化的指数形式输出。所谓规范化的指数形式是指指数形式的十进制小数部分中,小数点前有且只有一位,并且必须有一位非零的有效数字。256.369-2.563690e22.563690E+002例如:#includestdio.hvoid main() printf(%e,256.369);输出结果:2.563690E+002实型变量:分类:单精度型(float):4B,通常小数点后保留6-7位有效数字,理论上一般为6位,实际上也是输出6位.float x=10.256;printf(%f,x);双精度型(double):8B,通常小数点后保留15-16位有效数字,理论上一般为15位,但是
8、实际输出6位.double x=10.256;printf(%lf,x);注意:实型数据在运算输出时,都统一按照双精度数处理.float x,y,z;double a,b;字符型(char):字符型数据在内存只分配一个字节的空间.字符型常量:用一对单引号括起来的一个字符.分类:普通字符常量 a 0 % # 注意区分: 1 和 1.转义字符常量:用一对单引号括起来的以反斜杠开头的一个字符序列.此类字符通常专门起控制作用,不会输出. 分类:一般的转义字符,八进制的转义字符,十六进制的转义字符一般的转义字符:n,r,b,t,除了这几个常用的转义字符之外,还有几个特殊的转义字符:,.举例:/要求程序输
9、出字符串welcome to ChongQi和welcome to ChongQing#includestdio.hvoid main() printf(welcome to ChongQing); printf(welcome to ChongQingn); printf(welcome to ChongQing);八进制的转义字符:ddd,注意,这里的d表示的是一位八进制数据.通过八进制的转义字符的形式可以表示一个普通的字符.例如:101,102举例:/验证八进制转义字符的使用#includestdio.hvoid main() printf(101,102,103);十六进制的转义字符:
10、xhh,这里的x仅仅是表示后面的h的取值是一个十六进制数.举例:/验证八进制和十六进制转义字符的使用#includestdio.hvoid main() printf(101,102,103n); printf(x41,x42,x43n);字符型变量:char a;char x,y;char p,q,m,n;4、运算符与表达式(1)算术运算符+ - * / %说明:当+和-作为正负号使用的时候,他们是单目运算符,他们的优先级高于*,/,%三种运算符。但是如果作为加减号使用时,他们是双目运算符,他们的优先级就低于*,/,%三种运算符。例如:+23,-25525+34,25-12,2*3,4/2,
11、5%2数学表达式2x,在C语言中应该表示为2*x,x的平方在C语言中就应该表示为x*x.在C语言中,整数相除的结果为整数,若有小数部分,直接去掉,不进行四舍五入。5%2的结果为1,-5%2的结果为-1,5%-2的结果为1,-5%-2的结果为-1。(2)自增、自减运算符+,-功能:对变量进行自增、自减运算。二者都是单目运算符。他们的优先级高于算术运算符。自增、自减运算表达式:前置运算,后置运算。举例:int i;前置运算:+i -i特点:就是对变量i的值先加1或者减1,此时变量i的值已经改变,然后再把i的值拿出来使用。后置运算:i+ i-特点:就是先把变量i的值拿出来使用,此时变量i的值没有改变
12、,使用完之后再把变量i的值加1或者减1。自增、自减运算语句:+i;i+;i=i+1;-i;i-;i=i-1;举例:#includestdio.hmain() int i=5; i+; printf(%d%d%d%d,+i,i+,i-,-i);/printf函数输出顺序从左至右输出,输出项的运算顺序相反。 输出结果:6 4 5 5(3)赋值运算符以及复合赋值运算符赋值运算符:=x=2 这是一个赋值表达式,目的是把2赋给x。整个赋值表达式的结果是被赋值的变量的值。注意:赋值运算符的左边只能是变量,我们只能对变量进行赋值。复合赋值运算符:+=,-=,*=,/=,%=等。a+=2;a=a+2; a*=
13、ba=a*b x+=(a+b)x=x+(a+b)(4)关系运算符关系运算符: = = b)关系表达式的值只有两个,真和假,但是在C语言里用1和0表示。关系运算符的优先级低于算术运算符。举例:int a=5,b=3,c=1;ab 1b=b 1cbc (ab)c 0ab=c 1ab=c 1a!=b 1a!=b!=c 0 (5)逻辑运算符逻辑运算符:! & |!表示逻辑非运算,就是取反,原来为真,取反之后就为假,原来为假,取反之后就为真。单目运算符,优先级和+,-相同。&表示逻辑与运算,双目运算符,只有当参与与运算的两个操作数都同时为真的时候,结果才为真,有一个为假,结果就为假。注意:在C语言中,判
14、断真假的依据是:非零为真,零为假。|表示逻辑或运算,双目运算符,只有当参与或运算的两个操作数都同时为假的时候,结果才为假,有一个为真,结果就为真。int a=5,b=3,c=1;!(ab) 0!b&c 0 a&b 1c|b 1!a&b|c 11&ab&b=c 10&ab&b=c 0(6)条件运算符条件运算符:? :例如:ab?a:b(7)逗号运算符逗号运算符:,起表达式的连接作用,在使用时连接多个表达式,采用自左至右方式进行运算。使用格式:表达式1,表达式2,表达式3,.,表达式n(8)强制类型转换运算符使用格式:(类型)表达式(9)位运算符位运算符: & | 第二讲 C程序基本语法(续)(6
15、)条件运算符?:它是一个三目运算符。使用格式:条件?表达式1:表达式2说明:判断?之前的条件是否成立,如果条件成立,则将表达式1的值作为整个条件表达式的值;否则,则将表达式2的值作为整个条件表达式的值。举例:求25和34中的最大数#includestdio.hmain() int a,b,max; a=25; b=34; max=ab?a:b; printf(max=%dn,max);输出结果:max=34求任意两个整数中的最大数。#includestdio.hmain() int a,b,max; scanf(%d%d,&a,&b); max=ab?a:b; printf(max=%dn,m
16、ax);(7)强制类型转换运算符格式:(类型)表达式说明:对表达式进行强制类型转换得到的仅仅是一个中间结果,并没有改变被强制转换的数据的类型和值。表达式(int)259.36的结果是:259#includestdio.hmain() int a=23; float b=2.56; a=(int)b; printf(%d%fn,a,b);输出结果:2 2.560000(8)位运算符在C语言中,位运算的对象只能是整型或者字符型数据,不能是其他类型的数据。 (位非):单目运算符表达式:4 0000000000000100的位非运算结果为:1111111111111011 (左移位):双目运算符格式:
17、ai运算规则:将a的各个二进制位向左移动i位,右端空出的部分补0,左端溢出的部分舍弃。int b=2;求表达式b1的结果:4求表达式b2的结果:8求表达式b(右移位):双目运算符格式:ai运算规则:将a的各个二进制位向右移动i位,右端溢出的部分舍弃,若a为正整数或者无符号整数,则左端全部补0,若a为负整数,则左端全部补1。int b=8;求表达式b1的结果:4求表达式b2的结果:2求表达式b3的结果:1 & (位与):双目运算符格式:a&b运算规则:1&1=1 1&0=0 0&0=0 0&1=0求表达式3&4的结果是:00000 0000 0000 0011&0000 0000 0000 01
18、000000 0000 0000 0000 | (位或):双目运算符格式:a|b运算规则:1|1=1 1|0=1 0|0=0 0|1=1 求表达式3|4的结果是:70000 0000 0000 0011|0000 0000 0000 01000000 0000 0000 0111 (位异或):双目运算符格式:ab运算规则:相同为0,不同为111=0 00=0 10=1 01=1求表达式34的结果是:70000 0000 0000 00110000 0000 0000 01000000 0000 0000 0111例题:1、设有以下程序段:unsigned char a=1,b=2,c,d,e;
19、c=a(b2);该程序执行后,c的值为:13、有以下程序main() unsigned char a=2,b=4,c=5,d; d=a|b; d&=c; printf(%d,d);改程序运行后,输出的结果为:4在c语言中,没有专门的输入输出语句和命令,要想实现c程序中的输入和输出,必须通过引用库函数实现。1、数据的输出(1)单个字符的输出函数:putchar()使用格式:putchar(表达式);注意:括号里的表达式既可以是字符型变量或者整型变量,也可以是运算表达式,还可以是字符常量或整型常量。#includestdio.hmain() int a=65,b=66; putchar(1); p
20、utchar(A); Putchar(n); putchar(B); putchar(2) putchar(a);putchar(n);putchar(b); putchar(3); putchar(a+32);putchar(n);putchar(b+32);(2)标准化的输出函数:printf()使用格式:printf(格式字符串,输出项列表);说明:格式字符串中包含的内容:格式说明符表现形式:%+-#0m.nh/l格式字符printf(%+d,25);输出结果:+25对比:printf(%d,25);输出结果:25注意:在使用printf函数输出的时候,输出的数据默认为右对齐的方式输出。
21、当在%和格式字符之间加一个-的时候,输出的数据按左对齐方式输出。printf(%-8d,25);输出结果:25 对比:printf(%8d,25);输出结果: 25举例:#includestdio.hmain()printf(%-8d,25);printf(n);printf(%08d,25);输出结果为:2500000025举例:#使用的目的就是输出八进制整数和十六进制整数的前缀。#includestdio.hmain() int a=65; printf(%d,%o,%xn,a,a,a); printf(%d,%#o,%#xn,a,a,a);输出结果:65,101,4165,0101,0x
22、41m用于指定输出数据的宽度 m输出数据的实际宽度,除输出数据外,多余的位置,空格填充。 m输出数据的实际宽度,按数据的实际宽度输出。#includestdio.hmain()int a=65;printf(%d,%6d,%1dn,a,a,a);.n用于指定输出数据的精度,它与m搭配使用#includestdio.hmain()double a=16.355;printf(%f,%12f,%12.3f,%.2f,%1.3fn,a,a,a,a,a); printf(%lf,a);普通字符普通字符是除了格式说明符和转义字符之外的所有字符,在输出时,原样输出。int a=5,b=6;printf(a
23、=%d,b=%dn,a,b);输出的结果是:a=5,b=6转义字符注意:(1)因为格式说明符要和输出项之间一一对应,所以当我们只需要输出一个字符串的时候,则没有输出项。当然在格式字符串中也就没有格式说明符。printf(hello,world!n);(2)当格式说明符的个数大于输出项的个数时,此时,除输出输出项所对应的数据外,剩下的输出项输出随机数。当然,输出的随机数是没有任何意义的。(3)当格式说明符的个数少于输出项的个数时,此时,按格式说明的个数输出,剩下的输出项舍弃。2、数据的输入(1)单个字符的输入函数:getchar()(2)标准化的输入函数:scanf()输入函数的讲解1、单个字符
24、的输入函数getchar()使用格式:字符型变量=getchar();#includestdio.hmain() char ch1; ch1=getchar(); putchar(ch1); putchar(n); printf(%c,%dn,ch1,ch1);输入:a输出结果: a a,972、标准化的输入函数scanf()使用格式:scanf(格式字符串,地址列表);格式字符串包括三种字符:(1)格式说明符%格式字符%m格式字符(特殊情况)(2)普通字符(3)转义字符注意:与printf函数中的格式控制字符串不同,在scanf函数中普通字符和转义字符在使用时都必须原样输入。地址列表其实就是
25、取出要输入数据的变量的首地址列表。用取地址符&来取出每一个变量存放的首地址。举例:(1)int a,b,c;printf(请输入三个整数:);scanf(%d%d%d,&a,&b,&c);输入方式:(1)12 34 56(2)123456(3)123456 /通过按键盘上的Tab键来实现数据的输入举例(2)char c1,c2;scanf(%c%c,&c1,&c2);输入:(在输入字符型数据时注意,空格、回车、TAB键均会被作为有效的字符输入)错误的方式:a b 输出结果:c1的值是a,但是c2的值是 正确的方式:ab(3)int a,b;scanf(%3d%4d,&a,&b);输入:错误的方
26、式:123 2008正确的方式:1232008(4)int a,b,c,d,m;scanf(%d%d%d,&a,&b,&c,&d);scanf(%d,&m);输入:123 20 108 253当我们输入之后,真正能得到数据的只有a、b、c三个整型变量(5)int x,y,z;scanf(%d%*d%d%d,&x,&y,&z);输入:10 20 30 40最后的结果就是:x的值是10,y的值是30,z的值是40(6)int m,n,p,q;scanf(%d,%d,%d,%d,&m,&n,&p,&q);正确的输入数据的方式:10,20,30,40错误的输入数据的方式:10 20 30 40int
27、a,b;scanf(a=%d,b=%dn,&a,&b);正确的输入数据的方式:a=10,b=20n错误的输入数据的方式:a=10,b=20 10 20例题讲解:1、以下程序运行时,若从键盘输入:10 20 30,输出结果是:#includestdio.hmain() int i=0,j=0,k=0; scanf(%d%*d%d,&i,&j,&k); printf(%d,%d,%d,i,j,k);2、已知字符A的ASCII码是65,以下程序运行时若从键盘输入:B33.则输出结果是:#includestdio.hmain() char a,b; a=getchar(); scanf(%d,&b);
28、 a=a-A+0; b=b*2; printf(%c %c,a,b);3、以下程序运行时若从键盘输入:1234567.则输出结果是:#includestdio.hmain() int a=1,b; scanf(%2d%2d,&a,&b); printf(%d %dn,a,b);4、设有以下程序:main() int x=102,y=012; printf(%2d,%dn,x,y);程序执行后的输出结果是:102,105、设有以下程序:main() int x=666,y=888; printf(%dn,x,y);程序执行后的输出结果是:6666、设有以下程序:main() int x=666,
29、y=888; printf(%dn,(x,y);程序执行后的输出结果是:888关系运算符和逻辑运算符的应用举例:(1)设有定义:int a=2,b=3,c=4;则以下选项中值为0的表达式是(A)A、(!a=1)&(!b=0) 0B、(a=A&kk=A|kk=a&(kk+32)=zD、isalpha(kk)&(kk0) n=m+1; printf(n=%dn,n);例2:求任意两个整数中的最大数。#includestdio.hmain() int m,n,max; printf(请输入任意的两个整数:); scanf(%d%d,&m,&n); max=m; if(maxn) max=m; els
30、e max=n; printf(max=%dn,max);例2:求任意三个整数中的最大数。#includestdio.hmain() int m,n,p,max; printf(请输入两个任意的整数:); scanf(%d%d%d,&m,&n,&p); if(mn) max=m; else max=n; if(max=90 & socre=80 & socre=70 & socre=60 & socrebc) printf(%dn,d); else if(c-1=d)=1) printf(%dn,d+1); else printf(%dn,d+2);该程序运行后的结果是:2有以下程序int k
31、=0,a=1,b=2,c=3;k=ac?c:k;执行该程序后,k的值为:3以下程序的输出结果是:#includestdio.hmain() int a=5,b=4,c=6,d; printf(%dn,d=ab?(ac?a:c):(b);2、多分支选择结构(switch语句)使用格式:switch(表达式) case 表达式1:语句组1;break; case 表达式2:语句组2;break; case 表达式3:语句组3;break; case 表达式4:语句组4;break; . case 表达式n:语句组n;break; default: 语句组n+1;注意:表达式的值只能是整型或字符型常
32、量;表达式1.表达式n的值也都只能取整型值或者字符型常量值。语句组中的语句可以是一条,也可以是多条。不需要用花括号括起来。#includestdio.hmain() int x; printf(请输入1-7之间的一个数字:); scanf(%d,&x); if(x=1&x=1&x=1&x=7) switch(x) case 1: case 2: case 3: case 4:printf(Thursday!);break; case 5:printf(Friday!); case 6:printf(Saturday!); case 7:printf(Sunday!); else printf(
33、输入有误!);2、有以下程序#includestdio.hmain() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0:a+;break; case 1:b+;break; case 2:a+;b+;break; case 3:a+;b+; printf(a=%d,b=%dn,a,b);该程序运行后的输出结果是:第四讲 循环结构程序设计1、循环结构重复地做同一件事情,就称之为循环。(1)if与goto语句搭配所构成的循环goto语句(无条件转移语句):当程序执行到goto语句时,直接无条件转移到语句标号所在的语句行继续执行。格式:
34、 . . .goto 语句标号; . . .语句标号:程序中的执行语句;举例:/*求1-100之间的偶数之和*/#includestdio.hvoid main() int i=1,sum=0,sum1=0;/a变量用于存放任意的一个偶数,sum用于存放所有偶数相加之和,sum1用于存放所有奇数相加之和f1:if(i=100) if(i%2=0) sum=sum+i; else sum1=sum1+i; i+; goto f1;/f1是一个标识符,是一个语句标号 printf(sum=%dn,sum); printf(sum1=%dn,sum1);一个循环通常由5个部分构成:循环变量赋初值(例
35、如:i=1)找到循环变量的终值(例如:i的终值为100)找出循环的条件(例如:i=100)找出反复执行的循环体语句(例如: if(i%2=0) sum=sum+i;else sum1=sum1+i; i+; goto f1;/f1是一个标识符,是一个语句标号)在循环体内必须有改变循环条件的语句(例如:循环体内的i+;通过i的值不断变化,该循环条件的真假)(2)while循环(当型循环)格式:while(循环条件) 循环体语句;说明:当循环条件成立的时候,就执行循环体语句,当循环条件不成立的时候,就立即退出循环。循环条件可以是一个变量,常量,表达式。判断条件成立与否的依据是:非零为真,零为假。这
36、里的循环体语句可以是一条语句,也可以是多条语句,由于循环体语句是在循环条件成立的情况下执行的,所以如果循环体语句含有多条执行语句时,就必须用一对括起来。注意:while 循环结构在语法上被认为是一条语句,因此当退出循环后,就立即执行循环的下一条语句即可。举例:求1-100的和#includestdio.hmain() int i=1,sum=0; while(i=100) sum=sum+i; i+; printf(sum=%dn,sum);求5!#includestdio.hmain() int i=1,sum=1; while(i=5) sum=sum*i; i+; printf(sum=
37、%dn,sum);求1!+2!+.+5!#includestdio.hmain() int i=1,sum=1,s=0; while(i=5) sum=sum*i; s+=sum; i+; printf(sum=%dn,sum);求100以内的偶数的和#includestdio.hmain() int i,sum=0; while(i=100) if(i%2=0) sum+=i; i+; printf(sum=%dn,sum);求100以内既能被5整除,又能被3整除的整数。#includestdio.hmain() int i; while(i=100) if(i%3=0&i%5=0) printf(%d,i); i+; (3)do while循环格
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 行政管理中沟通效果的评估模型试题及答案
- 水利水电工程工法选择试题及答案
- 投资分析的核心指标试题及答案
- 工程经济研究成果试题及答案
- 工程经济行业趋势试题及答案
- 投资风险管理策略试题及答案
- 权威解析2025年市政工程考试试题及答案
- 养殖土壤收购合同范例
- 兄弟赡养继承合同范例
- 出口业务合同范例
- 四年级数学(小数加减运算)计算题专项练习与答案
- 民宿实习报告总结
- 《系统工程》复习题及答案
- 小区安全排查
- 中国典籍英译概述课件
- 【MOOC】航空发动机结构分析与设计-南京航空航天大学 中国大学慕课MOOC答案
- 红旅赛道未来规划
- 第七届江苏技能状元大赛无人机应用技术项目技术文件
- 带电作业施工方案
- 宏定义与跨平台开发
- 大学生防艾健康教育学习通超星期末考试答案章节答案2024年
评论
0/150
提交评论