C语言60分攻略1

上传人:pu****.1 文档编号:568638244 上传时间:2024-07-25 格式:PPT 页数:61 大小:361KB
返回 下载 相关 举报
C语言60分攻略1_第1页
第1页 / 共61页
C语言60分攻略1_第2页
第2页 / 共61页
C语言60分攻略1_第3页
第3页 / 共61页
C语言60分攻略1_第4页
第4页 / 共61页
C语言60分攻略1_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《C语言60分攻略1》由会员分享,可在线阅读,更多相关《C语言60分攻略1(61页珍藏版)》请在金锄头文库上搜索。

1、C语言补习60分攻略基本概念汇编语言编写的程序必须经汇编为目标程序。高级语言编写的程序必须经编译为目标程序。C语言程序总是从main()函数开始执行 ,到main()函数结束。因此, C语言程序至少有一个main()函数。一、一、C语言的数据表示语言的数据表示1. 1 常量常量和和变量变量1. 2 表达式表达式1. 3 数据类型数据类型简单类型、结构类型、指针类型1.4 输入、输出输入、输出1.1 常量和变量常量和变量1.常量常量常量是在程序执行中,值不发生改变的数据。其值预先决定,之后不变。有不同的数据类型。(1)常数(有的称直接常量、页面常量) 例如的:整数:+5 、-3、017(八进制)

2、、0x1f(16进制) 实数(浮点数):3.14 、-1.2E-3 、1E10单个字符: A,占一个字节 ,转义字符 非法 77 (八进制ASCII码63,?),78非法 x3f (十六进制ASCII码63,?) x3g非法字符串: “A” 后面有0,占两个字节E3,2E3.0不合法不是整型量占一个字节字符串“*077x7fn”的长度是:下列是整型常量的是: 0.0 0L 0x7f 057 058 2/2.0下列是实型常量的是: -1E-3 E10 1E2 3.14 1.2E2.3 “x7F”和 x7F的字节数分别为:52 1(2)符号常量 给常量起标识符名字。C语言的符号常量(用宏定义):

3、#define PI 3.14159265注意:1.一般用大写字母。2, #define M 3 不是C语句,后面没有“;”。3.可以做M+1,不能做M+.(3)地址常量 当数组在定义时,其变量名为其首地址,是地址常量。 int a10;可以做a+1,不能做a+. 1.1 常量和变量常量和变量2 变量变量用各种操作来改变值数据。从“名名”和“值值”两个角度认识变量(1)变量名 每个变量,要在使用前定义变量的名字,遵循标识符命名规则。只能用字母、数字和下划线组成。不能以数字开头。不能用保留字(int,printf,main.)。合法a12 a_3 _abc非法12a a# int 变量定义就是申

4、请数据的存储空间,登记数据的各种存储特性。例如: int m ;2个字节long n; 4个字节 char ch; 1 个字节 float x; 4个字节 double y; 8个字节 可以用sizeof获得字长sizeof(char)=1sizeof(int)=2sizeof(double)=8(2)变量的值)变量的值 变量值就是由变量名所指定空间上的存储数据内容。即变量的当前值。 数据内容用语言的操作语句来改变。赋值语句;键盘输入语句; char chx; int m; /* 变量的定义 */ chx=A; m=12*3; /* 赋值语句 */ scanf(“%d”,&m); /* 键盘输

5、入语句 */变量初始化:变量初始化:定义变量时同时确定变量初值。例如: char chy=a; int weight=2; 1.2 C语言的语言的表达式表达式1 1、算术表达式、算术表达式2 2、关系表达式、关系表达式3 3、逻辑表达式、逻辑表达式4 4、赋值表达式、赋值表达式5 5、逗号表达式、逗号表达式6 6、条件表达式、条件表达式7 7、其他表达式、其他表达式C语言的语言的表达式表达式:使用规定的运算符运算符,将常量、变量、函数(调用)连结的一个有意义的式子。 1、算术表达式、算术表达式用算术运算符来表示对数据的算术运算求值过程。算术运算符: + - * / %2/3结果是0,2%3结果

