[计算机软件及应用]C语言基础知识2.doc

上传人:sccc 文档编号:4561489 上传时间:2023-04-27 格式:DOC 页数:87 大小:484KB
返回 下载 相关 举报
[计算机软件及应用]C语言基础知识2.doc_第1页
第1页 / 共87页
[计算机软件及应用]C语言基础知识2.doc_第2页
第2页 / 共87页
[计算机软件及应用]C语言基础知识2.doc_第3页
第3页 / 共87页
[计算机软件及应用]C语言基础知识2.doc_第4页
第4页 / 共87页
[计算机软件及应用]C语言基础知识2.doc_第5页
第5页 / 共87页
点击查看更多>>
资源描述

《[计算机软件及应用]C语言基础知识2.doc》由会员分享,可在线阅读,更多相关《[计算机软件及应用]C语言基础知识2.doc(87页珍藏版)》请在三一办公上搜索。

1、第一章 C语言基础知识第一节C语言的基本格式一、C语言源程序或C程序 .c例:求两数和程序命令行,编译预处理命令行#include stdio.h主函数main()变量定义语句int a,b,sum; 函数体赋值语句a=10;b=20;sum=a+b;printf(sum=%d,sum);说明:1 主函数:一个C源程序有且仅有一个main函数,程序总是从main函数开始,从main函数结束。Main必须小写,且其后紧跟一对小括号,中间无空格。2 函数体:告诉计算机要做什么事情。3 int 是C中的关键字(表示特殊含义的一些符号)必须小写;变量 变量名(规则)变量类型 变量名,变量名; ;是C中

2、语句结束的标志。 4 开头:#开头,无分号 printf include是预定义标识符5 注释:可放在程序的任意位置,以/*和*/来界定。但要注意: #include stdio.hmain()int a=0,b=0;a=10; sum=a+b;printf(a+b=%d,a+b); #include stdio.hmain()int a=0,b=0;a=10; /*给a赋值b=20; 给b赋值*/sum=a+b;printf(a+b=%d,a+b);变量先定义后使用,定义变量放在程序的定义部分语句后加;程序可以从任一列开始书写,一行内可写多个语句main()定义部分;(前) 执行部分;(后)

3、总结:二、标识符:用于标识名字的有效字符序列 命名规则:字母、数字、下划线 第一个字母必须是字母或下划线 大小写字母有区别 标识符分为三类: 关键字:具有特定含义,专门用为说明C语言特定成分的一类标识符;必须小写 如:int,float double等 预定义标识符:库函数名 编译预处理命令名(define、include)预定义标识符可作为用户标识符使用,此时预定义标识符就失去原来的意思;但用户标识符不可作预定义标识符 用户标 识符:一般给变量、函数、数组或指针等命名,由用户根据需要定义的标识符a. 不与关键字相同b. 遵循起名规则c. 见名知义例12 可在C语言中用作用户标识符的一组标识符

4、是:()A) and B) Void C) Hi D) int_2007 y-m-d Dr.Tom Big1例13 以下不合法的用户标识符是:()A)j2_KEY B) Double C) 4d D) _8三、常量:程序运行过程中,值不改变的量数值型:值的形式出现字符串常量实型字符常量整型 符号常量:用标识符命名 遵循命名规则 见名知义例:计算圆面积的C语言程序宏定义命令行,符号常量大写#define PI 3.14159大写形式main()float r,area;r=12.5;area=PI*r*r;printf(area=%fn,area);定义了符号常量后,不可以再通过赋值语句改变该符

5、号常量的值。四、变量:在程序运行过程中,其值可以改变的量。遵循规则#include stdio.hmain()int a=10,b=20,c;c=a+b; printf(%dn,c);a=30;b=10;c=a+b;printf(area=%fn,c);变量中的值以最后一次赋值为准。第二节 整型数据一、 数值转换:计算机内部以二进制来存储数据数字的四种表示形式:十进制、二进制、八进制、十六进制表 十进制、二进制、八进制、十六进制对照表十进制0123456789101112131415二进制01101110010111011110001001101010111100110111101111八进制

6、012345671011121314151617十六进制0123456789ABCDEF除2取余1十 二、八、十六例:(38)10=( )2每位乘以2的n-1次幂,再求和2二、八、十六 十例:(1101)2= ( )10(1)2=21-1(11)2=22-1(111)2=23-1当二进制所有位数上的数字均为1时,可用2的n次幂减1求出其相应的十进制数。3二 八、十六观察表可得出每个八进制数的单个数字都可用3位二进制数来表示 每个十六进制数的单个数字都可用4位二进制数来表示 例:(13)8=(001011)2 (E3)16=(11100011)2十进制整型常量:09八进制和十六进制之间无直接转换

