




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言知识整理(一) 数据类型知识点整理常量a. 整型常量分为int short intlong intunsigned intunsigned shortunsigned long注意 :(1)-3276832768 int long int (2)-21474836482147483648 long int (3)后加字母u表示unsigned int型,加l或L表示long int型。b.浮点常量(1)c语言编译系统将浮点型常量作为双精度处理;(2)一个浮点型常量可以赋值给float、double或long double变量;C字符串常量(1)字符常量用 括起来,如:a 字符串常量用“”括起来;(2)不能把一个字符串常量赋值给一个字符变量;(3)以0作为字符串结束的标志(0系统会自动加上)。d符号常量(1)利用标识符代表常量, 用#define定义 如:#define N 30;(2)符号常量不能再被赋值;(3)标识符只能由 字母 下划线 数字组成,并且第一个字符必须为字母 或 下划线。变量a. 整形变量(1) 变量定义时,放在函数的开头部分;(2) 数据溢出,程序不会自动报错,而是又从最小值开始计数。b. 浮点型变量(1) 表现形式:十进制小数,0.123 12.3;指数形式,123e3或123E3(123*103);注意:字母e或E之前必须有数字,且e后面的指数必须是整数(如:e3、2e2.3都是不合理的);(2) 舍入误差:浮点型变量存储单位有限,有效数字也是有限的,以外的数字将会被舍去。C.字符型数据(char)存放字符变量,只能放一个字符。数值型数据间的混合运算计算时,不同类型数据之间要转换为同一类型(长度短的转化为长度长的)字符数据 整数 short int float所有的类型 double型运算符a. 强制型转换运算符 (类型名) 表达式转换时,只改变其值,不改变原来的类型如: float x=32767.0 i=(int)x%3输出时:x=32767.0 i=1b. 自增自减运算符+i;-i (使用i之前,先使i的值加减1)i+;i- (使用i之后,再使i的值加减1)如:i=1;+i中+i=2,i=2;i+=1,i=2只能用于变量,不能用于常量或表达式,其结合方向是自右向左。C.类型转换(1)浮点型 整型 舍弃浮点数后的小数部分 i=3.5i=3;(2)整型 单双精度 数值不变,以浮点形式储存 f=12f=12.00000;(3)double float 截取前面7位有效数字(数值不得超过float的范围);(4)字符型 整型变量 将字符数据放在整型变量储存单元的低8位中;(5)整型数据 char 将其低8位原封不动的送到char中;(6)int long int的16位送到long的低16位中,如果int为+,高16位补0;如果为-,则补1。反之将低16位原封不动的送到int中;(7)unsigned int long int 高位补0;(8)非unsigned unsigned(长度相同) 原样赋值。d.逗号运算符 (表达式1,表达式2)值为后者的值如:(1+5,1+2 值为3)并不是任何时候出现逗号都是作为逗号运算符。数组a.一维数组 类型说明符 数组名常量表达式 int a10引用数组时要先定义后使用。(1)初始化 (无初始化时,则元素为随机数)定义时赋初值; int a3=0,1,2;部分元素赋值: int a10=0,1,2,3,4后面5个元素自动为0;int a10=0*10不能这样给数组整体赋初值。c. 程序举例处理fibonacci数列问题#includemain()int i;int f20=1,1;for(i=2;i20;i+)fi=fi-2+fi-1;for(i=0;i20;i+)if(i%5=0)printf(“n”);printf(“%12d”,fi);Printf(“n”);运行结果:1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765b.二维数组 类型说明符 数组名常量表达式常量表达式float a310 二维数组的排序按行存放。(1) 区分 定义数组a34与引用元素a34的区别;(2) 初始化int a23=1,2,3,4,5,6;部分赋值 int a34=1,5,9;int a34=1,0,6,0,0,11;分行赋值 int a23=1,2,3,4,5,6;对全部赋值定义数组时,对第一维的长度时可以不指定,但是第二维不能省。int a4=1,2,2,4,3,2,只对部分元素赋初值而省略第一维长度,但应分行赋初值。(3) 程序举例 将二维数组行列互换,存到另一个二维数组中去。#includeMain()int a23=1,2,3,4,5,6;int b32,i,j;printf(“array a:n”);for(i=0;i=1;i+)for(j=0;j=2;j+)Printf(“%5d”,aij);bji=aij;Printf(“n”);Printf(“array b:n”);For(i=0;i=2;i+)For(j=0;j=1;j+)Printf(“%5d”,bij);Printf(“n”);C字符数组 char c10(一个元素存放一个字符)也可以定义一个整型数组,用其存放字符数。(1) 初始化 逐个赋值:char c10=i,a,m,h,a,p,p,y字符个数不得超过数组长度(定义时可以省略数组数组长度)。(2) 程序举例输出一个字符串#includemain()Charc10= I,a,m,h,a,p,p,y;int i;for(i=0;i10;i+)printf(“%c”,ci);printf(“n”);运行结果:I am a boy.(3)字符串以0为结束标志;保证数组的长度始终大于字符串实际长度,0只是识别标志,并非有效字符。(二) 输入输出函数1. 输入输出函数有:putchar(输出字符)getchar(输入字符)printf(格式输出)scanf(格式输入) gets(输入字符串) puts(输出字符串)2. 在使用系统库函数时,要用预编译命令 #include/#include”stdio.h”Putchar 函数1. 作用是向终端输出一个字符2. 一般形式putchar(c),其中c可以为字符型变量或整型变量(cchaa+6565)Getchar 函数1. 作用是从终端输入一个字符2. getchar无函数参数,一般形式getchar()注意:以下写法是正确的putchar(getchar();相当于printf(“%c”,getchar();格式输出输入函数:Printf函数1 输出若干个任意类型的数据(putchar只能输出字符,而且是一个字符/printf可以输出多个数据,且为任意型)2 一般格式printf(格式控制,输出列表) 或者printf(参数1,参数2,参数3,参数n)格式控制:用双撇号括起来的字符串,也称“转换控制字符串”包括A 格式说明:%加格式字符组成B 普通字符:即需要原样输出的字符输出列表:需要输出的数据,可以是表达式。格式字符:d,i格式字符%d 十进制实际长度输出%md指定m宽度输出,数据长小于m左端补空格,大于按实际输出%ld输出长整型数据%mld 指定长度输出注意:int型%d和%ld都可以O格式字符%o八进制整数形式输出,输出不带符号,符号位也作为八进制数的一部分输出,即不会输出带负号的八进制数(-1用八进制输出为177777),对长整型,可用%lo格式,也可以%mo,同上X格式字符%x十六进制形式输出,同样无负数,同样可以用%lx和%mxU格式字符%u输出无符号型数据,以十进制形式输出,注意无符号型输出和其他输出输出数据的对比,详细见书(p77页)C格式字符%c用来输入一个字符,注意,一个整数在0255范围内,也可以用%c输出,转换为相应字符,反之,一个字符也可以用整型输出S格式字符%s输入一个字符串%ms字符串本身长度大于就全部输出,小于左端补空格%-ms在右端补空格%m.ns只取字符串左端n个字符,左补空格%-m.ns右补空格,若nm,m自动取n的值F格式字符%f用来输出实数(double/float),以小数形式输出。一般给出六位小数。%m.nf输出n位小数,数值长度小于m,左端补空格,%-m.nf右端补空格。E格式字符%e以指数形式输出实数,用e是指数以e表示(如1.2e+02)%E,指数用E表示G格式字符选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0,用G以指数形式输出时,指数要大写 (附加格式说明字符)输出的数字或字符在域内向左靠注意几点:1. 除X,E,G外,其他的格式字符必须用小写字母2. 格式控制中可以输出转义字符:字符形式含 义Ascii代码n换行,将当前位置移动到下一行开头10t水平制表(跳到下一个tab位置)9b退格,将当前位置移到本行开头8r回车,将当前位置移到本行开头,(回车不换行)13f换页,将当前位置下移到下页开头12代表一个反斜杠字符“”92代表一个单引号字符39代表一个双引号字符34ddd1到3位八进制数代表的字符xhh1到2位十六进制数所代表的字符3. 一个格式说明以%开头,如果想输出字符“%”,则应该在格式控制字符串中用连续两个%。Scanf函数1. 一般格式:scanf(格式控制,地址表列)2. 格式控制同printf函数,地址列表是由若干地址组成的表列,可以是变量的地址,或字符串首地址。记得 &。3. &地址运算符,输入数据时,分隔符应该与格式控制里的相对应输入。即用逗号分隔的,输入的时候也要用逗号分隔,没有规定的用空格和回车或者是Tab键。4. 格式说明:与printf格式说明类似。A 如果在%后有一个“*”附加说明符,表示跳过它指定的列数。B 输入数据时,不能规定精度,如“%7.2f”是错的。使用scanf函数应该注意的事项:A 格式控制后面应当是变量地址,而不是变量名B 如果在格式控制字符串中除了格式说明以外还有其他字符,则在输入数据时,在对应位置应输入与这些字符相同的字符。如果格式控制里有空格分隔,输入的时候只能比格式控制里的空格数多。C 在用“%c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入。D 在输入数据时,遇到以下情况认为该数据结束: 遇到空格,或者按回车,tab键; 按指定的宽度结束,如“%3d”,只取3列; 遇到非法输入Puts函数1 一般形式:puts(字符数组)2 作用是将一个字符串(以0结束的字符序列)输出,可以包含转义字符。Gets函数1 作用是将一个字符串输入到一个数组,并且得到一个函数值。该函数值是字符属猪的起始地址。2 一般形式gets(字符数组) eg:gets(str);注意:用puts和gets只能一次处理一个字符串各类运算符1 C语言运算符简介:算术,关系,逻辑,位运算,赋值,条件,逗号,指针运算符,sizeof,强制类型转换,分量运算符,下标运算符。常见的运算符归纳:1. 算术运算符(+,-,*,/,%)A 说明:两个整数相除结果为整数,有负数参与,多半遵循“向零取整”的方法,取整数后向零靠拢。B 在表达式求值的时候,先按运算符的优先级别高低次序执行,优先级别相同的,按规定的“结合方向”处理,详细见书本附录。C 如果一个运算符两侧数据类型不同,先自动经行转换转换规律:高 Double float Long Unsigned低 Int char,short2. 强制类型转换A 一般形式:(类型名)(表达式)B 表达式应该用括号括起来,注意区别(int)(x+y)和(int)x+y,第一个是转换x+y,第二个只转换了xC 在强制类型转换时,得到一个中间数据,原来变量的类型未发生变化3. 自增自减运算符A+i,- -i;(在使用之前先使i的值增加或者减少1)i+,i- -;(先计算i的值,再使i的值增加或者减少1);B只能用于变量,不能用于常量和表达式。C+,- -的结合方向是自右至左D常用于循环语句中,使循环变量自动增加1,也用于指针变量,使之指向下一个地址。4赋值运算符A赋值符号“=“称为赋值运算符,它的作用是将一个数据给一个变量。也可以将一个表达式的值赋值给一个变量B如果赋值运算符两侧的类型不一致,但都是数值或者字符型的时候,转换规则:见书(60-61页)5复合的赋值运算符(10种)+=,-=,*=,/=,%=,=,&=,=,|=Eg: a+=3 相当于a=a+36. 赋值表达式格式:变量 赋值运算符 表达式 eg:a=5;a=b=c=5;运算规则:先求运算符右侧的表达式的值,然后赋值给运算符左侧的变量7. 逗号运算符合逗号表达式 A用一个逗号将两个表达式连接起来,是一个逗号表达式,又称为顺序求值运算符,一般形式是:表达式1,表达式2B求解过程:先求表达式1的值,再求解表达式2。整个逗号表达式的值是表达式2的值。C表达式1,表达式2,表达式3表达式n;它的值为表达式n的值D逗号表达式最常用于循环语句for语句中。8. 关系运算符及其优先次序A . 6种关系运算符: (小于) (大于) =(大于或等于)(优先级相同 高)=(等于) !=(不等于) (优先级相同 低)B . 关系运算符的优先级低于算术运算符,高于赋值运算符9关系表达式A定义:用关系运算符将两个表达式(可以是算术表达式或关系表达式,逻辑表达式,赋值表达式,字符表达式)连接起来的句子,称关系表达式。B关系表达式的值是一个逻辑值,即“真”或“假”。在逻辑运算中,1代表真,0代表假。 Eg:d=ab,则d的值为1.10.逻辑运算符A3种逻辑运算符: & 逻辑与 | 逻辑或 ! 逻辑非&和|是双目运算符,要求有两个运算量,!是一目运算符,只要求有一个运算量。B注意:已知&或者|两边左边已经确定了值,那么右边不做运算。在&中,两真才为真,一假便为假。|中两假才为假,有一真便为真。C优先次序:先!,后&,后| 与其他运算符的优先次序:(由高到低排列) !(非)算术运算符关系运算符& 和|赋值运算符D . 逻辑表达式的值应该是一个逻辑量,运算结果不是0,就是1.表达式从左至右求解。 (三) c语句一 控制语句1If()else3种形式:if()语句 if()语句一 else 语句二 if() else if() elseif语句的嵌套:if() if()语句1 else语句2 else if()语句3 else语句4else总是与他上面的最近的未配对的if配对。If语句后面的表达式一般为逻辑表达式或关系表达式。题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 1.程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法) 2.程序源代码: #includemain( ) long a,b,c,d,e,x; scanf(%ld,&x); a=x/10000;/*分解出万位*/ b=x%10000/1000;/*分解出千位*/ c=x%1000/100;/*分解出百位*/ d=x%100/10;/*分解出十位*/ e=x%10;/*分解出个位*/ if(a!=0) printf(there are 5,%ld%ld%ld%ld%ldn,e,d,c,b,a); else if(b!=0) printf(there are 4,%ld%ld%ld%ldn,e,d,c,b); else if (c!=0) printf( there are 3,%ld%ld%ldn,e,d,c); else if (d!=0) printf(there are 2,%ld%ldn,e,d); else if (e!=0) printf( there are 1,%ldn,e); 题目:输入三个整数x,y,z,请把这三个数由小到大输出。 1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果xy则将x与y的值进行交换,然后再用x与z进行比较,如果xz则将x与z的值进行交换,这样能使x最小。 2.程序源代码: #includevoid main() intx,y,z,t; scanf(%d%d%d,&x,&y,&z); if(xy) t=x;x=y;y=t;/*交换x,y的值*/ if(xz) t=z;z=x;x=t;/*交换x,z的值*/ if(yz) t=y;y=z;z=t;/*交换z,y的值*/ printf(smalltobig:%d%d%dn,x,y,z); 2. for()一般形式:for(表达式1;表达式2;表达式3)语句题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。 2.程序源代码: #includemain() int i,j,k; printf(n); for(i=1;i5;i+) /*以下为三重循环*/ for(j=1;j5;j+) for (k=1;k5;k+) if(i!=k&i!=j&j!=k) /*确保i、j、k三位互不相同*/ printf(%d,%d,%dn,i,j,k); 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21. 2.程序源代码: #includemain() long f1,f2; int i; f1=f2=1; for(i=1;i=20;i+) printf(%12ld %12ld,f1,f2); if(i%2=0) printf(n);/*控制输出,每行四个*/ f1=f1+f2; /*前两个月加起来赋值给第三个月*/ f2=f1+f2; /*前两个月加起来赋值给第三个月*/ 3.while()例:求Sn=a+aa+aaa+aaa之值,n,a由键盘输入。#includevoid main() int a,n,i=1,sn=0,tn=0; printf(a,n=:); scanf(%d,%d,&a,&n); while(i=n) tn=tn+a; sn=sn+tn; a=a*10; +i; printf(a+aa+aaa+aaa=%dn,sn);4.dowhile()题目:求1+2+3+100的值。#includevoid main()int sum=0,i;i=1;do sum=sum+i; i+;while(i=100);printf(“sum=%dn”,sum);5.continue题目:把100200之间的不能被三整除的数输出。#includevoid main() int n; for(n=100;n=200;n+) if(n%3=0)continue;printf(“%dn”,n);6.break题目:计算r=1到r=10时的圆面积,直到面积大于100为止。#includevoid main()int r;float pi=3.14159f,area;for(r=1;r100) break;printf(r=%d,area=%fn,r,area);7.switch 括号内的表达式,其值可以是整型、字符型、枚举型数据。Case只是起语句标号作用,并不是在该处进行条件判断。题目:输入某年某月某日,判断这一天是这一年的第几天? 1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊 情况,闰年且输入月份大于3时需考虑多加一天。 2.程序源代码: #includemain()int day,month,year,sum,leap;printf(nplease input year,month,dayn);scanf(%d,%d,%d,&year,&month,&day);switch(month)/*先计算某月以前月份的总天数*/ case 1:sum=0;break;case 2:sum=31;break;case 3:sum=59;break;case 4:sum=90;break;case 5:sum=120;break;case 6:sum=151;break;case 7:sum=181;break;case 8:sum=212;break;case 9:sum=243;break;case 10:sum=273;break;case 11:sum=304;break;case 12:sum=334;break;default:printf(data error);break;sum=sum+day; /*再加上某天的天数*/if(year%400=0|(year%4=0&year%100!=0)/*判断是不是闰年*/leap=1;elseleap=0;if(leap=1&month2)/*如果是闰年且月份大于2,总天数应该加一天*/sum+;printf(It is the %dth day.,sum);8.goto题目:求1+2+3+100的值。#includevoid main() int i,sum=0;i=1;loop:if(i=100) sum=sum+i; i+; goto loop;printf(%dn,sum);9.return题目:有一个34的二维数组,求所有元素中的最大值。#includevoid main()int max_value(int array4);int a34=1,3,5,7,2,4,6,8,15,17,34,12;printf(max value is %dn,max_value(a);int max_value(int array4)int i,j,max;max=array00;for(i=0;i3;i+)for(j=0;jmax)max=arrayij;return(max);二、函数调用语句(函数调用加一个分号构成)题目:练习函数调用#include voidhello_world(void) printf(Hello,world!n); voidthree_hellos(void) intcounter; for(counter=1;counter=3;counter+) hello_world();/*调用此函数*/ voidmain(void) three_hellos();/*调用此函数*/ 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。#includemain()int number10;input(number);max_min(number);output(number);input(number)int number10;int i;for(i=0;i9;i+)scanf(%d,&numberi);sc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司撕名牌策划方案
- 公司日常打卡小活动方案
- 公司组织哪些活动方案
- 公司美食节活动策划方案
- 公司沙龙如何做活动方案
- 公司节能减排策划方案
- 公司整年团建活动方案
- 公司消费扶贫活动方案
- 公司职工瑜伽活动方案
- 公司环保创新活动方案
- 煤矿防灭火专项设计
- (完整版)GJB150A三防试验(霉菌盐雾湿热)
- “强基计划”学科能力竞赛训练物理试题(一)
- DB13T 5274-2020 医疗机构安全生产风险管控与隐患排查治理规范
- 医院胃镜室设备清单
- 隧道施工队伍管理模式课件
- 服装生产管理的真题与答案
- 食品安全承诺书
- 武汉理工大学船舶建造工艺学期末考试试卷试题二
- 动力电池电气元器件选型报告
- 人教小学英语四年级下册单词表
评论
0/150
提交评论