版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
./程序设计基本概念1.1程序和程序设计程序:连续执行的一条条指令的集合称为"程序"。对于计算机来说,它不能识别由高级语言编写的程序,它只能接受和处理由0和1的代码构成的二进制指令或数据。由于这种形式的指令是面向机器的,因此也被称为"机器语言"。所以所有由高级语言编写的程序都要经过编译,编译成二进制代码。这种具有翻译功能的软件称为编译程序。语言有很多种,我们现在要谈论的就是C语言。为什么计算机会能进行各种各样的操作,就是由不同的指令来实现的。而不是只有C语言才可以实现这样的功能。还有其它很多语言。但是我们一般说C语言是其它语言的母语。会了C语言其它的语言在学习的过程就会感到轻松一些。程序设计1.确定数据结构2.确定算法3.编码4.在计算机上调试程序5.整理并写出文档资料1.2算法定义:是指为了解决某个特定的问题而采取的确定且有限的步骤。有穷性确定性可行性有零个或多个输入有一个或多个输出1.3结构化程序设计和模块化结构结构化程序由三种基本结构组成顺序结构语句语句1语句2选择结构判断表达式子判断表达式子不满足语句1语句2循环结构判断表达式判断表达式不满足满足循环体循环体判断表达式循环体判断表达式满足不满足12计算机能直接执行的程序是〔B。A源程序B目标程序C汇编程序D可执行程序13以下叙述中正确的是<D>A程序设计的任务就是编写程序代码并上机调试B程序设计的任务就是确定所用数据结构C程序设计的任务就是确定所用算法D以上三种说法都不完整:C程序设计的初步知识2.1C语言程序的构成和格式#include<stdio.h>Main<>{doublea,b,area;a=1.2,b=3.6;/*将矩形的两条边长分别赋给a和b变量*/area=a*b;printf<"a=%f,b=%f,area=%f\n",a,b,area>;/*输出矩形的两条边长和面积*/}#include<stdio.h>:每当写一个程序时,第一条语句永远是这个语句,因为一个程序可以没有输入但必须要有输出,而这个语句就是控制输入输出的。所以任何一个程序都必须由这个语句开始。Main<>:是一个程序的主函数。一个程序是由多个函数组成的,而任何一个程序都要有一个主函数,有且只有一个。任何程序都是由主函数开始执行的。{}:它们两个必须要成对出现,它们中的语句是主函数体。包括定义部分和执行部分。它们中的语句,每一条必须由;结束。;是C语句的一个组成部分而不是一个结束标识。/**/:注释符一定要成对出现,不允许嵌套。两个符号间的语句不被执行。例年真题:#include<stdio.h>main<>{Inta;A=5;/*给A变量赋值5A+=3;再赋值后再加3*/Printf<"%d",a>;}〔11以下叙述中正确的是〔C。AC程序的基本组成单位是语句BC程序中的每一行只能写一条语句二级C语言程序设计试卷C简单C语句必须以分号结束DC语句必须在一行写完〔11以下叙述中正确的是<C>
A>C程序中的注释只能出现在程序的开始位置和语句的后面
B>C程序书写格式严格,要求一行只能写一个语句
C>C程序书写格式自由,一个语句可以写在多行上
D>用C语言编写的程序只能放在一个程序文件中第二课:C语言的基础知识2.2标识符,常量和变量标识符:定义:由字母,数字和下划线组成,并且第一个字符必须为字母或下划线的。这样的组成就是标识符。下列合法的是:elsewhat#$12334aa34a_ba-bIfa=3A=4注意:在C写字母与小字字母被认为是两个不同的字符。分类:关键字:在C中已经定义好了的,不能用作它用的。如ifdoubleint等等。预定义标识符:如printfscanf用户标识符:用户根据自己的需求来定义的。〔12以下选项中,能用作用户标识符的是<C>AvoidB8_8C_0_Dunsigned〔11以下选项中合法的标识符是<C>A1-1B1—1C-11D1〔12以下选项中不合法的标识符是<C>
A>printB>FORC>&aD>_00常量:定义:是指在程序的执行的过程中,其值不会被改变的量。分类:整型常量:没有小数的常量如:391234等等都是。实型常量:有小数点的常量如:3.93.03.字符常量:由单个字符组成的量如:’a’‘b’‘3’字符串常量:至少由一个字符组成的量如:"a""abc""beijing"符号常量:符号常量的值到底是多少,这是由在来定义符号常量时来决定的?2*pi〔13以下选项中,能用作数据常量的是<D>
Ao115B0118C1.5e1.5D115L〔13以下选项中不能作为C语言合法常量的是〔A。A'cd'B0.1e+6C"\a"D'\011'<13>以下选项中不属于字符常量的是<B>
A>'C'B>"C"C>'\xCC0'D>'\072'2.3整型常量与实型常量整型常量的几个表示方法十进制数:八进制数:以0开头的数字,由0-7组成。下列合法的八进制数是A,0B,028C,-077D,01.0十六进制数:以0X开头,由0-9和A-F组成。A,oxffB,0xabcC,0x11D,0x19实型常量123.4小数形式:123.4指数形式:1.234e21.字母e和E之前必须要有数字2.字母e和E之后的数字必须是整数3.字母e’和数字之间不能有空格。A,2.607E-10.8103E2-77.77456E-2变量:1.定义:在程序的运行过程中其值可以被改变的量,就叫变量。2.原则:变量必须先定义后使用。变量定义的过程就是给变量开辟存储单元的过程。3.分类:整型变量:用关键字int来表示.shortint短整型longint长整型在存中占4个字节如123Lunsigned无符号如有-200U这就是错的。变量的定义:inta这是定义了一个整型变量a.实型变量:用关键字double或float来表示。float单精度在存中占4个字节double双精度在存中占8个字节。算术表达式一、基本的算术运算符+-*/%这些是双目运算符〔就是指操作对象有两个注意:除%外,其它的运算符的运算对象可以是整型也可以是实型。%的操作对象只能是整型。如10%3=110.7%310%4.5x%3=0+-也可以做为单目运算。-5.4+4.9说明:1.如果双目运算符两边运算数的类型一致,则所得结果的类型与运算数的类型一致。如1.0/2.0=0.51/2=02.如果双目运算符两边运算数的类型不一致,则系统会自动进行类型转换,使两边的类型一致后,再进行运算。1.0/2=0.53.所有的单精度数据,在运算过程中都以双精度进行运算。二、优先级〔+-*/%+-由高——————低如<5+1>/2=???强制类型转换表达式格式:〔类型名〔表达式例:〔int3.234=3<double>10%3=?〔14表达式:4-<9>%2的值是<B>A0B3C4D5<14>设变量已正确定义并赋值,以下正确的表达式是<C>A>x=y*5=x+zB>int<15.8%5>C>x=y+z+5,++yD>x=25%5.02.6赋值表达式格式:变量名=表达式注:1.不可以颠倒〔左边必须是变量名,右边必须是C语言中合法的表达式2.功能就是先求出右边表达式的值,然后把此值赋值给赋值号左边的变量。确切的说是把数据存入以该变量为标识的存储单元中去。a=4,a=73.结合性的优先级仅高于逗号表达式。顺序是自右向左的。如a=2+7/34."="是一个赋值号,不是一个等号。5.x=y。变量的值也是可以传递和赋值的。它的意思就是将变量Y中的值赋值到X中去。同样N=N+1也成立6.赋值运算符的左侧只能是变量,不能是常量或表达式a+b=c这就是的7。赋值号的右边也可以是一个赋值表达式。如a=b=7+1;补充;表达式与语句的区别,表达式后面加一个分号就是语句。复合赋值表达式例:a+=3a=a+3同理可得a*=3/=-=a+=a-=a+aa的初值是9a+=a-=18a+=<a=a-18>a+=<a=-9>a+=a-18〔15若有定义语句:intx=10;,则表达式x-=x+x的值为<B>A-20B-10C0D10〔14设有定义:intx=2;,以下表达式中,值不为6的是<D>Ax*=x+1x=x*<x+1>Bx++,2*xCx*=〔1+xD2*x,x+=2<17>若变量均已正确定义并赋值,以下合法的C语言赋值语句是<A>A>x=y==5;B>x=n%2.5;C>x+n=ID>x=5=4+1;2.7++和——的讲解++:自身加1--:自身减1如i=3i++_______I=i+1i=4单目3++++II++当++在前,先自身加1,然后再干别人让干的事情。当++在后,先别人让干的事情然后再干自身加1。inti=3;inta;a=i++;a=3a=++I;a=4第三课:输入和输出语句3.2输出语句的讲解一、printf函数的一般调用形式格式:printf<格式控制,输出项1,输出项2,>;在printf函数的最后面写上;号就是输出语句。1,给输出项白提供输出格式说明格式说明符:作用:就是使数据按格式说明符的要求进行输出。组成:由%号和紧跟在其后的格式描述符组成。int%dfloat或double%f或e%char%c2.提供原样输出的文字或字符在""中除了格式说明符之外的容要全部原样输出。各个输出项之间要用逗号隔开。输出项可以是任意合法的常量,变量或表达式。printf中常用的格式说明在格式说明符中,每一个格式说明符都必须以%号开头由相应的类型标识字母结束。但在他们之间可以有其它的一个容:%c:输出一个字符%d:输出一个十进制的数据%o:以八进制格式输出。%X:以十六进制输出%U:无符号十进制输出%f:以带小数点的数字输出%e:以指数形式输出%s:输出一个字符串。%%:输出一个%号%4d:输出的数据长度是4个长度,当原来的长度大于4个时会自动突破。小于4个时会填充空格。%x.yf:x代表数制的宽度〔包括小数点。Y代表小数点后面的小数位数。注意事项:1.输出比较自由一些,输出有的各个数之到底是什么,取决于格式说明符之间的容。2.格式说明符要与输出项一一对应。3.输出语句中还可以有\n\r\t\a4.尽量不要在输出语句中改变输出变量的值。5.输出的数据中如果存在变量,一定要定义过的。习题讲解〔13阅读以下程序#includemain<>{intcase;floatprintF;printf<"请输入2个数:">;scanf<"%d%f",&case,&pjrintF>;printf<"%d%f\n",case,printF>;}该程序编译时产生错误,其出错原因是〔AA定义语句出错,case是关键字,不能用作用户自定义标识符B定义语句出错,printF不能用作用户自定义标识符C定义语句无错,scanf不能作为输入函数使用D定义语句无错,printf不能输出case的值〔16有以下程序#includemain<>{inta=1,b=0;printf<"%d,",b=a+b>;printf<"%d\n",a=2*b>;}程序运行后的输出结果是〔DA0,0B1,0C3,2D1,2〔15程序段:intx=12;doubley=3.141593;printf〔"%d%8.6f",x,y;的输出结果是〔AA123.141593B123.141593C12,3.141593D123.141593#include<stdio.h>main<>{doublea=123.456;printf<"%6.2f",a>;}输入语句格式:scanf<格式控制,输入项1,输入项2,...>;例如:想通过键盘输入3个数分别给变量a,b,c。并且他们分别为整型,浮点型,双精度型。输入语句为scanf<"%d%f%lf",&k,&a,&y>;说明:1.格式说明符与输出语句一样。2.在格式串中,必须含有与输入项一一对应的格式转换说明符。3.在VC6.0的环境下,要收输入的DOUBLE型数据的格式说明符一定要用%lf,否则数据不能正确的输入4.由于输入是一个字符流,所以当输入的数据少于输入项时,程序会等待用户输入,直到满足要求。当输入的数据多于输入项时,多余的数据会自动作废。例题:intx;x=11/3;inty=5;printf<"%%d,%%%d\n",x,y>;结果是:%d,%3[3.5]若变量已正确说明为int类型,要给a、b、c输入数据,以下正确的输入语句是<D>A>read<a,b,c>;B>scanf<"%d%d%d",a,b,c>;C>scanf<"%D%D%D",&a,%b,%c>;D>scanf<"%d%d%d",&a,&b,&c>;[3.6]若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c赋予33,以下不正确的输入形式是<A>A>10B>10.0,22.0,33.0C>10.0D>10222222.033.03333scanf<"%f%f%f",&a,&b,&c>;复合语句:多个语句被{}括起来,当成一条语句来执行。空语句:最后的表示只有一个;程序举例:1。编写一个程序,从键盘上输入两个数字,让后让他们互换一下。#include<stdio.h>main<>{inta,b;printf<"请输入两个数字:">;scanf<"%2d%3d",&a,&b>;printf<"qian:%d%d",a,b>;intc;c=a,a=b,b=c;printf<"后:%d%d",a,b>;}2。编写程序,对一个double型数据进行四舍五入运算。要求保留两位有效小树。123.4567123'4567*100=12345.6712345.67+0.5=12346.17<int><12346.17>=1234612346/100=123.463。编写程序,使从键盘中输入的三位数倒着输出。选择题[3.1]若a、b、c、d、都是int类型变量且初值为0,以下选项中不正确的赋值语句是<C>A>a=b=c=d=100;B>d++;C>c+b;D>d=<c=22>-<b++>;[3.2]以下选项中不是C语句的是<C>A>{inti;i++;printf<"%d\n",i>;}B>;C>a=5,c=10D>{;}[3.3]以下合法的C语言赋值语句是<D>A>a=b=58B>k=int<a+b>;C>a=58,b=58D>--i;[3.4]以下程序的输出结果是<C>A>0B>1C>3D>main<>{intx=10,y=3;printf<"%d\n",y=x/y>;}[3.5]若变量已正确说明为int类型,要给a、b、c输入数据,以下正确的输入语句是<D>A>read<a,b,c>;B>scanf<"%d%d%d",a,b,c>;C>scanf<"%D%D%D",&a,%b,%c>;D>scanf<"%d%d%d",&a,&b,&c>;[3.6]若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c赋予33,以下不正确的输入形式是〔BA>10B>10.0,22.0,33.0C2222.033.03333scanf<"%f%f%f",&a,&b,&c>;[3.7]若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句组是<C>A>a=a+b,b=a-b,a=a-b;B>t=a,a=b,b=t;C>a=t;t=b;b=a;D>t=b;b=a;a=t;[3.8]若变量已正确定义,以下程序段的输出结果是<D>A>输出格式说明与输出项不区配,输出无定值B>5.17C>5.168D>5.169X=5.16894;Printf<"%f\n",<int><x*1000+0.5>/<float>1000>;[3.9]若有以下程序段,c3中的值是<A>A>0B>1/2C>0.5D>1intc1=1,c2=2,c3;c3=c1/c2;[3.10]若有以下程序段,其输出结果是<B>A>3,0,-10B>0,0,5Cinta=0,b=0,c=0;c=<a-=a-5>,<a=b,b+3>;printf<"%d,%d,%d\n",a,b,c>;填空题[3.21]若有以下定义,请写出以下程序段中输出语句执行后的输出结果。〔1-200,2500〔2i=-200,j=500<3>i=-200回车j=2500inti=-200,j=2500;printf<"<1>%d%d",i,j>;printf<"<2>i=%d,j=%d\n",i,j>;printf<"<3>i=%d\nj=%d\n",i,j>;[3.22]变量i、j、k已定义为int类型并有初值0,用以下语句进行输入时scanf<"%d",&I>;scanf<"%d",&j>;scanf<"%d",&k>;当执行第一个输入语句,从键盘输入:12.3<CR><CR>表示Enter键则变量i、j、k的值分别是____12____、____0___、__0____。[3.23]复合语句在语法上被认为是一条语名。空语句的形式是;[3.24]C语句的最后用;结束。[3.25]以下程序段,要求通过scanf语句给变量赋值,然后输出变量的值。写出运行时给k输入100,给a输入25.81,给x输入1.89234时的三种可能的输入形式_____、_____、_____。intk;floata;doublex;scanf<"%d%f%lf",&k,&a,&x>;pirntf<"k=%d,a=%f,x=%f\n",k,a,x>;编程题和改错题[3.29]以下程序多处有错。要按下面指定的形式输入数据和输出数据时,请对该程序做相应的修改。main{doublea,b,c,s,v;printf<inputa,b,c:\n>;scanf<"%d%d%d",a,b,c>;s=a*b;/*计算长方形面积*/v=a*b*c;/*计算长方体体积*/printf<"%d%d%d",a,b,c>;printf<"s=%f\n",s,"v=%d\n",v>;}当程序执行时,屏幕的显示和要求输入形式如下:inputa,b,c:2.02.03.0此处的2.02.03.0是用户输入的数据a=2.000000,b=2.000000,c=3.000000此处是要求的输出形式s=4.000000,v=12.000000[3.30]编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。[3.31]编写程序,输入两个整数:1500和350,求出它们的商数和余数并进行输出。[3.32]编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数后一位数,对小数点后第二位数进行四舍五入,最后输出结果。[3.33]编写程序,读入三个整数给a、b、c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c,把c中原来的值给a。第四课:C语言的程序结构4-1节、关系运算与逻辑运算一、简介关系表达式与逻辑表达式的运算结果都会得到一个逻辑值。就是"真"、"假"在C语言中0表示"假",非0〔无论是负数还是正数都是真,更多时候用1来代替表示"真"。二、几个简单的关系运算符<<=>>===!=注意:1,由两个字符组成的运算符,中间不能有空格2,它们都是双目运算符,具有自左至右的结合性。3,上面的6个运算符中,前4个的优先级要比后2个的优先级要高。先计算,后判断,最后进行赋值运算。三、几个简单的逻辑运算符&&与一假则假||或一真则真!非非假则真,非真则假1&&2=10&&6=0inta=4,b=7;a&&7=1intx=0,y=7;x++&&y++?x=1y=7++x&&y++?x=1y=8同样放在||中也是一样的。4-2、4-3节、if语句一、定义:只有两种结果。要么执行这条语句,要么执行那条语句。if<条件表达式>上述条件成立执行的句子else上述条件不成立执行的句子如:if<成绩>60>显示及格else显示不及格二、分类1.不含有else的语句if<表达式>语句if<a<b>{t=a;a=b;b=t;}2.含有else语句if<条件>语句1;else{语句2;语句3;}注:1.没有分号2.控制的是与if或者else紧临的"一条"语句。if<a<b>printf<"%d",b>;elseprintf<"%d",a>;if<a%3==0>yeselseno4-4节、结合一个例题来给大家分析if的嵌套输入一个学生的成绩,评定他的等级。每十分一个等级if<>elseif<>elseif<>`elseif<a>=90>printf<"a">;elseif<a>=80>printf<"b">;elseif<a>=70>printf<"c">;elseif<a>=60>printf<"d">;elseprintf<"e">;4-5、节7设有定义:inta=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是〔CAif<a>b>c=a,a=b,b=c;Bif<a>b>{c=a,a=b,b=c;}Cif<a>b>c=a;a=b;b=c;Dif<a>b>{c=a;a=b;b=c;}〔18有以下程序应该选〔B#include<stdio.h>main〔{intx;scanf〔"%d",&x;if〔x<=3;elseif〔x!=10printf〔"%d\n",x;}程序运行时,输入的值在哪个围才会有输出结果A不等于10的整数B大于3且不等于10的整数C大于3或等于10的整数D小于3的整数〔19有以下程序〔C#include<stdio.h>Main〔{inta=1,b=2,c=3,d=0;if〔a==1&&b++==2if〔b!=2||c--!=3printf〔"%d,%d,%d\n",a,b,c;elseprintf〔"%d,%d,%d\n",a,b,c;elseprintf〔"%d,%d,%d\n",a,b,c;}程序运行后的输出结果是A1,2,3B1,3,2C1,3,3D3,2,14-6节、条件表达式是C语言中唯一的一个三目运算。格式:表达式1?表达式2:表达式3当1成立〔非零时时,表达式的值就是2的值,否则就是3的值。如:1.1<2?4:52.printf<"%d",x<0?<-1>*++x:x++>;<假定X的值为-3>3.++X>3?<x<3?a:b>:b4-7节、switch语句〔一switch<表达式>{case常量表达式1:语句1case常量表达式2:语句2case常量表达式3:语句3case常量表达式4:语句4case常量表达式5:语句5。。。case常量表达式N:语句N}4-8节、switch语句〔二switch<A/10>{case10:printf<"A">;case9:printf<"A">;case8;printf<"b">;case7;printf<"c">;case6;printf<"d">;default:printf<"e">;}4-9节4-15节、选择题[4.1]下列运算符中优先级最高的运算符是〔AA!B%C>-=D>&&[4.2]下列运算符中优先级最低的运算符是〔AA>||B>!=C><=D>+[4.3]为表示关系x>=y>=z,应使用的C语言表达式是〔AA><x>=y>&&<y>=z>B><x>=y>AND<y>=z>C><x>=y>=z>D><x>=y>&<y>=z>[4.4]设a、b和c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是〔DA>a&&bB>a<=bC>a||b+c&&b-cD>!<<a<b>&&!c||1>[4.5]以下程序的输出结果是:〔CA>0B>1C>2D>3main<>{inta=2,b=-1,c=2;if<a<b>if<b<0>c=0;elsec+=1;printf<"%d\n",c>;}[4.6]以下程序的输出结果是:〔AA>1B>2C>3D>4main<>{intw=4,x=3,y=2,z=1;printf<"%d\n",<w<x?w:z<y?z:x>>;}[4.7]若执行以下程序时从键盘上输入3和4,则输出结果是〔BA>14B>16C>18D>20main<>{inta,b,s;scanf<"%d%d",&a,&b>;s=a;if<a<b>s=b;s*=s;printf<"%d\n",s>;}[4.9]运行以下程序后,输出〔DA>####B>&&&&C>####&&&&D>有语法错误不能通过编译main<>{intk=-3;if<k<=0>printf<"****\n">;elseprintf<"&&&&\n">;}[4.10]若a和b均是正整数型变量,以下正确的switch语句是〔AA>switch<pow<a,2>+pow<b,2>><注:调用求幂的数学函数>{case1:case3:y=a+b;break;case0:case5:y=a-b;}B>switch<a*a+b*b>;{case3:case1:y=a+b;break;case0:y=b-a;break;}C>switch<>a{default:x=a+b;case10:y=a-b;break;case11:y=a*d;break;}D>switch<a+b>{case10:x=a+b;break;case11:y=a-b;break;}二、填空题[4.11]C语言中用非0表示逻辑值"真",用0表示逻辑值"假"。[4.12]C语言中的关系运算符按优先级别是〔!=<=_!=、<=[4.13]C语言中的逻辑运算符按优先级别是<||&&!>[4.14]C语言中的关系运算符和逻辑运算符的优先级别是<==&&>[4.15]C语言中逻辑运算符!的优先级高于算术运算符。[4.16]将下列数学式改写成C语言的关系表达式或逻辑表达式A>a=b||a<c和B>x>4||x<-4A>a=b或a<cB>|x|>4[4.17]请写出以下程序的输出结果1。main<>{inta=100;if<a>100>printf<"%d\n",a>100>;elseprintf<"%d\n",a<=100>;}[4.18]请写出与以下表达式等价的表达式A>X<=0B>1A>!<x>0>B>!0[4.19]当a=1,b=2,c=3时,以下if语句执行后,a、b、c中的值分别为3、2、2if<a>c>b=a;a=c;c=b;[4.20]若变量巳正确定义,以下语句段的输出结果是*#x=0,y=2,z=3;switch<x>{case0:switch<y==2>{case1:printf<"*">;break;case2:printf<"%">;break;}case1:switch<z>{case1:printf<"$">;case2:printf<"*">;break;default:printf<"#">;}}三、编程题[4.21]请将以下语句改写成switch语句。if<a<30>m=1;elseif<a<40>m=2;elseif<a<50>m=3;elseif<a<60>m=4;elsem=5;[4.22]编写程序,输入一位学生的生日〔年:y0、月:m0、日:d0;并输入当前的日期〔年:y1、月:m1、日:d1;输出该生的实足年龄。[4.23]编写程序,输入一个整数,打印出它是奇数还是偶数。[4.24]编写程序,输入a、b、c三个数,打印出最大者。[4.25]有一函数:x<-5<x<0>y=x-1<x=0>x+1<0<x<10>编写一程序,要求输入x的值,输出y的值。分别用〔1不嵌套的if语句〔2嵌套的if语句〔3if-else语句〔4switch语句第五课:循环结构5-1、5-2节、while语句一、格式:while<表达式>循环体注:1:2:3:一条while<a<3>1{a+=s;2s=a;3}1100inti=1,sum=0;while<i<101>sum=sum+i++;printf<"%d",sum>;丛1开始加到哪个数时他们的和将超过1000?inti=1,sum=0;while<sum<1000>{sum+=i;999+42=1041i++;}4243printf<"%d",--i>;5-3节、do-while语句dowhile<>格式:do循环体while<表达式>1235813do{a3=a1+a2;a1=a2;a2=a3;}while<a3<=1000>;1:12:;5-4节、for语句〔1for语句和for语句构成的循环结构一、格式:for<表达式1;表达式2;表达式3>循环体相当于while语句的表达式1;while<表达式2>{循环体;表达式3;}k=0for<;k<=10;>{printf<"*">;k++;}intk=0;while<k<10>{printf<"*">;k++;}注:1:表达式可以省略,但分号不可以。2:表达式可以是任意有效的C语言表达式第六课、字符型数据6-1节、字符型常量格式:’a’‘A’‘’要求:1,单引号中的大写字母和小写字母代表不同的字符常量。2.单引号中的空格也是一个字符常量,但不能是两个连续的单引号3.字符常量只能用单引号括起来,不能用双引号。转义字符\n代表回车\’代表一个单引号‘\\代表一个\\"代表一个双引号注意:转义字符常量,如’\141’只代表一个字符反斜线后的8进制数可以不用0开头。如1中所讲的141就是一个8进制数。0141反斜线后的16进制数只可以用x开头,不可以用X开头。字符串常量格式:由双引号括起来的一串字符。同时也要知道"A"和’A’是不一样的。"A"‘A’ACSII码A65a97‘a’-‘A’=326.2节、字符变量格式:chara=’s’6.3字符的输入和输出Printf和scanf函数输出和输入字符对于字符型数据的格式说明符是%cCharc=’a’;Printf<"%c",c>;Chara,b,c,d;Scanf<"%c%c%c",&a,&b,&c>;6-3节、程序举例写出26个大写字母和他们的ASCII代码要求每行输出两组数据。#include<stdio.h>Main<>{Charch;intI;For<i=0;i<26:i++>{Ch=i+65;If<i%2==0>Printf<"\n">;Printf<"c=%c,ASCII=%d",ch,ch>;}}在上面的程序中有对于字符的输入与输出,在C语言中也有另外的输入输出字符的语句。输入:变量名=getchar<>输出:putchar<变量名>函数7-1节、库函数1.调用C语言标准库函数时要求的include命令行Include命令行必须以#开头,系统提供的头文件以.h作为文件的后缀,文件名用一对双引号或一对尖括号〔需要注意include命令行不是C语句,因此不能在最后加分号2.标准库函数的调用函数名〔参数表如:putchar<ch>出现在表达式中的ch=getchar<>做为单独的语句完成某种操作。printf<"********">;7.2函数的定义和返回值由于C语言中的定义的函数不能完成用户所有的要求,所以用户可以为自己定义函数实现相应的功能。函数定义的语法1:格式:函数返回值的类型名函数名〔类型名形式参数1,类型名形式参数2……{说明部分语句部分}2:函数名和形式参数都是用户命名的标识符。在同一个程序中,函数名必须唯一,形式参数名只要在同一函数中唯一即可,可以与其他函数中的变量同名。3:C语言规定,不能在函数的部定义函数。4:若在函数的首部省略了函数返回值的类型名,则说明该函数的返回值是int类型5:除了返回值类型为int类型的函数外,函数必须先定义后调用。6:当没有函数返回值,则必须把函数定义成void类型。例:编写求两个双精度数之和的函数。
doubleadd<doublea,doubleb>{doubles;s=a+b;returns;}7-2节、函数的返回值函数的值通过return语句返回,return表达式;此表达式的值必须与函数首部所说明的类型一致,若类型不一致,则以函数值的类型为准。需要注意的是,无论函数体中有多少个return语句,只能执行一次。函数体可以没有return语句,这时也必须定义函数为
viod类型。7-3节、函数的调用函数的两种调用方式格式为:函数名〔实在参数表当实参的个数多于一个时,各实参用逗号隔开。实参的个数必须与调用函数中形参的个数相周,类型一一对应匹配。如没有形参,则形式为函数名〔注意后面的小括号不能丢。如题:#include<stdio.h>doubleadd<double,double>;main<>{doublem,n,z;scanf<"%lf%lf",m,n>;z=add<m,n>;printf<"%lf",z>;\}
doubleadd<doublea,doubleb>{doubles;s=a+b;returns;}7.3.2函数调用时的语法要求1.调用函数时,函数名必须与所调用的函数名字完全一致。2.实参的个数必须与形参的个数一致。3.C语言中规定,函数必须先定义后使用。4.C语言中,函数可以直接或间接的自己调用自己。称为递归调用fac<n>=fac<n-1>*n7-4节、函数的说明在C语言中凡是未在调用前定义的函数,C编译程序都默认函数的返回值为int型。对于返回值是其它类型的,若把函数的定义放在调用之后,应该在调用之前对函数进行说明。说明的格式:类型名函数名〔参数类型1,参数类型2.。。。。也可以用以下格式类型名函数名〔参数类型1参数名1,参数类型2参数名2,……函数说明的位置:一般为了让程序早点识别出程序中的定义好了的函数,一般将其放在程序的开始部分7-5节、调用函数和被调用函数之间的数据传递一:三种格式进行传递实在参数和形式参数之间进行数据传递通过return语句把函数值返回调用函数能过全局变量,但这不是一种好的方式,通常不提倡使用。通过一个程序来看一下数据到底是怎样传递的。#include<stdio.h>viodtry<int,int,int>;main<>{intx=2,y=3,z=0;printf<"<1>x=%dy=%dz=%d\n",x,y,z>;try<x,y,z>;printf<"<4>x=%dy=%dz=%d\n",x,y,z>;}voidtry<intx,inty,intz>{printf<"<2>x=%dy=%dz=%d\n",x,y,z>;z=x+y;x=x*x;y=y*y;printf<"<3>x=%dy=%dz=%d\n",x,y,z">;}屏幕上的结果是:x=2y=3z=0x=2y=3z=0x=4y=9z=5x=2y=3z=0再来一个程序#include<stdio.h>viodswap<int,int>;main<>{intx=10,y=20;printf<"<1>x=%dy=%d\n",x,y>;swap<x,y>;printf<"<4>x=%dy=%d\n",x,y>;}voidswap<inta,intb>{intt;printf<"<2>a=%db=%d\n",a,b>;t=a;a=b;b=t;printf<"<3>a=%db=%d\n",a,b>;}程序运行结果x=10y=20a=10b=20a=20b=10x=10y=207.6程序应用举例编写一个函数isprime<inta>,用来判断自变量a是否为素数。若是素数,函数返回整数1,否则返回0.#include<stdio.h>intisprime<int>main<>{intx;printf<"enteraintegernumber:">;scanf<"%d",&x>;if<isprime<x>>printf<"%disprime\n",x>;elseprintf<"%disnotprime\n",x>;}intisprime<inta>{inti;for<i=2;i<=a/2;i++>if<a%i==0>return0;return1;}编写函数myupper<ch>,把ch中的小写字母转换成大写字母作为函数值返回,其他字符不变。主函数中不断输入字符,用字符结束输入,同时不断输出结果。#include<stdio.h>#include<ctype.h>charmyupper<charch>{if<ch>=’a’&&ch<=’z’>ch=ch-32;returnch;}main<>{charc;while<<c=getchar<>>!=’’>{c=myupper<c>;putchar<c>;}}编写函数统计输入字符的个数,用字符结束输入,在主函数中调用此函数,输出统计结果。#include<stdio.h>longcountch<>;main<>{longn;n=countch<>;printf<"n=%ld\n",n>;}longcountch<>{long;for<cn=0;getchar<>!=’’;cn++>;return;}7-107-13节、课后习题[7.1]以下说法中正确的是CA>C语言程序总是从第一个定义的函数开始执行B>在C语言程序中,要调用的函数必须在main函数中定义C>C语言程序总是从main函数开始执行D>C语言程序中的main函数必须放在程序的开始部分[7.2]以下函数的类型是CA>与参数x的类型相同B>void类型C>int类型D>无法确定fff<floatx>{printf<"%d\n",x*x>;}[7.3]以下函数调用语句中,含有的实参个数是BA>1B>2C>4D>5func<<exp1,exp2>,<exp3,exp4,exp5>>;[7.4]以下程序的输出结果是CA>11B>20C>21D>31func<inta,intb>{intcc=a+b;returnc;}main<>{intx=6,y=7,z=8,r;r=func<<x--,y++,x+y>,z-->;printf<"%d\n",r>;}[7.5]以下程序的输出结果是AA>-1B>0C>1D>2main<>{inti=2,p;p=f<i,i+1>;printf<"%d",p>;}intf<inta,intb>{intc;c=a;if<a>b>c=1;elseif<a==b>c=0;elsec=-1;return<c>;}[7.6]以下程序的输出结果是DA>0B>1C>6D>无定值fun<inta,intb,intc>{c=a*b;}main<>{intc;fun<2,3,c>;printf<"%d\n",c>;}[7.7]以下程序的输出结果是AA>5.500000B>3.000000C>4.000000D>8.25doublef<intn>{inti;doubles;s=1.0;for<i=1;i<=n;i++>s+=1.0/i;returns;}main<>{inti,m=3;floata=0.0;for<i=0;i<m;i++>a+=f<i>;printf<"%f\n",a>L;}二、填空题[7.8]以下程序的输出结果是____12____.unsignedfun6<unsignednum>{unsignedk=1;do{k*=num%10;num/=10;}while<num>;returnk;}main<>{unsignedn=26;printf<"%d\n",fun6<n>;}[7.9]以下程序的输出结果是___9.0_____.doublesub<doublex,doubley,doublez>{y-=1.0;z=z+x;returnz;}main<>{doublea=2.5,b=9.0;printf<"%f\n",sub<b-a,a,a>>;}[7.10]以下程序的输出结果是___4_____.fun1<inta,intb>{intc;a+=a;b+=b;c=fun2<a,b>;returnc*c;}fun2<inta,intb>{intc;c=〔a*b%3;returnc;}main<>{intx=11,y=19;printf<"%d\n",fun1<x,y>>;}[7.11]下面pi函数的功能是,根据以下公式返回满足精度要求的的值.请填空.pi/2=1+1/3+1/3*2/5+1/3*2/5*3/7+1/3*2/5*3/7*4/9+...doublepi<doubleeps>{doubles=0.0,t=1.0;intn;for<__n=1__;t>eps;n++>{s+=t;t=n*t/<2*n+1>;}return<2.0*__S___>;}[7.12]以下函数用以求x的y次方.请填空.doublefun<doublex,inty>{inti;doublez=1;for<i=1;i___<=y__;i++>z=___z*x__;returnz;}n[7.13]以下程序的功能是计算S=SK!.请填空.longf<intn>K=1{inti;longs;s=__1___;for<i=1;i<=n;i++>s=__s*i___;returns;}main<>{longs;intk,n;scanf<"%d",&n>;s=__0___;for<k=0;k<=n;k++>s=s+___f<k>__;printf<"%ld\n",s>;}三、程序调试和编程题[7.14]以下fun函数用以判断n是否是素数,fun函数中有逻辑错,请调试改正.fun<intn>{intk,yes;for<k=2;k<=n/2;k++>if<n%k==0>returnyes=0;yes=1;returnyes;}:指针变量8.1变量的地址和指针:在最开始的时候,一直给大家强调变量要先定义,后使用。为什么会这个样子?这是因为,每当我们使用一个变量系统就必须要给他开辟一个存储单元。系统要对它的值进行记录。每时每刻的记录。怎样进行记录呢?系统会自动的开辟一个地方将该变量监督起来,观察和记录它的变化。这个地方多大放什么东西?这都要求我们提前和系统说好。所以就有了变量要先定义在使用说法。其实变量定义的过程就是给他开辟存储空间的过程。那么存储空间又是什么东西呢??计算机种有一个硬件叫存条,当我们提起这个硬件的时候往往都会说多大的。1G,2G,4G……这都是在说他的空间大小。计算机中的存是以字节为单位的一片连续的存储空间,每一个字节都有一个编号,这个编号就称为存地址。如同旅馆的房间一样,单人间,双人间等等,每个房间都有自己的编号。存中的空间是连续的,地址号也是连续的,并且都是用二进制数来表示的。变量在定义的时候先要说明定义的类型。如:intk;doubleb;charch;等等如此的定义。这样是在和电脑系统打招呼,我们是2人要一个两人间。目的就是告诉老板你的房间要是两个人的空间。不能定的是2人间,结果来了3个人住;同时也不能定的2人间,结果就你自己来了〔对自己来说多花钱了。综上所述:变量的定义就是给变量开辟存储空间的过程。intafloatbaaabbbb101210131014101510161017这就是变量定义的时候系统给随机开辟的地址空间。在结合我们在一开始讲的不同类型的变量的大小,其实就是在说变量所占的存单元的多少。1012就是整型变量a的首地址,1014就是浮点型变量b的首地址。当要用到一个变量时,系统就会迅速的找到这个变量。所以在C程序中还有这样的一个变量的存在,就是指针。指针就是用来存放一个变量在存中的地址,当要调用这个变量的时候能迅速的找到。用来存放一个变量地址的变量就叫指针变量。同时大家也要走出一个误区就是:指针变量之所以叫变量,就是因为它里面所存放的变量的地址也不断的变化的。指针是可以移到的。8.2指针变量的定义和指针变量的基类型一:格式:类型名*指针变量名1,*指针变量名2….如int*pi,*pj;与之前不一样的地方就是在变量的前面加了一个*。*是一个说明符,用来说明该变量是指针变量。*号省略的话就和普通的变量一样了。又如:int*pi;char*ch;inta;charc;指针的作用都是一样的,都是用来存放地址的,为什么还要分类型的。原因就是指针变量pi只能存放整型变量的地址,指针变量ch只能存放字符变量的地址。如何让一个指针存放一个变量的地址呢?pi=&a;ch=&c;&叫取址符。*叫指针运算符。能过以上的讲解在家一定对指针有了更进一步和了解。我们共同的回顾一下;变量的定义就是给其开辟存储单元的过程。任何一个变量都有自己的存储地址。指针就是用来存放变量地址的。指针也是一个变量。指针也要一个地址。那,有没有能存放指针变量地址的一个对象呢?用该怎么称呼?有它是专门用来存放指针的地址的。它就是指向指针的指针。int**p,*s;p=&s;**p就是一个指向指针的指针。它里面只能存放同种数据类型的指针的地址。给指针变量赋地址值一个指针变量可以通过不同的方式获得一个确定的地址值,从而指向一个具体的对象。〔在以后的课程中,每当一个指针中存放了一个变量的地址的时候,我们就说这个指针指向了这个变量。intk=1,*q,*p;q=&k;11qk这时可以说:q指向了变量k;q=&k+1q=&<k+1>这是错误的,指针q就是用来存放地址的,前两个例子不是。同时:&必须放在运算对象的左边,而且运算对象的类型必须与指针变量的基类型相同。2,通过指针变量获得地址值可以通过赋值运算,把一个指针变量中的地址值赋给另一个指针变量,从而使这两个指针指向同一地址。
intk,*p,*q;q=&k;p=q;也就是说指针变量p和q都指向了变量k.注:当进行赋值运算时,赋值号两边指针变量的基类型必须相同。3.给指针变量赋"空"值;"空":null的代码值为0,当执行了以上和赋值语句后,称P为空指针。null的代码值为0.p=’\0’p=0;注意:p并不是指向地址为0的存储单元,而是一个有确定的值"空"。8.4对指针变量的操作C语言提供了一个称作"间接访问运算符"的单目运算符:"*"当指针变量中存放了一个确切的地址值是,就可以用"间接运算预算符"通过指针来引用该地址的存储单元。int*p,i=10,j;p=&i;则这样的赋值语句j=*p;上面的这个赋值语句我们可以这样理解:j变量的值是由指针指向的空间中的值赋予的。这里的*p代表指针p中存放的变量i的地址中的值。*不是乘而是用来说明指针的说明符。j=i~~~~~~~j=*<&i>如果有这样的表达式代表:j=*p+1代表指针p指向的空间中中的值加1后的值给了变量j;再如int*p,k=0;p=&k;*p=100;*p+=1;注意:当*p出现在赋值号左边时,代表的是指针所指的存储单元,当出*p出现在赋值号右边时,代表的是指针所指的存储单元的容。如果有:*p+=1++*p<*p>++这三个表达式有什么不一样吗?++和*两个运算符的优先级相同。但按自右至左的方向结合。因此++*p相当于++〔*p。而在〔*p++中,一对括号不可以少,〔*p++代表先取里面的值然后再加1。而如果去掉怎成了*p++,根据顺序,先++然后再取值。这样就成了先p++再取值。而P++就是指针先向后移动。例8,1用指针指向两个变量,通过指针运算选出值小的那个数。#include<stdio.h>main<>{inta,b,min,*pa,*pb,*pmin;pa=&a;pb=&b;pmin=&min;scanf<"%d%d",pa,pb>;printf<"a=%d,b=%d\n",a,b>;*pmin=*pa;if<*pa>*pb>*pmin=*pb;printf<"min=%d\n",min>;}8.4移动指针所谓移动指针就是对指针变量加上减去一个整数,或通过赋值运算,使指针变量指向相邻的存储单元。〔因此只有当指针指向一串连续的存储单元时,指针的移动才有意义1122334455a[0]a[1]a[2]a[3]a[4]Pqp=&a[0]q=p+2q++q++q--p++对指针进行加减运算时,数字"1"不再代表十进制数1,而是指一个单位存储单元长度。这个单元到底多长,要看存储数据的类型了。如果是int则代表1个存储单元长度就是位移4个字节。如果是char类型则代表1个存储单元长度就是位移1个字节。如果变量的类型是double,8个字节为一个单位,而指向它的指针是int,4个字节为一个单位。那么这个时候指针每移动一个单位就代表移动4个字节的长度,这个时候读取数据的时候就会出错。8.5函数之间地址值的传递▲形参为指针变量时参数和形参之间的数据传递若函数的形参为指针类型,调用该函数时,对应的实参必须是基类型相同的地址值或者是已指向某个存储单元的指针变量。例题:编写函数myadd〔int*a,int*b,函数中把指针a和b所指的存储单元中的两个值相加,然后将和值作为函数值返回。在主函数中输入两个数给变量,把变量地址做为实参,传给对应的形参。#include<stdio.h>intmyadd<int*a,int*b>{intsum;sum=*a+*b;returnsum;}main<>{intx,y,z;int*p,*q;p=&x,q=&y;printf<"enterx,y:">;scanf<"%d%d",&x,&y>;z=myadd<*p,*q>;printf<"%d+%d=%d",x,y,z>;}通过传送地址值在被调用函数中直接改变调用函数中的变量的值之前我们已经知道形参值的改变并不能改变对应实参的值,把数据从被调用函数返回到调用函数的唯一途径是通过return语句返回函数值。例题:调用swap函数,交换主函数中变量x和y中的数据#include<stdio.h>voidswap<int*,int*>main<>{intx=30,y=20;printf<"<1>x=%dy=%d\n",x,y>;swap<&x,&y>;printf<"<4>x=%dy=%d\n",x,y>;}voidswap<int*a,int*b>{intt;printf<"<2>a=%db=%d\n",*a,*b>;t=*a;*a=*b;*b=t;printf<"<3>a=%db=%d\n",*a,*b>;}例题:编写函数order〔int*a,int*b,使用函数中的第一个实参总是存放两个数中较小的数,第二个参数存放两个数中较大的数#include<stdio.h>voidswap<int*x1,int*x2>{intt;t=*x1;*x1=*x2;*x2=t;}voidorder<int*a,int*b>{if<*a>*b>swap<a,b>;}main<>{intx,y;printf<"输入x,y:">;scanf<"%d%d",&x,&y>;printf<"x=%dy=%d\n",x,y>;order<&x,&y>;printf<"x=%dy=%d\n",x,y>;}8.5函数返回地址值函数值的类型不仅可以是简单的数据类型,而且可以是指针类型例:以下函数把主函数中变量i和j中存放较大数的那个地址作为函数值传回。数组之前我们只学过单个变量的定义,而有的时候就需要一片连续的存储单元。单个单个的定义第一,分配的存空间不一定连续,这样指针就不能移动了。第二,单个单个的定义会费时费力。所以这个时候就需要一个东西来满足用用户这样一个需求。数组就在这样的条件下产生了。数组:多个相同类型的变量被存储在一片连续的存储单元中。9.1一维数组的定义和一维数组元素的引用★一维数组的定义:当数组中每个元素只带有一个下标时,称这样的数组为一维数组。格式:类型名数组名[整型常量表达式]如inta[10]说明:定义了一个名为a的一维数组方括号中的10规定了a数组含有10个元素,它们是〔a[0].a[1].a[2].a[3].a[4].a[5].a[6].a[7].a[8].a[9]类型名int规定了a数组中每个元素都是整型,在每个元素中只能存放整形数。每个元素只有一个下标,C语言规定每个数组第一个元素的下标总为0〔称为数组下界,那么最后一个9〔称为数组的下标为上界在存中给数组中每个成员开辟了一个存储单元。总计大小:10*4=40字节。这样每当调用数组中的一个成员时就用它们的下标。如a[*]注:当同时定义多个数组时彼此之间用,号隔开如doublew[22],v[100],u[5];以上定义了三个数组。需要注意的是,[]中的容只能是整型常量或整型常量表达式。如inta[11+22]也可以。一维数组元素的引用格式:数组[下标表达式]其实x[0],x[j],x[i+k]都是对数组中元素的合法引用形式。但是需要注意的是下标表达式的值必须大于或等于0,并且小于数组上界的数。能过上面知识讲解,大家应该建立以下概念:1:一个数组元素实质上就是一个变量名,代表存中一个存储单元。一个数组占有一串连续的存储单元。2:在C语言中一个数组不能整体引用。不能说用一个数组名就代表整个数组了。这是错误的。因为在C语言中规定数组名是一个地址常量,它代表整个数组的首地址。int*p;inta[10]p=a<p=&a[0]>a==&a[0]a=103:数组元素中下标表达式的值必须是整数。在编写程序时保证数组下标不越界是十分重要的。a[2.5]a[10]=123一维数组的初始化一维数组的始化,其实就是给数组元素赋值。格式:inta[8]={0,1,2,4,5,6,7}所赋的值放在等号后的一对花括号中,数值类型必须必须与所说明的类型一致,所赋值之间用逗号隔开。系统会按赋值顺序来自动分配。当花括号中的值少于数组元素个数时,将自动给数组后面元素赋值0.如inta[10]={1}这个时候除了a[0]=1外,其它的都是0;对于字符数组也是一样;chara[10]={‘!’}不够的也会赋值‘\0’通过赋初值定义数组的大小C语言中规定,可以通过赋初值来定义数组的大小,这时数组说明符的一对方括号中可以不指定数组的大小。如inta[]={1,1,1,1,1,1,1,1,1,1}这样相当于数组中有了10个元素例题:编写一个程序,通过键盘给数组a中的10个成员赋初值。#include<stdio.h>main<>{inta[10];inti,*p;p=a;for<i=0;i<10;i++>{scanf<"%d",p>;printf<"a[i]=%d",*p>;}}编写一个程序定义一个含有30个成员的数组。并给其赋值,要求从1这样的奇数开始。当赋值完毕后,按每行10个输出。include<stdio.h>#definem30main<>{inta[m];inti,k=1;for<i=0;i<m;i++>{a[i]=k;k+=2;}for<i=0;i<m;i++>{
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年“双随机、一公开”监管考核试题及答案
- 机械制造企业事故隐患排查治理规定
- 实验室工程安全管理制度
- 电缆井中毒窒息应急演练脚本
- 气管套管固定技巧与重要性
- 消化道穿孔的护理伦理问题
- 护理职业的价值与意义
- 护理核心制度:常见误区与纠正
- 辐射供冷供暖监理细则
- 护理社会支持系统
- 高中化学化学能与电能课件人教版必修二
- 招投标结果申诉函
- 足球-脚内侧接踢地滚球 课件
- 用excel绘制热网水压图
- 宝鸡某烟厂联合厂房施工组织设计
- 心血管系统解剖生理
- 陕西省西乡县牧马河乔山水电站工程竣工环境保护验收监测报告
- GB/T 8416-2003视觉信号表面色
- 学校课程方案形成和学生选课指导课件
- 采面作业规程
- 世界级制造(WCM)方法-基础-中国
评论
0/150
提交评论