7、C中无二进制的整型常量八进制整型常量:(前导0)+(07)二、 整型常量:十六进制整型常量:(前导0x或0X)+(09 短整型长整型无符号型常量加lu/LU无符号整型(加后缀U/u)长整型(加后缀L/l)基本整型例1.6 以下选项是可作为C语言合法的整数的是:(C )A)10110B B)0386 C)0fXffa D)x2a2例1.7 以下程序运行后的输出结果是( )main()int x=0210;printf(%Xn,x);程序运行结果为:88基本整型:(short int) 2个字节无符号整型(加后缀U/u)三、 整型变量:短整型:(int)长整型(加后缀L/l):(long int)

8、 4个字节0000000000000110int i=6;int i; i=6;例: 定义变量的同时可给变量赋值,称为变量的初始化。变量的字节个数反映变量存储值的范围整型数据的取值范围:-3276832767(215-1)无符型数据的取值范围:065535(216-1)四、 整数在内存中的存储形式:位、字节、最低位、最高位、符号位(0正;1负)1有符号正整数:有符号正整数的存储形式称为源码。如:(10)10=(0000000000001010)2两个字节存放的最小的有符号正整数:0000000000000001两个字节存放的最大的有符号正整数:0111111111111111=215-1=32

9、7672负整数:“补码”形式存放(反码加1)两个字节存放的最小负整数为:1000000000000000 -32768327673无符号正整数:1111111111111111=216-1=65535例1.9 #include stdio.hmain()unsigned int a;int b=-1;a=b;printf(%u,a);程序运行后的输出结果是: (B)A) -1 B)65535 C)32767 D)-32768第三节 实型数据一、 实型常量:有2种形式:小数形式和指数形式1 小数形式:包含1个小数点的十进制数字串,小数点前(后)可无数字,但不可以同时没有数字。如:3 . .14

10、0.15 .2 指数形式:小数部分+指数部分e/E+整数(可带符号的整数)阶码 小数部分+指数部分二者缺一不可例:以下合法的一组C数值常量是:D)ox8A 10.000 3.e5C).177 4e1.5 0abcB)12. 0Xa23 4.5e0A)028 .5e-3 -0xA单精度:7位有效数字,计算机中给出6位小数位 -二、 实型变量:双精度:15-16位有效数字,计算机中给出6位小数位 -C中,为单精度分配4个字节的存储单元,其数值范围在-10381038之间C中,为双精度分配8个字节的存储单元,其数值范围在-1030810308之间第四节 表达式一、 算术运算符:+、-、*、/、%前后

11、只能为整型,当运算对象为负数时,C中运算结果的符号与被除数的符号相同。根据运算符的运算对象的个数,运算符可分为:单目、双目、三目 运算符两边的运算对象类型必须一致,结果的类型与运算对象类型一致 运算符两边的运算对象类型不一致时,运算对象从低类型向高类型转换。如:5/2.0=2 .5 C中,所有实型数的运算都是以双精度方式进行,单精度尾部补0表 算术运算符与圆括号的优先级次序高 低()+、-(正、负号)*、/、%+、-(加减号)同级同级同级单目双目二、 算术表达式: 用算术运算符和圆括号将运算对象连接起来的式子称为算术表达式三、 强制类型转换:(类型名)表达式;例:(int)(3.927*10+

12、0.5)/100.0第五节 赋值表达式一、 赋值运算符和赋值表达式:赋值运算符:=赋值表达式:变量名=表达式 如:sum=a+b; 赋值运算符=左边必须是变量 赋值运算符=左边的值被右边的表达式的值代替,而右边的值不变。如:b=3;c=2; a=b+c; 赋值表达式的值是赋值号左边变量被赋值后的值。如:x=y=25 25赋给y,再将y=25这个表达式的值赋给x,则x=25 给合方向:自右向左 赋值运算符=是单方向的操作,将右边表达式的值赋给左边的变量 赋值运算符=两边的运算对象类型不一致,自动转换:右边表达式的值的类型转化成左边变量的类型例1.13 有以下语句:double a,b;int w

