第四章简单C程序设计 §4.1C语旬概述 ★C语旬以“:”作分隔符编译后产生机器指令 ★C语句分类 ☆表达式语句:表达式加分号构成。 分支「i()~ele 如 total= total+ -limit; switch for() a=3 循环|whie( func() do-while()\ continue printf(" hello, world!') break 辅助控制 goto retur
第四章 简单C程序设计 §4.1 C语句概述 C语句:以“;”作分隔符,编译后产生机器指令. C语句分类 ❖表达式语句:表达式加分号构成。 ❖空语句: ; ❖程序控制语句(9种): if( )~else~ switch for( )~ while( )~ do~while( ) continue break goto return 分支 循环 辅助控制 如 total=total+limit; a=3; func( ); printf(“Hello,world!\n”);
☆复合语句:用{…}括起来的一组语旬 ●一般形式:{[数据说明部分;] 执行语句部分; ●说明: ◆“}”l不加分号 ◆语法上和单一语句相同 ◆复合语旬可嵌套
❖复合语句:用 {…}括起来的一组语句 ⚫一般形式: { [数据说明部分;] 执行语句部分; } ⚫说明: ◆“}”后不加分号 ◆语法上和单一语句相同 ◆复合语句可嵌套
§4.4字符数据输入输出 ▲C语言无I/0语句,I/0操作由函数实现 ▲# include或# include” stdio.h” 1)字符输出函数 格式: putchar(c 参数:c为字符常量、变量或表达式 功能:把字符c输出到显示器上 返值:正常,为显示的代码值; 出错,为EOF(-1)
格式: putchar( c ) 参数: c为字符常量、变量或表达式 功能:把字符c输出到显示器上 返值:正常,为显示的代码值; 出错,为EOF(-1) §4.4 字符数据输入输出 C语言无I/O语句,I/O操作由函数实现 #include 或 #include”stdio.h” 1)字符输出函数
例 /*ch41.c*/ Include main O) Int C, char a, c=65;a=B putchar(c); putchar(Ⅶn’); putchar(a) 运行结果:A 对比: B 教材71页例41
/*ch4_1.c*/ #include main() { int c; char a; c=65; a='B'; putchar(c); putchar('\n'); putchar(a); } 运行结果:A B 例 对比: 教材71页例4.1
2)字符输入函数 格式: getchar() 功能:从键盘读一字符 返值:正常,返回读取的代码值: 出错,返回EOF(-1) 例 /米ch42.c*/ 运行结果: #include Enter a character: AJ main A---hex41 int C, printf( enter a character: c=getchar printf(%c->hex%x\n",c,c)
格式:getchar( ) 功能:从键盘读一字符 返值:正常,返回读取的代码值; 出错,返回EOF(-1) 2)字符输入函数 例 /*ch4_2.c*/ #include main() { int c; printf("Enter a character:"); c=getchar(); printf("%c--->hex%x\n",c,c); } 运行结果: Enter a character:A A--->hex41
§4.5格式输入输出 ★格式输出函数 格式: printf(“格式控制串”,输出表) 功能:按指定格式向显示器输出数据 返值:正常,返回输出字节数; 出错,返回EOF(-1) ◆输出表:要输出的数据 (可以没有,多个时以“,”分隔) ◇格式控制串:包含两种信息 ●格式说明:%[修饰符]格式字符,用于指定输出格式 ●普通字符或转义序列:原样输出 格式字符
格式:printf(“格式控制串”,输出表) 功能:按指定格式向显示器输出数据 返值:正常,返回输出字节数; 出错,返回EOF(-1) ❖输出表:要输出的数据 (可以没有,多个时以“ , ”分隔) ❖格式控制串:包含两种信息 ⚫格式说明:%[修饰符]格式字符 ,用于指定输出格式 ⚫普通字符或转义序列:原样输出 ❖格式字符 §4.5 格式输入输出 格式输出函数
格式字符: di+进制整数 int a=567: printf ("%od,a); 567 xX十六进制无符号整数inta=25prn(%ox,a) f o八进制无符号整数inta=65pint90a 101 u不带符号十 567 maind c单一字符例ita=3b=4; s字符串 printf("%/od%dn”,a,b); eE指数形式 printf(a=%d, b=%dn", a, b); b) 0e+02 f小数形式浮输出结果:34 89000 ge和仲较短 a=3.b=4 56789 %%百分号本身 printi(70%0); %0 ●说明 111111111111111165535 ◆格式字符要用小写 ◆格式宇符与输出项个数应相同,按先后顺序一一对应 ◆输岀转换格式字符与输岀项类型不一致自动按指定格式输岀
d,i x,X o u c s e,E f g %% 格式字符: 十六进制无符号整数 不带符号十进制整数 十进制整数 指数形式浮点小数 单一字符 字符串 八进制无符号整数 小数形式浮点小数 e和f中较短一种 百分号本身 int a=567;printf ( “%d”,a); int a=255;printf(“%x”,a); int a=65;printf(“%o”,a); int a=567;printf(“%u”,a); char a=65;printf(“%c”,a); printf(“%s”,“ABC”); float a=567.789;printf(“%e”,a); float a=567.789;printf(“%f”,a); float a=567.789;printf(“%g”,a); printf(“%%”); 567 ff 101 567 A ABC 5.677890e+02 567.789000 567.789 % ⚫说明 ◆格式字符要用小写 ◆格式字符与输出项个数应相同,按先后顺序一一对应 ◆输出转换:格式字符与输出项类型不一致,自动按指定格式输出 例 main() { unsigned int u=65535; printf(”u=%d\n",u); } 输出结果:u=-1 例 int a=3,b=4; printf(“%d %d\n”,a,b); printf(“a=%d , b=%d\n”,a,b); 例 int a=3,b=4; printf(“%d %d\n”,a,b); printf(“a=%d , b=%d\n”,a,b); 输出结果: 3 4 a=3, b=4 11 11 11 11 11 11 11 11 65535
◇附加格式说明符(修饰符) 修饰符 功 能 m输出数据域宽,数据长度<m,左补空格;否则按实际输出 对实数,指定小数点后位数(四舍五入) 「对字符串,指定实际输出位数 输出数据在域内左对齐(缺省右对齐) 指定在有符号数的正数前显示正号(+) 0#1 输出数值时指定左面不使用的空位置自动填0 在八进制和十六进制数前显示前导0,0x 在d,o,x,u前,指定输出精度为long型 在e,f,g前,指定输出精度为 double型
❖附加格式说明符(修饰符) .n 对实数,指定小数点后位数(四舍五入) 对字符串,指定实际输出位数 修饰符 功 能 m 输出数据域宽,数据长度<m,左补空格;否则按实际输出 - 输出数据在域内左对齐(缺省右对齐) 指定在有符号数的正数前显示正号(+) + 0 输出数值时指定左面不使用的空位置自动填0 # 在八进制和十六进制数前显示前导0,0x 在d,o,x,u前,指定输出精度为long型 在e,f,g前,指定输出精度为double型 l
例mnm0+123456 char ch=a printf(8d,%2dn”,aa) printf(" %f, %8f, %8. 1f, %.2f, %o2en,, f, f,f, f,) printf( %3cn,ch) 例 static char a[]Hll,orl printf(%sIn%15s In%105s In%2.5sIn%3sIn", a, a, a, a, a) 运行结果:Heo, world Hello world elo hello Hel
例 int a=1234; float f=123.456; char ch=‘a’; printf(“%8d,%2d\n”,a,a); printf(“%f,%8f,%8.1f,%.2f,%.2e\n”,f,f,f,f,f); printf(“%3c\n”,ch); 运行 - - - -1234,1234 结果: 123.456000,123.456000,- - - 123.5,123.46,1.23e+02 - - a 例 static char a[ ]=“Hello,world!” printf(“%s\n%15s\n%10.5s\n%2.5s\n%.3s\n”,a,a,a,a,a); 运行结果:Hello,world! - - -Hello,world! - - - - -Hello Hello Hel 例 m.n
例inta=1234; float f123.456 static char c[Hello, world printf("%8d, %o-8dn'",a, a) printf(“910.2f,%-10.1fn”,f,f) printf(10.5%0-10.3sn”,cc); 运行结果 1234,1234 123.46123.5- -Hello.hel
例 int a=1234; float f=123.456; static char c[]=“Hello,world!”; printf(“%8d,%-8d\n”,a,a); printf(“%10.2f,%-10.1f\n”,f,f); printf(“%10.5s,%-10.3s\n”,c,c); 运行结果:- - - -1234 , 1234- - - - - - - -123.46123.5- - - - - - - - - -Hello,Hel- - - - - - -