您好,欢迎访问三七文档
页眉内容根据工程勘察报告揭露,本场地自地表至持力层深度范围内所揭露的土层主要由饱和粘土、砂土组成,具有成层分布的特点。页脚内容1)变量为什么必须初始化所谓初始化就是赋值的意思。2)常量在C语言中是如何表示整数:十进制:传统写法例:inta=123;十六进制:前面加0X(0是数字零,X可以大小写)八进制:前面加0(0是数字零)浮点数:传统写法例:floata=3.2;科学计数法例:floata=3.2e3;或floata=3.2e-2;(e表示为10)浮点数的存储所带来的问题Float和double都不能保证可以精确的存储一个小数。字符:单个字符用单引号括起来;字符串用双引号括起来例:‘A’表示字符A.(注意:‘AB’是错误的,正确写法“AB”。)“A”是正确的,因为“A”代表了‘A’‘\0’的组合(0是数字)3)常量以什么样的二进制代码存储在计算机中整数是以补码的形式转化为二进制代码存储在计算机的实数是以IEEE754标准转化为二进制代码存储在计算机的字符的本质实质也是与整数的存储方式相同4)什么是字节字节就是存储数据的单位,并且是硬件所能访问的最小单位。(一个字节=8个位)5)什么是ASCIIASCII不是一个值,而是一种规定。ASCII规定了不同的字符是使用哪个整数值去表示。‘A’——65;‘B’——66;‘a’——97;‘b’——98;‘0’——48(0是数字)6)运算符算术运算符+—*/(除)%(取余)除法/的运算结果和运算对象的数据类型有关,两个数都是int,则商就是int,若商有小数,则截取小数部分;被除数和除数中只要有一个或两个都是浮点型数据,则则商也是浮点型,不截取截取小数部分。例:16/3==5;16/5.0==3.20000;16.0/5==3.200003/5==0;5/3==1取余%的运算对象必须是整数,结果是整除后的余数,其余数的符号和被除数相同。例:13%3==1;13%—3=1;—13%3==—1;—13%—3==—1页眉内容根据工程勘察报告揭露,本场地自地表至持力层深度范围内所揭露的土层主要由饱和粘土、砂土组成,具有成层分布的特点。页脚内容关系运算符==!==逻辑运算符!(不等于)&&(并且)||(或)&&左边的表达式为假,右边的表达式肯定不执行||左边的表达式为真,右边的表达式肯定不执行赋值运算符=*=(a*=3等价于a=a*3)优先级别算术关系逻辑赋值三目运算符A?B:C等价于if(A)B;elseC;逗号表达式(A,B,C,D)功能:从左到右执行,最终表达式的值是最后一项的值7)如何使用scanf编写出高质量代码1.使用scanf之前最好先使用printf提示用户以什么样的方式输入如:printf(请输入两个值(中间用空格分隔):\n);scanf(%d%d,&a,&b);printf(a=%d,b=%d\n,a,b);2.Scanf中尽量不要使用非输入控制符,尤其不要\nScanf(“%c”,ch);//%c前面必须加一个空格3.应该编写代码对用户的非法输入做适当的处理如:charch;While((ch=getchar())!=‘\n’)Continue;例:#includestdio.hintmain(void){inta;intb;charch;scanf(%d,&a);printf(a=%d\n,a);while((ch=getchar())!='\n')continue;scanf(%d,&b);printf(b=%d\n,b);页眉内容根据工程勘察报告揭露,本场地自地表至持力层深度范围内所揭露的土层主要由饱和粘土、砂土组成,具有成层分布的特点。页脚内容return0;}8)if的范围问题1.If(表达式)语句A;语句B;If默认只控制语句A的执行或不执行,if无法控制语句B。2.If(表达式){语句A;语句B;}此时if可以控制语句A和语句B由上可知:if默认只能控制一个语句,如果想控制多个语句,就必须把这些语句用{}括起来9)if的常见问题解释1.空语句的问题If(ab);等价于If(ab;//这是一个空语句2.If(ab);//这里不应该加分号A;elseB;这是错误的语句3.If(表达式1)A;Elseif(表达式2)B;Elseif(表达式3)C;ElseD;即便表达式1和2都成立,也只会执行A语句4.If(表达式1)A;Elseif(表达式2)B;Elseif(表达式3)C;这样写法不会出错,但逻辑上有漏洞页眉内容根据工程勘察报告揭露,本场地自地表至持力层深度范围内所揭露的土层主要由饱和粘土、砂土组成,具有成层分布的特点。页脚内容5.If(表达式1)A;Elseif(表达式2)B;Elseif(表达式3)C;Else(表达式4)//正确写法要么去掉表达式4,要么在else后面加ifD;这样写是错误的6.If(表达式1)A;Elseif(表达式2)B;Elseif(表达式3)C;Else(表达式4);//无实际意义的语句D;这样写法不会出错,但逻辑上有漏洞Else(表达式4);//无实际意义的语句D;等价于Else(表达式4);D;10)前自增和后自增的异同相同最终结果i的值加1不同前自增整体表达式的值是i加1之后的值后自增整体表达式的值是i加1之前的值11)for和while可以相互转换For(1;2;3)A;等价于1;While(2){A;3;}12)do……while格式:do页眉内容根据工程勘察报告揭露,本场地自地表至持力层深度范围内所揭露的土层主要由饱和粘土、砂土组成,具有成层分布的特点。页脚内容{……}while(表达式);do……while不等价于for和while主要用于人机交流例:#includestdio.hintmain(void){charch;do{intn;inti=0;intsum=0;printf(请输入你要求和的数:);scanf(%d,&n);for(i;in;++i)sum+=i;printf(sum=%d\n,sum);printf(你想继续吗?继续请输入Y或y,退出请输入任意键\n);scanf(%c,&ch);//%c前面必须加一个空格}while(ch=='Y'||ch=='y');return0;}13)switch语句例:#includestdio.hintmain(void){intnum;printf(请选择你的楼层数:);scanf(%d,&num);switch(num)页眉内容根据工程勘察报告揭露,本场地自地表至持力层深度范围内所揭露的土层主要由饱和粘土、砂土组成,具有成层分布的特点。页脚内容{case1:printf(第一层到!\n);break;case2:printf(第二层到!\n);break;case3:printf(第三层到!\n);break;case4:printf(第四层到!\n);break;default:printf(还没有盖到这一层!\n);break;}return0;}Switch是选择不是循环,如果在switch中出现了break语句。该语句的功能只是退出switch语句转去执行它下面的语句。在switch中出现continue是错误的,除非switch本身属于for或while循环的一部分。14)break和continueBreak的用法Break如果用于循环是用来终止循环Break如果用于switch,则是用于终止switchBreak不能直接用于if,除非if属于循环内部的一个字句例:for(i=0;i3;++i){if(32)break;//break虽然是if内部的语句,但break终止的是if外部的for循环printf(哈哈!\n);//永远不会输出}在多层switch嵌套中,break只能终止距离它最近的那个switch在多层循环中,break只能终止距离它最近的那个循环页眉内容根据工程勘察报告揭露,本场地自地表至持力层深度范围内所揭露的土层主要由饱和粘土、砂土组成,具有成层分布的特点。页脚内容例:for(i=0;i3;++i){for(j=1;j4;++j)//被break终止了break;//break只能终止距离它最近的那个循环printf(哈哈!\n);}Continue的用法用于跳过本次循环余下的语句,转去判断是否需要执行下次循环例:For(1;2;3){A;B;Continue;//如果执行该语句,则执行完该语句后,会执行语句3,C和D都会被跳过去,C和D不会被执行。C;D;}15)数组一维数组怎样定义一个一维数组为n个变量连续分配存储空间所有的变量数据类型必须相同所有变量所占的字节大小必须相等不初始化,所有元素是垃圾值inta[5];错误写法:inta[5];a[5]={1,2,3,4,5};只有在定义数组的同时才可以整体赋值,否则,是错误的。正确写法:inta[5]={1,2,3,4,5};inta[5]={1,2,3,4,5};inta[5]=100;//错误,因为没有inta[5]这个元素inta[5]={1,2,3,4,5};inta[b];页眉内容根据工程勘察报告揭露,本场地自地表至持力层深度范围内所揭露的土层主要由饱和粘土、砂土组成,具有成层分布的特点。页脚内容如果要把a数组中的值全部赋值给b数组错误写法:b=a;正确写法:For(i=0;i5;++i)b[i]=a[i];二维数组inta[3][4];总过有12个元素,可以看做3行4列。这12个元素如下:a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]a[1][2]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3]初始化inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};inta[3][4]={{1,2,3,4},{5,6,7,8,},{9,10,11,12}};输出数组元素:For(i=0;i3;++i){For(j=0;j4;++j)Printf(“%d”,a[i][j]);}多维数组是否存在多维数组不存在,因为内存是线性一维的n维维数可以当做每个元素是n—1维数组的一维数组如:inta[3][4];该数组是含有3个元素的一维数组,只不过每个元素都可以再分为4个小元素inta[3][4][5];该数组是含有3个元素的一维数组,只不过每个元素都是4行5列的二维数组16)函数什么事函数逻辑上:能够完成特定功能的独立代码块物理上:能够接受数据能够对接受的数据进行处理能够将数据处理的结果返回【也可以不返回】页眉内容根据工程勘察报告揭露,本场地自地表至持力层深度范围内所揭露的土层主要由饱和粘土、砂土组成,具有成层分布的特点。页脚内容函数是个工具,它是为了解决大量类似问题而设计的,它可以当做一个黑匣子。intf(void)//括号中的void表示该函数不能接受数据,int表示该函数返回值类型值是int类型voidg(void)//函数名前面的void表示该函数没有返回值函数返回值的类型也称为函数的类型,如果函数名前面的返回值类型和函数执行体中的return表达式中表达式类型不同时,最终函数返回值的类型以函数名前面的返回值类型为准例:#includestdio.hintf(){return9.6;//因为函数的返回值类型是int,所以最终f返回的是9而不是9.6}intmain(void){inti=15;doublej=5.5;j=f();printf(%lf,j);return0;}return表达式的含义1、终止被调函数,向主函数返回表达式的值2、如果表达式为空,则只终止函数,不向主函数返回任何值3、break是用来终止循环和switch的,return是用来终止函数的例:voidf(){return;//只终止函数,不向主函数返回任何值}intf(){return10;//第一,终止函数,第二,向主调函数返回10}页眉内容根据工程勘
本文标题:C语言整理笔记
链接地址:https://www.777doc.com/doc-1885073 .html