13、;long c;若各变量已正确赋值,则下列选项中正确的表达式是:( C )A) a=a+b=b+ B) w%(int)a+b) C) (c+w)%(int) a D)w=a%b;二、复合赋值表达式:算术运算符和赋值运算符组合成复合赋值运算符:+=、-=、*=、/=如:n+=100; 相当于 n=n+100;例:n=8; n+=n*=n-2; 运算方向:自右向左 6 48 96三、自加、自减运算符:+、- 属于赋值运算符 +i:+称为前缀增量运算符 i+:+称为后缀增量运算符 增量运算符的运算对象只能为变量,有有为常量或表达式 如:3+ +(i+1) +/-不论放在变量的前或后,变量本身都会增加

14、(或减少)1 结合方向:自右向左 i+:表达式的值为变量i没有增加1之前的值(即变量i 的初始值) +i: 表达式的值为变量i增加1之后的值(即变量i增1之后的值)如:i=3;j=i+; j=i; i=i+1; j=3k=+i; i=i+1;k=i; k=4例1.15 有以下程序:#include stdio.hmain()int m=12,n=34;printf(%d%d,m+,+n);printf(%d%d,n+,m+);程序运行后的输出结果是:( A )A) 12353514 B)12353513 C)12343514 D)12343513四、 逗号运算符和逗号表达式:逗号运算符:,逗号

15、表达式:用逗号运算符将两个或两个以上的表达式连接起来,可构成一个新的表达式结合性:自左向右整个表达式的值为最后一个表达式的值如:x=5,y=6,z=7; 7 逗号运算符的优先级最低。例: a=3*5,a*4因为=的优先级比,优先级高,所以先求解a=3*5=15,然后求解a*4=60,所以整个逗号表达式的值是60例:#include stdio.hmain()int x,y,z;x=y=1;z=x+,y+,+y; /*先将x+的值赋给z,z为1;整个逗号表达式的值为3printf(%d,%d,%d,x,y,z);程序运行后的结果是:( C)A)2,3,3 B)2,3,2 C)2,3,1 D)2,

16、2,1第二章 顺序结构C语言的三种基本结构:顺序、选择、循环一、 表达式语句:在表达式之后加一个分号“;”,就构成了一个表达式相应的语句。特别地,当只有一个;时,也是一条语句,称为“空语句”。空语句表示程序执行时,不产生任何动作。二、复合语句:(多个语句)用括起来的多个语句组成一个复合语句,其形式如下: 语句1,语句2,语句3,.,语句n;一个复合语句在语法上等同于一个语句三、 顺序结构:一个程序中的语句按照它们在程序中出现的顺序逐条执行,由这样的一系列语句构所的程序结构称为顺序结构。第二节 数据输出程序运行过程中产生的数据需输出到显示器或打印机上,用户才能看到;一般情况下,计算机先将运行结果

17、存到变量中,然后将变量的值输出。C语言本身无输入/出关键字,输入/出操作由数据库函数提供的,因此程序第一行需引入库函数。#include ”stdio.h”一、 printf函数的一般形式:功能:按指定的格式将需要输出的数据在显示器上输出用于说明的信息:按原样输出格式:输出控制+输出数据列表带有%的格式转换说明:指定输出数据的格式 1输出控制由“”引起来的格式转换控制信息: 格式转换说明必须有;但只有格式说明信息时可以没有格式说明信息和后面的输出数据列表格式说明信息如:printf(”a=%d ,b=%d”, 2,3);2输出数据列表:包括需要输出的一些数据(可以是常量,变量或表达式),各数据

18、之间用,隔开。 输出数据的个数与输出控制中格式转换说明的个数要相等,且在顺序上要一一对应且类型匹配。(否则,系统不会报错,得不到正确的结果) 若输出数据个数与格式说明的个数不相等时: 输出数据个数格式说明的个数:多余的输出项不输出 输出数据个数实际宽度:右对齐,左边补空格 如:printf(“%4d”,254); 输出:空格(1)+254指定宽度指定的小数位数:截去多余的小数位(四舍五入) 实际小数的位数指定的小数位数:右边用0补齐 若想输出格式为:0mmm(8)或0xmmm(16),输出数据类型应为:%#o或%#x或%#X第三节 数据输入一、 scanf函数的格式:&变量名scanf(输入控