6、是25/2结果是5%2结果是2 2、关系表达式、关系表达式关系运算符: = = (优先级较高) != = (优先级较低)关系表达式的结果:1(非0,真) ,0(假)分析:10=a=15 a=9 是假 10=a=1510=a 假 00=15 真所以要写成10=a&a=153、逻辑表达式用逻辑表达式来表示对数据的逻辑关系判断,运算结果是逻辑值“真”1或者“假”0。C逻辑运算符包括: ! & | 参加逻辑运算的数据必须是逻辑量,可以是逻辑类型的变量、常量,关系表达式或逻辑表达式。C语言中,没有专门的逻辑量,语言中,没有专门的逻辑量,1是真值,是真值,0是是假值。也认为假值。也认为非零非零的值为真值。

7、的值为真值。如:int a=3, b=4, c=-5; (1) ! (ab) & ! c | 1) (2) if(a)printf(“n yes”);a,c均按非0(即真)处理逻辑运算规律 在&(与)表达式中,若&的左端为假, 则不再计算另一端,该表达式值肯定为 0(假)。 在|(或)表达式中,若|的左端为真,则不再计算另一端,表达式的值必定为 1(真)。 nint a=5,b=1nk=a0nk?b?假,后面不算了k=0,b=1判断闰年的条件是:能被4整除但不能被100整除,或能被400整除。(x4= =0&x100!=0) 水仙花数是指一个三位正整数,其各位数字的立方和等于该数本身 (k*1

8、00+m*10+m= =k*k*k+m*m*m+n*n*n) 三角形的基本条件 (a+b)c)&(c+b)a)&(c+a)b) |(x400= =0)4、赋值表达式=,+=,-=,*=,/=,+(单目),- (单目)级别仅高于逗号表达式,右结合int a=3,c=2,ba=b=c;n*=m+2 相当于 n=n*(m+2)k=i+; 先k=i,再i=i+1k=+i; 先i=i+1,再k=ic赋值给b,b=2b赋值给a,a=2i+,+ik=i+ 作赋值运算,使用就是赋值.先做k=i,再做i=i+1i+先使用,后加1, + i先加1,后使用要充分理解中”使用”的实际意义k=i+ 作比较判断运算,使用

9、就是比较判断先做k=i,是真还是假,再做i=i+1printf(“%d”,i+) 作输出结果,使用就是输出结果.先输出i,再做i=i+1a=5-(i+) 作减法,使用就是减.先做5-i,并赋给a,再做i=i+15、条件表达式 e1?e2:e3若e1为真,表达式的值为e2,否则为e3. a=3,b=2 ; (- -a=b+)? -a : b +5?10:3表达式的值为100?10:3表达式的值为3-5?10:3表达式的值为10b=3;a=b5?10:3;a=?赋值运算符优先仅高于逗号运算符a=(b5?10:3);3k=(- -a=b+)? -a : b +;k=? 11非0真6、逗号表达式 表达

10、式的值等于最后一个表达式的值,运算等级最低! a=5,b=2,c=3 a=7+b+c, b+ a=(7+b+c, b+) a=12a=27、强制类型转换表达式(单目) int m; sqrt(float) m);a=5,a+5,a+=a a=10理解记忆运算符表 (高高)(低低)!+,-,等算数运算符算数运算符 关系运算符关系运算符 逻辑运算符逻辑运算符 & |条件运算符条件运算符 赋值运算符赋值运算符 逗号运算符 右结合单目运算符赋值运算符b=2a=5-(-b)()优先级最高, -b右结合-优先级其次=优先级最低-b,b=b-1,b为1再做5-b,即5-1等于4最后将4赋给a1.3 数据类型

11、数据类型简单类型构造类型指针类型整型实型字符型数组结构体共用体数值型枚举型空类型int 2个字节long 4个字节float 4个字节double 8个字节char 1个字节成员类型字节数个数struct 各成员字节数之和union 各成员字节数之最大者存放地址,与所指数据类型无关,2个字节不要求不要求1. 3 数据类型数据类型(1 1 1 1)整型)整型)整型)整型 类型名 字节数 输入、输出格式输入、输出格式 int 2 %d%d shortshort 2 %d%d long long 4 %ld%ld(2) 实型实型1.简单类型简单类型类型名类型名 字节数字节数 输入、输出格式输入、输出

