版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、CH4 最简单的C程序设计 顺序结构程序设计THE C PROGRAMMING LANGUAGEC语言程序设计 第四章 顺序程序设计(2) 一个c程序由若干个源程序文件组成,每个源程序文件又由预编译命令和若干个函数组成,每个函数包括说明部分和执行部分(语句),由此介绍几种语句。 通过示例介绍函数scanf(),printf(),getchar(),putchar()的应用场合及其格式参数的使用方法。 本章主要内容C语言程序设计 第四章 顺序程序设计(3)4.1 C语句概述v在C语言中只有“可执行语句”,没有“非执行语句”v一个C程序可以由若干个源程序文件(分别编译的文件模块)组成;v一个源文件
2、可以由若干个函数和预编译命令以及全局变量声明部分组成;v一个函数由数据定义部分和执行语句组成。v程序应该包括数据描述(由数据定义部分来实现)和数据操作(由语句来实现)。数据描述主要定义数据结构(用数据类型型表示)和数据初值。数据操作的任务是对已提供的数据进行加工。C程序源文件1 源文件i 源文件n 预编译命令 全局变量声明 函数1 函数n 局部变量声明 执行部分(语句) 函数首部 函数体C程序结构C语言程序设计 第四章 顺序程序设计(4)C语句可以分为以下五类v1控制语句,完成一定的控制功能,C只有9种控制语句,它们是: if( )else 条件语句 for ( ) while( ) 循环语句
3、 dowhile ( ) continue 结束本次循环语句 break 中止执行switch或循环语句 switch 多分支选择语句 goto 转向语句(可用做循环语句) return 从函数返回语句 上面9种语句中的括号()表示其中是一个条件,表示内嵌的语句。例如:“if( )else”的具体语句可以写成: “if(xy)z=x;else z=y;”C语言程序设计 第四章 顺序程序设计(5)v2函数调用语句。由一次函数调用加一个分号构成一个语句,例如: printf (”this is a C statement”); c=max(a,b);v3表达式语句。表达式的最后加一个分号就成了一个
4、语句。 最典型的是:由赋值表达式构成一个赋值语句。 a=3 是一个赋值表达式,而 a=3; 是一个赋值语句。 一个语句必须在最后出现分号,分号是语句中不可缺少的一部分。 表达式能构成语句是C语言的一个特色。其实“函数调用语句”也是属于表达式语句,因为函数调用也属于表达式的一种,只是为了便于理解和使用,我们把“函数调用语句”和“表达式语句”分开来说明。由于C程序中大多数语句是表达式语句(包括函数调用语句),所以有人把C语言称作“表达式语言”。C语言程序设计 第四章 顺序程序设计(6)v4空语句。下面是一个空语句: ; 即只有一个分号的语句,它什么也不做。有时用来作被转向点,或循环语句中的循环体(
5、循环体是空语句,表示循环体什么也不做)。v5可以用 把一些语句括起来成为复合语句,如下面是一个复合语句。 z=x+y; tZ100; printf(”%f”,t); 注意:复合语句中最后一个语句中最后的分号不能忽略不写。C语言程序设计 第四章 顺序程序设计(7)4.2 赋值语句赋值语句由赋值表达式和一个分号构成。赋值表达式可以包括在其他表达式之中。如:if(a=b)0)t=a;其作用是先将b的值赋给a,再判断a是否大于零。注意:a=b是表达式而不是语句,下列写法错误:if(a=b;)0)t=a;vC语言的赋值语句具有其它高级语言中赋值语句的一切特点和功能。但也应当注意到它们的不同: C语言中的
6、“=”是赋值运算符; 关于赋值表达式与赋值语句的概念。C语言程序设计 第四章 顺序程序设计(8)4.3 数据的输入、输出nC C语言不提供输入输出语句,所有输入输出操作都是由语言不提供输入输出语句,所有输入输出操作都是由函数函数来实现的。来实现的。注意:不同的计算机系统提供的函数注意:不同的计算机系统提供的函数数量、名字和功能不完全相同。数量、名字和功能不完全相同。使用除使用除printf 和和scanf 函数以外的任何标准函数以外的任何标准I/O库函库函数,都应在程序前加上数,都应在程序前加上预编译命令预编译命令include。C语言程序设计 第四章 顺序程序设计(9)4.4 输入/输出函数
7、的使用 在在C C的标准函数库中提供了多种输入的标准函数库中提供了多种输入/ /输出函数。例如:输出函数。例如:printfprintf函数和函数和scanfscanf函数。这些函数定义在头文件函数。这些函数定义在头文件stdio.hstdio.h中。中。 在调用标准输入/输出库函数时,在程序的开始处应有预编译命令: #include 或 #include “stdio.h” standard input standard input & output& output#include#include命令都是放命令都是放在程序开始,因此称在程序开始,因此称这类文件为头文件。这类文件为头文件。 最
8、常见的输入最常见的输入/ /输出函数是:输出函数是:C C语言的输入是语言的输入是指从键盘接受用指从键盘接受用户输入数据。户输入数据。C C语言的输出是语言的输出是指在屏幕上显指在屏幕上显示结果数据。示结果数据。 getchar/getsgetchar/gets函数和函数和scanfscanf函数(输入)函数(输入)putchar/putsputchar/puts函数和函数和printfprintf函数(输出)函数(输出)C语言程序设计 第四章 顺序程序设计(10)功能:将指定表达式的值所对应的字符输出到标功能:将指定表达式的值所对应的字符输出到标 准设备(终端准设备(终端/ /显示器)显示器
9、), ,每次只能输出一每次只能输出一 个字符。个字符。 可以是字符型或整型的变量或常量可以是字符型或整型的变量或常量例例: : #include#include“stdio.hstdio.h” main main()() char o= char o=O O,k=k=K K,g=g=!; putcharputchar(o o);); putcharputchar(k k);); putcharputchar(g g);); putchar()必须带输出项,输出项可以是字符型常量、变量、表达式,但只能是单个字符而不能是字符串。 执行结果为执行结果为:也可以输出其它转义字符,如: putchar(
10、101) (输出字符A) putchar( ) (输出单引号字符) putchar(015) (使输出回车,不换行)OK!C语言程序设计 第四章 顺序程序设计(11)功能:从标准输入设备上(键盘)输入一个且只能是一个字符,并将该字符返回为函数的值。例例: :#include #include mainmain()() int i; int i; i=getchar i=getchar();(); printf(printf(“%c%c:%dn%dn”,i,i);,i,i); 执行本程序时执行本程序时,按键,按键A A时时显示结果如下:显示结果如下:A A:6565(1)(1)只有在按只有在按“
11、回车回车”键之后输入的字键之后输入的字 符才有效符才有效. .(2)(2)此函数只接受一个字符,而非一此函数只接受一个字符,而非一 串字符。例中若输入串字符。例中若输入 abcdeabcde,该,该 函数也只接受第一个字符函数也只接受第一个字符 a a。(3) getchar(3) getchar函数得到的字符可以赋函数得到的字符可以赋 给一个字符变量或整型变量,也给一个字符变量或整型变量,也 可以不赋给任何变量而是作为表可以不赋给任何变量而是作为表 达式的一部分。达式的一部分。v例:1) putchar(getchar(); 2) If (ch=getchar()!=#) 3) While(
12、 ch=getchar()!=#) 不是“#”就执行指定的操作C语言程序设计 第四章 顺序程序设计(12)功能:是按控制字符串规定的格式,向缺省输出设备 (一般为显示器)输出在输出项列表中列出的 各个输出项。可以是常量、变量和表达式。其类型和个数必须与格式控制字符符串中格式字符的类型及个数一致。输出项之间以,分隔【例例】 printf printf(“%d%f%c%d%f%c” ,a a, ,b b, ,c c);); 必须由“ ”括起来:当系统遇到输出的格式说明符后,会自动用后面对应的输出项的值代替它的位置,然后输出。格式字符应与待输出项之间一一对应(且数据类型必须与格式符相匹配) C语言程
13、序设计 第四章 顺序程序设计(13)例例1:4+4=?1:4+4=? #include #include main( ) main( ) int total; int total; total=4+4; total=4+4; printf( printf(“The total is %dnThe total is %dn”); ); CH4-3 该语句告诉程序显示一个十进制该语句告诉程序显示一个十进制数数,但是没有指定变量但是没有指定变量.C不会检查不会检查 并确认并确认 printf 函数被赋予了正确函数被赋予了正确的常量。由于没有值的常量。由于没有值,所以所以C生成生成了一个值。正确的语句
14、应该是:了一个值。正确的语句应该是: printf(“The total is %dn”,total ); 例例2: #include #include main( ) main( ) float answer; float answer; answer=7.0/20.0; answer=7.0/20.0; printf( printf(“The answer is %dnThe answer is %dn”,answer);,answer); CH4-4使用使用%d指定要显示的整数指定要显示的整数,但要但要转化的是一个实数转化的是一个实数,printf函数无函数无法检查参数类型法检查参数类型
15、,所以将实数赋予所以将实数赋予函数函数,而指定格式为整数而指定格式为整数,函数将这函数将这个数当作整数看待个数当作整数看待.C语言程序设计 第四章 顺序程序设计(14) 格式:格式:% % (1 1)格式字符:规定了对应输出项的输出格式。见书)格式字符:规定了对应输出项的输出格式。见书P77P77。d 十进制整数,带符号o 八进制整数,无符号x 16进制整数,无符号u 无符号十进制整数c 字符,只输出一个字符s 字符串f 实数(小数),隐含6位小数e 指数形式,6位小数g 实数、自动选f或e格式(占宽较小一种)% 输出%本身说 明C语言程序设计 第四章 顺序程序设计(15)附加格式说明符(见书
16、P78)用在%和格式字符之间。格式字符说 明 l 用于长整型,可加在格式符d、o、x、u前面 %lf将修正为double型 h 将整型格式d、o、x、u修正为short型m(正整数) 数据最小宽度n(正整数) 对实数表示输出n位小数;对字串表示截取的字符个数- 输出的数字或字符在域内向左靠0 用“0”来填充数字前面的空位(2)修饰符:用于确定数据输出的宽度、精度、小数位数、对齐 方式等,用于产生更加规范整齐的输出,当没有输 出修饰符时,按系统缺省设定显示。 长度修饰符:长度修饰符:l l(长),(长),h h(短),放在(短),放在(1 1)格式字符前面。)格式字符前面。 域宽和精度描述符:域
17、宽和精度描述符:m(域宽)(域宽)n(精度),放在(精度),放在长度修饰符长度修饰符的前面。的前面。C语言程序设计 第四章 顺序程序设计(16) 当指定的域宽当指定的域宽小于小于数据的实际宽度时。数据的实际宽度时。对整数对整数:按该数的实际域:按该数的实际域宽输出。宽输出。对浮点数对浮点数:若指定的域宽大于浮点数的整数部分,相应的小:若指定的域宽大于浮点数的整数部分,相应的小数位按精度的位数四舍五入。若域宽小于等于浮点数整数部分的宽度,数位按精度的位数四舍五入。若域宽小于等于浮点数整数部分的宽度,则该浮点数按实际位数输出,但小数位数仍遵守精度的规定。则该浮点数按实际位数输出,但小数位数仍遵守精
18、度的规定。在实际应用中,更为灵活的域宽控制方法是:在实际应用中,更为灵活的域宽控制方法是:用常量作为输出域宽,方法是以一个用常量作为输出域宽,方法是以一个“* *”作为域宽放在作为域宽放在% %的后面。的后面。例如:例如: int a=123int a=123; printfprintf(“% %* *d d”,5 5,a a););Ch4-5Ch4-55 5为输出域宽,输出为为输出域宽,输出为 123 123 (1 1)%md%md:以宽度:以宽度m m输出整型数,不足输出整型数,不足m m时,左补空格,大于时,左补空格,大于m m时按时按实际位数输出。实际位数输出。 (2 2)%0md%0
19、md:以宽度:以宽度m m输出整型数,不足输出整型数,不足m m时,左补时,左补0 0。 (3 3)%m.nf%m.nf:以宽度:以宽度m m输出实型小数,小数位为输出实型小数,小数位为n n位。位。C语言程序设计 第四章 顺序程序设计(17) 对齐方式描述符:一般所有输出数据对齐方式描述符:一般所有输出数据缺省为右对齐格式缺省为右对齐格式,若加一,若加一 个个“- -”号,则变为号,则变为“左对齐左对齐”方式。放在方式。放在域宽描述域宽描述 符的前面符的前面。例如:例如: int i=123int i=123;float a=12.34567float a=12.34567; printfp
20、rintf(“%4d%10.4f%4d%10.4f”,i,ai,a);); printfprintf(“%-4d%10.4f%-4d%10.4f”,i,ai,a);); printfprintf(“%4d%-10.4f%4d%-10.4f”,i,ai,a););输出为:输出为: 123123 12.345712.3457输出为:输出为:123123 12.345712.3457输出为:输出为: 12312.345712312.3457 (1)书写格式:除X,E,G格式符外,其余格式符必须小写。(2)普通字符:在格式说明符中可以有可打印字符和转义字符,可 打印字符主要是一些说明字符,这些字符按原
21、样显示在屏幕上 ,如果有汉字系统支持,也可以输出汉字。转义字符是不可打 印字符,他们其实是一些控制字符,控制产生特殊的输出效果。 CH46C语言程序设计 第四章 顺序程序设计(18)功能:该函数从标准输入设备(键盘)上将数据读功能:该函数从标准输入设备(键盘)上将数据读到参数所指定的位置上。每个参数必须是指向某种到参数所指定的位置上。每个参数必须是指向某种数据类型的指针,并且与数据类型的指针,并且与 format format 参数中的类型说参数中的类型说明相一致。明相一致。格式控制符:规定格式控制符:规定数据的输入格式,数据的输入格式,必须由必须由“ ”括起来括起来,其内容包括,其内容包括格
22、式格式说明(修饰符)说明(修饰符)和和格式符格式符两部分。两部分。地址列表地址列表:由一个或多个:由一个或多个变量的地址组成,变量地变量的地址组成,变量地址之间以址之间以“,”分隔。也分隔。也可以是字符串的首地址。可以是字符串的首地址。在在C C语言中一个变量的地址语言中一个变量的地址可以通过可以通过& &地址运算符得到。地址运算符得到。例如:例如:int a,b;int a,b; 则则a,ba,b的地址为的地址为&a,&b&a,&b。scanf函数可用来输入任何类型的多个数据。C语言程序设计 第四章 顺序程序设计(19)【例例】 int aint a; scanfscanf(“%d%d”,&
23、a&a););含义:含义: 按变量按变量a a在内存的地址将从外界在内存的地址将从外界 获取的值存入变量获取的值存入变量a a所描述的存所描述的存 储单元,变量储单元,变量a a的地址在编译阶的地址在编译阶 段分配。段分配。说明格式说明格式输入变量地址输入变量地址 scanf()scanf()中各个中各个变量变量要加地要加地 址操作符,就是变量名前加址操作符,就是变量名前加“& &” 地址操作符地址操作符, ,这是容易忽视的一这是容易忽视的一 个问题。个问题。由由“ ”括起括起 的字符串。的字符串。(1 1)格式转换说明符:)格式转换说明符: 格式说明规定了输入项中的变量将以何种类型的数据格式
24、被格式说明规定了输入项中的变量将以何种类型的数据格式被 输入。输入。可以是下列三种形式之一或它们的组合:可以是下列三种形式之一或它们的组合: C语言程序设计 第四章 顺序程序设计(20)可以可以指定输入数据的域宽指定输入数据的域宽,系统自动按域宽截取输入数据。,系统自动按域宽截取输入数据。例如:例如: scanfscanf(“% %3 3d d”,&a&a);按宽度);按宽度3 3输入一个整输入一个整数给变量数给变量a a。字符字符* *:* *表示按规定格式输入但不赋予相应的变量,表示按规定格式输入但不赋予相应的变量,作用是跳过相应的数据。作用是跳过相应的数据。 l l和和h h:可以和:可
25、以和d d、o o、x x、一起使用,、一起使用,例如:例如:scanfscanf(“%ld%hd%ld%hd”,&a,&b,&a,&b); ;C语言程序设计 第四章 顺序程序设计(21)(2 2)普通字符:)普通字符:要求在输入时按原样输入字符。例如例如 : scanfscanf(“a=%da=%d;b=%cb=%c;”,&a,&b,&a,&b););例如:例如: scanfscanf(“%d%d, ,%d%d, ,%c%c”,&a,&b,&c,&a,&b,&c););输入应为:输入应为:a=3a=3;b=ab=a; 正确的输入为:正确的输入为:1 1,2 2,q q结果为:结果为:a=1,
26、b=2,ch=qa=1,b=2,ch=q若输入若输入1 1 2 2 q q只有只有a=1a=1,对,对b b和和c c的的赋值失败。赋值失败。这些这些“,”应是输入数据的分应是输入数据的分隔符,隔符,scanfscanf在读入时自动去在读入时自动去除与除与“,”分隔符相同的字符分隔符相同的字符后,顺序读入数据。因此空格后,顺序读入数据。因此空格符作为字符型数据被读入。符作为字符型数据被读入。为什么?为什么?C语言程序设计 第四章 顺序程序设计(22)(1)(1)如果格式说明符之间包含其他字符,则输入时,必须在相应位置输如果格式说明符之间包含其他字符,则输入时,必须在相应位置输 入这些字符入这些
27、字符;如果格式说明符之间不包含其他字符,则输入数据时如果格式说明符之间不包含其他字符,则输入数据时, , 两个数据之间可以使用空格、两个数据之间可以使用空格、tabtab键或回车键作为间隔键或回车键作为间隔。(2)(2)输入字符数据时,由于空格和转义字符都是有效字符,所以不能以输入字符数据时,由于空格和转义字符都是有效字符,所以不能以 空格作为间隔符。(可能产生非预期的结果)空格作为间隔符。(可能产生非预期的结果)例如:例如:scanfscanf(“%d%c%d%c”,&a,&c&a,&c);输入);输入3232 a a(3)scanf(3)scanf函数函数不允许不允许有精度输入。有精度输入
28、。 语句语句 scanfscanf(“%7.2f”%7.2f”,&a&a);是错误的。);是错误的。例如:例如:scanfscanf(“%d%d%d%d”,&a,&b&a,&b);输入:);输入:3 3 5 5可以使用如下语句:可以使用如下语句:scanfscanf(“%d%d %c%c”,&a,&ch&a,&ch););c c_ _空格符作为输入空格符作为输入数据被赋值给字数据被赋值给字符型变量符型变量c c此处的空格,可以跳过后面字符此处的空格,可以跳过后面字符a a前所有的空格,前所有的空格,从而保证非空格数据的正确录入。从而保证非空格数据的正确录入。C语言程序设计 第四章 顺序程序设计
29、(23)使用自己指定的非格式字符来分隔数据,如“,”,或者给出将要输入数据的格式。main() int a; float b,c; printf(%s,a=%d,b=%f,c=%f n); scanf(%d,%f,%f,&a,&b,&c); printf(a=%d,b=%f,c=%f n,a,b,c); CH4-7输入12345,678,976.38 则输出: a=12345,b=678.000000,c=976.380005main() int a; float b,c; printf(%s,a=%d,b=%f,c=%f n); scanf(a=%d,b=%f,c=%f,&a,&b,&c);
30、 printf(a=%d,b=%f,c=%f n,a,b,c); CH4-8输入a=12345,b=678,c=976.38 则输出:a=12345,b=678.000000,c=976.380005输入多个数据时,两个数据之间可以用下列方法分隔:C语言程序设计 第四章 顺序程序设计(24)抑制字符* 虚读,即按格式说明读入的数据不送给任何变量。main() int a; float b; scanf(%3d%*4d%f,&a,&b); printf(a=%d,b=%f n,a,b); CH4-9则:a=123 b=8765.43 4567不送任何变量输入:12345678765.43C语言程
31、序设计 第四章 顺序程序设计(25)scanf 函数的结束: 正常结束:格式项用完。 非正常结束:输入数据流与格式项不匹配。scanf 函数的返回值: 输入数据流与格式项成功匹配的项数。main() int a,b,c; printf(%dn,scanf(%3d-%2d-%4d,&a,&b,&c); printf(a=%d,b=%d,c=%d n,a,b,c); CH4-10输出:3 a=123,b=45,c=6789输入:123-45-6789C语言程序设计 第四章 顺序程序设计(26)【例1】若a1,a2,a3,a4均为char类型变量,则执行以下程序段后的输 出结果是: a1=1;a2=
32、2; a3=3;a4=4; printf(“%1cn”,a1); printf(“%2cn”,a2); printf(“%3cn”,a3); printf(“%4cn”,a4);a)1a)1 2 2 3 3 4 4b) 1b) 1 2 2 3 3 4 4c)1c)1 02 02 003 003 0004 0004d)输出格式 的描述符 不正确 【例2】若执行程序时的输入是:1234567,则程序的输出结果是: #include main() int x,y; scanf(“%2d%*2d%1d”,&x,&y); printf(“x+y=%d;n”,x+y); x+y=17 x+y=17;例题C
33、语言程序设计 第四章 顺序程序设计(27)【例4】读程序: #include main( ) int a; float b,c; scanf(“%2d%3f%4f”,a,b,c); printf(“na=%d,b=%f,c=%f”,a,b,c); 若运行时从键盘输入9876543210,则上面程序的输出结果是:A)a=98,b=765,c=4321B)a=10,b=432,c=8765C)a=98,b=765.000000,c=4321.000000D)a=98,b=765.0,c=4321.0 【例3】读程序,写出运行结果。 #include main() int a,b,c; a=(b=(
34、c=3)*5)*2-3; printf(“a=%d,b=%d,c=%dn”,a,b,c); a=27 a=27,b=15b=15,c=3c=3C语言程序设计 第四章 顺序程序设计(28) 从执行方式看,顺序结构是一组按书写顺序执行的语句。是从执行方式看,顺序结构是一组按书写顺序执行的语句。是C C语言中最简单、最基本的一种结构,是进行复杂程序设计的基础。语言中最简单、最基本的一种结构,是进行复杂程序设计的基础。C C语言组成顺序结构的语句有赋值语句、输入语言组成顺序结构的语句有赋值语句、输入/ /输出函数。输出函数。 【例例5 5】 main main()() float a=123.456
35、float a=123.456; double b=8765.4567double b=8765.4567; printfprintf(“(1 1)%fn%fn”,a,a); ; printf printf(“(2 2)%14.3fn%14.3fn”,a,a); ; printf printf(“(3 3)%6.4fn%6.4fn”,a,a); ; printf printf(“(4 4)%lfn%lfn”,b,b); ; printf printf(“(5 5)%14.3lfn%14.3lfn”,b,b); ; printf printf(“(6 6)%8.4lfn%8.4lfn”,b,b); ; p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 装潢美术设计师操作知识竞赛考核试卷含答案
- 硫漂工安全宣教知识考核试卷含答案
- 2025年独立运行村用风力发电机组项目发展计划
- 2025年石油钻采机械项目发展计划
- 2025年金属冶炼加工项目发展计划
- 2025年光伏发电用控制器项目发展计划
- 2025年电子装联专用设备合作协议书
- 2026年液相色谱-质谱联用仪(LC-MS)项目建议书
- 2025年江苏省南通市中考化学真题卷含答案解析
- 乔木栽植施工工艺
- 感染性心内膜炎护理查房
- 导管相关皮肤损伤患者的护理 2
- 审计数据管理办法
- 2025国开《中国古代文学(下)》形考任务1234答案
- 研发公司安全管理制度
- 儿童口腔诊疗行为管理学
- 瓷砖样品发放管理制度
- 北京市2025学年高二(上)第一次普通高中学业水平合格性考试物理试题(原卷版)
- 短文鲁迅阅读题目及答案
- 肺部感染中医护理
- 临床研究质量控制措施与方案
评论
0/150
提交评论