19、制,输入数据列表)二、scanf函数中的格式说明:格式说明对应的输入数据格式格式说明输入数据格式%d输入十进制整型数%i输入整型数,可是前导带0的八进制数和带前导0x的十六进制整数%c输入一个字符%o输入八进制整型数%x输入十六进制整型数%u输入无符号的十进制整型数%f以带小数点的形式或指数形式输入单精度或双精度数说明:从键盘输入多个数值数据时,数值数据之间用分隔符隔开 如:int x,y,z; scanf(“%d%d%d”,&x,&y,&z); 格式说明的类型与输入项的类型一一对应匹配 可指定输入数据的宽度,但不能指定小数的位数 格式说明的个数输入项的个数: 结束输入 如:#include

20、stdio.hmain()int x,y,z,w;scanf(%d%d,&x,&y,&z);scanf(%d,&w);printf(%d,%d,%d,%d,x,y,z,w);若输入:10 20 30(输入结束) 输出结果为:x=10,y=20,w=30 如:main()int x,y,z;scanf(%d%d%d,&x,&y); scanf(%d,&z);printf(%d,%d,%d,x,y,z); 若输入:10 20 30 40后就结束输入 x=10,y=20,z=40 跳过输入数据的方法:格式字符与%之间加一个*,使跳过输入的数据。 在输入控制中含有其他的字符,则在输不入时要求按一一对应

21、的位置原样输入这些字符:如:scanf(“x=%d,y=%d”,&x,&y)输入时需按如下格式输入数据:x=10,y=20 scanf赋值和使用赋值语句赋值,有什么区别:前者变量的值是不固定的,运行结果可不同;后者变量的值是固定的,运行结果是相同的。第三章 选择结构第一节 关系运算与逻辑运算C中的逻辑值:真(非0) 假(0)一、 关系运算符:、= 关系运算符赋值运算符二、关系表达式:用关系运算符将两个表达式连起来的表达式 运算结果有两种:真(1)、假(0)三、逻辑运算符:! & |高低 优先顺序:逻辑运算符两侧的运算对象可以是任意合法的表达式!(单目)算术运算符关系运算符&|赋值运算符逗号运算

22、符四、逻辑表达式:注意短路现象例:设有定义:int a=2,b=3,c=4;则以下选项中值为0的表达式是(A)A)(!a= =1)&(!b= =0) B) (a50) printf(%d,a); if(a40) printf(%d,a); if(a30) printf(%d,a);输入,输出结果将为:例:main()int a=4,b=3,c=4,t=0;if(ab) t=a;a=b;b=t;if-else语句的功能流程图表达式执行语句1执行语句1 if(ab) if(bc)printf(%d,d+1);else printf(%d,+d+1); printf(%dn,d);程序运行后的输出结

23、果是:(A)A) 2 B)3 C)43 D)44练习:编写程序:输入两个数,输出较大者三、ifelseif结构:if(表达式1) 语句1elseif(表达式2) 语句2可是一条语句或一个复合语句,后不加;elseif(表达式3) 语句3.else 语句n 表达式1不满足时,才会判断表达式2是否满足等等,但多个if语句并列时,逐条对if表达式进行判断 3种形式的if中的表达式一般为逻辑表达式或关系表达式1 x0分析: 0 x=0 y= 成绩等级问题四、嵌套的if条件语句:if语句的子句可是一复合语句,也可是一个if语句,即嵌套的if语句。基本形式如下: if (表达式1)if (表达式2) 语句

24、1else 语句2 elseif (表达式3) 语句3else 语句4例:if (表达式1) if (表达式1)if (表达式2) 语句1 if (表达式2) 语句1else 语句2 else 语句2例:main()int a=3,b=4,c=5,d=2;if(ab) if(bc)printf(%d,d+1);else printf(%d,+d+1); printf(%dn,d);程序运行后的输出结果是:(A)A) 2 B)3 C)43 D)44第三节 条件运算符和条件表达式条件运算符:?条件表达式:表达式1?表达式2:表达式3条件运算符的优先级:赋值运算符 c?a:c; ab?a:cd?c:

25、d第四节 switch语句其值为整型或字符型,不能为实型基本形式:求得的整型常量或字符型常量表达式,不含变量Switch(表达式)case 常量表达式1:语句块1;break;case 常量表达式1:语句块1;break;语句体case 常量表达式2:语句块2;break;case 常量表达式3:语句块3;break;case 常量表达式n:语句块n;break;default: 语句块n+1;break;可包含多条语句,不 加 若没有一个常量表达式的值与switch中的表达式值相等,执行default case和default的出现次序不影响运行结果,default有且仅有一个 “case