12、格式 有效数字位有效数字位float 4 %f%f 7doubule 8 %lf%lf 16long doubule 16 %lf%lf 19n(3) 字符型字符型(输入、输出格式输入、输出格式 “%c”)n ASCII码,一个字符占1字节;char型数据与int型数据之间的关系 char型对应其ASCII码,只不过是占一个字节 。大写字母与小写字母之差为32. char型变量既能以%c字符格式输出,也能以%d整型格式输出。能象int量一样进行算术运算。n注意转义字符 的使用。 * 101 (A,8进制) x41(A,16进制) nchar ch=k;printf(“%d,%c”,ch-32,

13、 ch-32);107,K(4)字符串(输入、输出格式输入、输出格式 “%s%s”)所谓“字符串字符串”是指若干有效字符的序列。语言字符串可以包括字母、数字、专用字符、转义字符等。 字符串常量:使用双引号使用双引号 China BASIC a+b=c Li-Li “39.4” “%dn” “解放军“*077x7fn”字符型的一维数组(相当于字符串变量)char st8, str10;strcpy(st,12345); strcpy(str,st);不能st=“12345”; str=st;这是赋值.可以char st= “12345”; 这是初始化.2.结构类型“结构”一般可以称为数据元素数据

14、元素,在不同的结构类型中,数据元素会有特定的名称。结构类型的数据由更加基本的成分组成。这些成分称为“数据项”,结构的子成员子成员。1. 3 数据类型数据类型(1) 数组 a0 a1 a2 a3 a4 a5 a6 a7 10 20 30 40 50 60 70 80 一个数组(array )是由相同类型的若干数组元素构成的有限序列。C 语言的数定义 :int b8 , a8 ; char c10; 2.结构类型元素下标从0开始例 日期类型的定义(2)结构体C语言中实现:struct Date int month ; /*月*/ int day; /*日*/ int year; /*年*/;str

15、uct Date myd=12,16, 1978; 系统分配给它的内存是各成员所需内存量的总和。本例是6. (1)指针:)指针:变量名的在内存中的存储地址。(2)指针变量)指针变量int i=12, *p;P=&i; 把存放变量i 的地址的变量p 称作指针变量。指针变量的存放内容是数据的地址。3.指针类型(放弃)(3)指针引用变量)指针引用变量指针变量可以指向各种不同的数据类型,因此指针变量也要有不同的指针类型。如: int m, *p; float x,*q; int a,*rm=12; p=&m; x=3.14; q=&x; r=a;注意:是否用&1.4 输入、输出输入、输出输出: pri

16、ntf(“.”, .) %d, %6d, %ld %c, %s %f , %10.2f , %lf, %20.8lf char a=“abfgcde”,max,max_i;main().printf(“max=%cnmax_i%d=”,max,max_i); max=原样输出换行g3原样输出max_i=注意输出格式1.4 输入、输出输入、输出输入: scanf(“.”, .) %d, %ld 对应int long %c, %s 对应char char str %f , %lf 对应flaot double常见错误 int a,b;char d,e20;scanf(%d,%fn”,&a,&b);

17、scanf(%d,%f”,a,b);scanf(%7.2f,&b);scanf(%s,&e);scanf(%f,&d);n要多输入一个值缺&不能规定精度数组名是首地址,不要&类型不匹配(1)表达式语句表达式语句(2)流程控制语句流程控制语句(3)复合语句复合语句C语语言言语语句句 指令语句指令语句 非指令语句非指令语句数据定义语句数据定义语句 float x; int m;编译预处理编译预处理宏定义 #define PI 3.14159文件包含处理 #include 二、C语言的程序结构与相关语句带参宏定义以文本按原样展开#define MUL(x) x*x5/MUL(5+3)=5/5+3*5

18、+3=19#define MUL(x) (x)*(x)5/MUL(5+3)=5/(5+3)*(5+3)=5#define MUL(x) (x)*(x)5/MUL(5+3)=5/(5+3)*(5+3)=5/641. 表达式语句的组成: 由一个表达式后接一个分号组成的由一个表达式后接一个分号组成的。一组语句括在一对花括号一对花括号之中,称复合语句复合语句。 c=getchar(); putchar(c); 注意,一个复合语句的后花括号之后一个复合语句的后花括号之后不应再写分号不应再写分号。 在语法上是一个整体,相当于一个语句。 凡是能够使用简单语句的地方,都可以使用复合语句凡是能够使用简单语句的地