26、常量表达式:”只起语句标号的作用,并不是在该处进行条件判断;即:若执行完某一个case或default语句块后无break,则继续执行,直至break或switch语句体被执行完毕为止。例:按照学生的考试成绩,打印出相应的等级,90分以上的输出“A”等级,80分以上的输出“B”等级,依此类推,60分以下输出“E”等级。main() int score;scanf(“%d”,&score);switch(score/10) case 10:printf(“An”);break;case 9:printf(“An”);break;case 8:printf(“Bn”);break;case 7:p

27、rintf(“Cn”);break;case 6:printf(“Dn”);break;default:printf(“En”);break;例:以下程序的输出结果是:(A)main()int a=15,b=21,m=0;switch(a%3)case 0:m+;break;case 1:m+;case 2:switch(b%2) to default:m+; case 0:m+;break; printf(“%dn”,m);A)1 B)2 C)3 D)4第五节go to 语句go to语句:无条件转向与go to语句同在一个函数内的语句标号所在的位置语句标号:标识符后加一个冒号第四章 循环结

28、构例:s=1+2+3+100=(1+2)+3)+4)+)+100s0=0 s1=s0+1 s2=s1+2 . s100=s99+100i=1 s=0s=s+I;i+; (重复执行)一、 while语句的一般形式:while(表达式)任意合法的表达式 循环体语句; 若循环体语句只有一条,可不加;若循环体语句多于一条,则必须用括起来组成一复合语句;即如果不加,则while语句的范围只到while后面第一个分号处 ()内的表达式不能省略,循环体语句可由一个空语句组成,表示循环体部分不做任何操作。二、执行过程:表达式循环体语句0死循环:表达式的值始终为0若第一次表达式的值就为0,则循环一次也 不执行非

29、0例main()int i,sum=1;i=1;while(i=5)sum=sum*i;i+;printf(%d,sum);例:main()int i,sum;i=1;sum=0;while(i=100)sum=sum+i;i+;printf(%d,sum); 第二节dowhile语句一、一般形式:do 循环体语句while(表达式); dowhile配对使用 循环体语句只有一个,可以不加;若多于一条,则须用括起来组成复合语句 表达式不可省,循环体部分可是一条空语句 dowhile结构是由一个语句加一个while结构构成的,在语法上也是一条C语言语句,因此最后的分号不可少,它同样表示语句的结束

30、二、执行过程:表达式循环体语句非00dowhile和while 的区别: while先判断表达式的值,为真执行循环体;dowhile循环则是首先执行一次循环体,再判断表达式的值,为真执行循环体 dowhile()后加分号;dowhile至少执行一次循环体求和:main()int i,sum;i=1;sum=0;dosum=sum+i;i+; while(i=100)printf(%d,sum); 第三节 for语句一、 一般形式:for(表达式1;表达式2;表达式3) 循环体语句说明: for为关键字; 表达式1赋初值,表达式2控制循环,表达式3给循环变量赋值,表达式之间用;隔开 循环体只有一

31、个语句不加;若多于一个,则必须用括起来 3个表达式可缺省,但;不能缺省 循环体语句可由一个空语句组成,表示不做任何操作求和:main()int i,sum;sum=0;for(i=1;i=100;i+)sum=sum+i;printf(%d,sum); 表达式2循环体语句非00计算表达式1计算表达式3二、执行过程:表达式1一般是对与循环体有关的变量赋初值;表达式2类似于while()圆括号内的表达式,控制循环;表达式3是循环变量的自增、自减操作for的一般形式等价于:表达式1;while(表达式2)循环体语句;表达式3;表达式1可省略,此时应在for语句之前给变量赋初值,但是省略表达式1时,其

32、后的分号不能省略表达式2可省略,此时相当于表达式2的值永远为真,循环将变为死循环表达式3可移到for循环体的尾部,成为循环体的一部分,表达式3缺省表达式1和表达式3可省,只有表达式2,即只给循环条件如:for(;i=2;i-) f*=i;B) f=1;for(i=4;i1;i+) f*=i;C) f=1;for(i=1;i4;i+) f*=i;D) f=0;for(i=1;i=4;i+) f*=i;例:main()int i;for(i=0;i3;i+)switch(i)case 0:printf(%d,i);case 2:printf(%d,i);default:printf(%d,i)程序运行后的输出结果是:(C)A)022111 B)021021 C)000122 D)012第四节 循环结构的嵌套例:有以下程序:main()int i,j,sum;for(i=1;i5;i+)for(j=1;j10&x10&x0;x-)if(x%3) printf(%d,x-);continue

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号