19、方,都可以使用复合语句。一个复合语句中又可以包含另一个或多个复合语句。 从键盘输入一个字符,并赋给c以字符形式输出字符变量的值c完成一定的控制功能。9种控制语句:判断语句判断语句 条件判断语句 if()else 多分支选择语句 switch()case循环语句循环语句 循环次数控制语句 for() 先判断后执行循环控制语句while() 先执行后判断循环控制语句dowhile()转移控制语句转移控制语句 直接转移语句 goto 终止语句 break(用在循环结构、swicth) 跳转语句 continue (仅用在循环结构) 返回语句 return流程控制语句流程控制语句二、C语言的程序结构与

20、相关语句程序的三种基本结构: 顺序结构顺序结构 选择结构选择结构 if()else switch()case 循环结构循环结构 for().; while(); do ; while()选择结构单分支结构 if(a=b)printf(“yes”);双分支结构 if(a=b) printf(“yes”); else printf(“no”); 多分支结构 switch_case 不能写成a=b多分支选择语句switch(表达式)(表达式) case 常量表达式常量表达式1: 语句序列语句序列1; break;case 常量表达式常量表达式2: 语句序列语句序列2; break;case 常量表达

21、式常量表达式n: 语句序列语句序列n; break;default:语句序列:语句序列n+1; 根据“表达式”的值从上至下去寻找与表达式的值相匹配的“case常量表达式”,执行一个分支后,再执行下一个分支,直到break结束,然后执行switch结构后面的程序。 找不到匹配的入口标号时,执行“语句序列n+1”,然后结束。顺序向下执行程序。main() int a=1,b=1;switch (a)case 1: switch (b) case 0:printf(“$”);break; case 1:printf(“#”);break; case 2:printf(“*”); case 2:pri

22、ntf(“”); case 3:printf(“”); break; case 4:printf(“&”);a=1case 1:swtch(1)b=1printf #,break跳出switch(b)结构进入switch(a)结构case 2:printf case 2:printf break 跳出switch(a)结构# for,while,do-while三种结构循环变量初始化,继续循环条件,改变循环变量是不可缺少的三个环节。for常用于循环次数已知的问题中。括号中的两个“;”不可省。while与do-while常用于循环次数未知的问题中。注意在for和while语句之后一般没有分号有分

23、号表示循环体就是分号之前的内容(空循环体)while (i 100);i+;for (i = 0; i 100; i+);printf(%d, i);if,swtich,while,for后面的语句只能是一句,因此,多句时别忘了。在while( e )和for( ;e ;)中的e是循环继续的条件,不能写其它条件!如果缺省,就是死循环!在if(e),while( e )和for( ;e ;)中e的值是逻辑值(0或非0)e一般是关系表达式,逻辑表达式或变量。if(x=1)if(x=1)main() int i=1; doi-;while(i+); printf(“%d”,i-); A) -1 B)

24、 0 C) 1 D)陷入死循环i=1i-,i=0while(i)终止循环i+,i=1输出i=1i-,i=0break,coutinuebreak只能用于switch和循环语句中,作用提前终止本层次switch和循环。coutinue是跳过循环体内尚未执行的语句,接着执行下次循环。常用的循环算法求素数、水仙花数、最小公倍数、最大公约数、分解多位数的数字,累加,累乘,分解质因数等。各种有规律的图案。while( m) k = m%10 ; /*求最低位的数字*/ m=m/10; /*除去最低位的数字*/ 分解多位数的数字判断素数main() int i,x,flag=0; scanf(“%d”,&

25、x); for(i=2;i0; -x ) y *= x; return(y);main() long y; for ( y=1; x0; -x ) y *= x; printf(“%ld”,y); main( ) int m, n; long cmn, facto( ); scanf (%d%d, &m, &n); cmn = facto(m) / (facto(n) * facto(m-n); printf (%ldn, cmn); 求求C(m,n) = m!/(n!*(m-n)!) 数组的定义类型标识符 数组名常量表达式错误的定义是: 或 int n; int n=10; scanf(%d

26、,&n); int an; int an; 定义int a5时, a0,a1.=?随机数!只有int a5=3后,后面几项自动赋0三三 数组数组数组的初始化 合法:int a=1,2,3,4,5; int i 3=1,2,3,4,5,6; int a5=1,2,3; char a4=“boy” char a3=b,o,y不合法: int a5=,2, ,4,5; int i2 =1,2,3,4,5,6; int a5= ;char a4=boy用数组元素下标法访问数组元素。#include void main() int a5=1,3,5,7,9, i, *p; for(i=0;i5;i+)p

27、rintf(%d , ai ); printf(n); 从0开始或i=4写程序框架(用函数)函数说明语句;mian() 定义变量; 输入数组; 调函数处理数组; 输出结果 ;函数首部 定义函数内部变量; 处理数组; 返回(非void用);用函数实现数组操作数值数组void inv(int x,int n);main()int i,j,a10;for(i=0;i10;i+) scanf(“%d”,ai);inv(a,10);for(i=0;iM;i+) printf(“%d”,ai);字符数组void inv(char x)main()int i,j;char a50;gets(a);inv(a

28、);puts(a);多一个参多一个参数,表示数,表示元素个数元素个数可以整可以整体输入,体输入,输出输出必须单必须单个输入,个输入,输出输出数组的操作往往用循环结构.数值数组int a10;for(i=0;i10;i+)字符数组char a50;for(i=0;ai!=0;i+)数值数组倒序for(i=0,j=M;ij;i+,i-) 交换ai,aj字符数组倒序for(i=0,j=strlen(a);ij;i+,i-) 交换ai,aj数值数组void inv(int x,int m) int i,j,k; j=m; for(i=0;ij;i+,i-) k=xi; xi=xj; xj=k;字符数组

29、void inv(int x ) int i,j,k; j=strlen(x); for(i=0;ij;i+,i-) k=xi; xi=xj; xj=k;main( ) int i,j,s=0,a33; for ( i=0; i3; i+ ) for ( j=0; j3; j+ ) scanf(%d,&aij); for ( i=0; i3; i+ ) for ( j=0; j3; j+ ) if ( i=j | i+j=2 ) s+=aij; printf(s=%dn,s);主对角线i=j副对角线i+j=2累加(积)# define M 10main() int i,aM,s=0; for

30、(i=0;iM;i+) scanf(“%d”,&ai); for (i=0;iM;i+) s+=ai; printf(“s=%d”,s);# define M 10main() int i,aM,s=1; for (i=0;iM;i+) scanf(“%d”,&ai); for (i=0;iM;i+) s*=ai; printf(“s=%d”,s);求最大(小)值#define M 30main() int i,k,k_i,aM; for(i=0;iM;i+) scanf(“%d”,&ai); k=a0; k_i=0; for(i=1;iM;i+) if(kai)最大值 字符数组char st

31、r50;int i;for (i=0;stri!=0,i+)构造新的字符数组(删除,插入,复制,连接,倒序)。 1.用和不用字符串函数实现上述功能。 2.用指针实现。 3.必须注意最后一项一定是: stri =0;或 *p=0;二维字符数组二维数组在内存中的排列顺序是“按行优先存放”二维数组amn可以视为由n个一维数组am组成的。二维字符数组中m由其中最长的字符串决定。char stu56= “Tom,“Anne,“Mary,“Peter; 其中stu0= “Tom“ stu1=“Anne字符串函数要用#include 字符串拷贝函数strcpy字符串连接函数strcat字符串比较函数strc

32、mp测字符串长度函数strlen函数函数strlen的值为的值为0之前的全部字符个数之前的全部字符个数.它与数组长度不是一个概念它与数组长度不是一个概念.char s6=H,o,w,0,o,kstrlen (s) =3字符串函数的应用字符串赋值字符串比较s1=s2strcpy(s1,s2)s1=s2strcmp(s1,s2)=0s1s2strcmp(s1,s2)0s1s2strcmp(s1,s2)0*p5与(*p)5char *p5是一个有5个元素的数组,数组元素的数据类型是指向int型的指针型char (*p)5是指向一个有5个元素的一维数组。China0Zhuhai0Shanghai0Guangzhou0Haikou010001007100E10181023*p51000p0p1p2p3p4(*p)51000a b c d 01000考试单选填空 25读程序写结果 25改错 20程序填空 20写程序 10

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号