第四章顺序结构程序设计 本章重点: 输入输出语句的使用 对整数、浮点数、字符和字符串的输出格式要掌握。 顺序执行程序的特点 按照程序书写的顺序逐条执行,直至main()的最后一条语句。 4.1顺序结构概述 顺序结构是程序设计中最基本最简单的结构 顺序结构:按语句排列的先后顺序执行,写在前面的语句先执行。 当计算需要引用一个变量时,该变量一定要事先定义、赋值,然 后才能出现在表达式中 C语言中的基本顺序结构语句主要包括:表达式语句、空语句、 复合语句、goto语句和函数调用语句 例4.1: 求园的面积 #DEFINE P=3. 1415926 loat r r=20; s=r*r** Pl printf(“area=%f”,s) 4.2基本顺序对路构语句 1.函数调用语句。 Printf("this is a sample ) 2.表达式语句 d’+123+b/d d’+123+b/d 3.空语句 4.赋值语
第四章 顺序结构程序设计 本章重点: ⚫ 输入输出语句的使用 ⚫ 对整数、浮点数、字符和字符串的输出格式要掌握。 ⚫ 顺序执行程序的特点 按照程序书写的顺序逐条执行,直至 main()的最后一条语句。 4.1 顺序结构概述 顺序结构是程序设计中最基本最简单的结构. 顺序结构:按语句排列的先后顺序执行,写在前面的语句先执行。 当计算需要引用一个变量时,该变量一定要事先定义、赋值,然 后才能出现在表达式中. C 语言中的基本顺序结构语句主要包括:表达式语句、空语句、 复合语句、goto 语句和函数调用语句。 例 4.1: 求园的面积 #DEFINE PI=3.1415926 main() { float r,s; r = 20; s = r * r * PI; printf (“area=%f ”,s); } 4.2 基本顺序对路构语句 1.函数调用语句。 Printf(“this is a sample.”); 2.表达式语句 ‘d’+ 123 + b/d ; ‘d’+ 123 + b/d 3.空语句 ; 4.赋值语
x=‘d’+123+b/d 5.复合语句 用{}把一些语句括起来成为复合语句。 t=z/100; printf(“%f”,t);} 4.3基本输入/输出 4.3.1字符输入函数 1. getchO、 etched和 getchar函数 (1) getch0和 getche(函数 这两个函数都是从键盘上读入一个字符。其调用格式为 getcho etched 两者的区别是: getch0函数不将读入的字符回显在显示屏幕上, 而 getche()函数却将读入的字符回显到显示屏幕上。 例 4.2 #include maino char c ch c= gotcha;,/从键盘上读入一个字符不回显送给字符变量c* putcha(c),/输出该字符* ch= getche()/*从键盘上带回显的读入一个字符送给字符* putchar(ch); 利用回显和不回显的特点,这两个函数经常用于交互输入的过 程中完成暂停等功能。 (2) getchar函数 getchar函数也是从键盘上读入一个字符,并带回显。它与前面 两个函数的区别在于: getchar函数等待输入直到按回车才结束,回 车前的所有输入字符都会逐个显示在屏幕上。但只有第一个字符作为 函数的返回值 例4.3 #include
x=‘d’+ 123 + b/d; 5. 复合语句 用{ }把一些语句括起来成为复合语句。 {z=x+y; t=z/100; printf(“%f”,t);} 4.3 基本输入/输出 4.3.1 字符输入函数 1. getch()、getche()和 getchar()函数 (1) getch()和 getche()函数 这两个函数都是从键盘上读入一个字符。其调用格式为: getch(); getche(); 两者的区别是: getch()函数不将读入的字符回显在显示屏幕上, 而 getche() 函数却将读入的字符回显到显示屏幕上。 例 4.2: #include main() { char c, ch; c=getch(); /*从键盘上读入一个字符不回显送给字符变量 c*/ putchar(c); /*输出该字符*/ ch=getche();/*从键盘上带回显的读入一个字符送给字符*/ putchar(ch); } 利用回显和不回显的特点, 这两个函数经常用于交互输入的过 程中完成暂停等功能。 (2) getchar()函数 getchar()函数也是从键盘上读入一个字符, 并带回显。 它与前面 两个函数的区别在于: getchar()函数等待输入直到按回车才结束, 回 车前的所有输入字符都会逐个显示在屏幕上。但只有第一个字符作为 函数的返回值。 例 4.3 #include
maino char c c= getchar;/从键盘读入字符直到回车结束* putchar(c),/*显示输入的第一个字符 getcho *等待按任一健* 2. gets( gets()函数功能是从键盘上读入一个以回车结束的字符串 Gets()充许串中包含某种空白字符,如空格、制表符。 格功 gets(变量名) 例4 #include maino char c, s20; printf(" Name: )2 gets(s) printf("Press any key to continue. " ) getcho,/*等待输入任一键* 4.3.2字符输出函数 1. putcha(函数 putcher函数是向标准输出设备输出一个字符,其调用格式为 putchar(ch) putchar(a) putchar(n) putchar(b) putchar('In) putchar(c) putchar(n) 输出其它转义字符 butchart(101),输出A putchan(”) 输出单引号 butchart(015),使输出回车,不换行 例:4.5 #include
main() { char c; c=getchar(); /*从键盘读入字符直到回车结束*/ putchar(c); /*显示输入的第一个字符*/ getch(); /*等待按任一健*/ } 2.gets( ) gets( )函数功能是从键盘上读入一个以回车结束的字符串. Gets( )充许串中包含某种空白字符,如空格、制表符。 格功: gets( 变量名)。 例 4.4 #include main() { char c, s[20]; printf("Name:"); gets(s); printf("Press any key to confinue..."); getch(); /*等待输入任一键*/ } 4.3.2 字符输出函数 1.putchar()函数 putchar()函数是向标准输出设备输出一个字符, 其调用格式为: putchar(ch); putchar(a);putchar(‘\n’); putchar(b);putchar(‘\n’); putchar(c);putchar(‘\n’); 输出其它转义字符 putchar(‘\101’); 输出 ‘A’; putchar(‘\’’); 输出单引号 putchar(‘\015’); 使输出回车,不换行 例:4.5 #include
maino char c *定义字符变量* C=B *给字符变量赋值* putchar(c); *输出该字符* 4.3.3格式化输入输出函数 1. Printi)函数 功能:可以按规定格式向终端输出任意类型的数据 般格式: Printf(控制格式,输出列表) 用双引号括起的转换控制字 符串,它包括两种信息 被输出的数据,可以 是常量、变量、表达式 格式说明, 由%开始。如:‰,%,‰ 普通字符,要输出的字符 printf(%od%d”,a,b) printf(“a=%db=%d,2,b) 格式说明输出列表 格式说明输出列表 ●格式字符 (1)d格式符,用来输出十进制数。 %d按整型的实际长度输出。 a=12,b=123,c=12345; printf("%od, % od, %od", a, b, c); 12,123,12345 %md按给定长度m输出,数字不够长,左边补空格;数 字长度大于m,按原长度输出。 printf("%4d%/4d%4d", a, b, c); (2)c格式符,用来输出一个字符。如: char=“a printf(%c”,c)
main() { char c: /*定义字符变量*/ c='B'; /*给字符变量赋值*/ putchar(c); /*输出该字符*/ } 4.3.3 格式化输入/输出函数 1.Printf( )函数。 功能:可以按规定格式向终端输出任意类型的数据 ⚫ 格式字符 (1)d 格式符,用来输出十进制数。 %d 按整型的实际长度输出。 a=12, b=123, c=12345; printf(“%d,%d,%d”,a ,b ,c); 12,123,12345 %md 按给定长度 m 输出,数字不够长,左边补空格;数 字长度大于 m,按原长度输出。 printf(“%4d%4d%4d”,a ,b ,c); (2) c 格式符,用来输出一个字符。如: char c= ‘a’ ; printf(“%c”, c);
例46 main 0 { char c=‘a';inti=97; printf(%c,%dn”,c,); printf(“%c,%dⅦn”,c,); 97 (3)s格式符,用来输出一个字符串。例如: %s:按实际长度输出 printf(c%s”,“CHNA”); CHINA %ms:当字符串长度小于m时,左边补空格 printf(“%7s”,“ CHINAIn”); 6-ms:当字符串长度小于m时,右边补空格 printf(c%-7s”,"“ CHINAIn”); %mns输出占m列,但只取字符串左端的n个,并向右对齐。 %-mnsm和n的含义同上,但向左对齐。若n大于m,取m等 于 例4.7 main printf("%3s, %7.2S, 4S, %0-5.3sIn “ CHINA”,“ CHINA”,“ CHINA”,“ CHINA”) CHINA CH CHIN CHI (4)f格式符,用来输出实数(单精度、双精度),以小数形式输出。 %f不指定宽度,整数部分全部输出,输出6位小数。 单精度时,7位数字有效,双精度时,16位数字有效
例 4.6 main() { char c= ‘a’; int i=97; printf(“%c,%d\n”,c,c); printf(“%c,%d\n”,c,c); } a ,97 a ,97 (3)s 格式符,用来输出一个字符串。例如: %s:按实际长度输出 printf(“%s”,“CHINA”); CHINA %ms:当字符串长度小于 m 时,左边补空格。 printf(“%7s”, “CHINA\n”); %-ms:当字符串长度小于 m 时,右边补空格 printf(“%-7s”, “CHINA\n”); %m.ns 输出占 m 列,但只取字符串左端的 n 个, 并向右对齐。 %-m.ns m 和 n 的含义同上,但向左对齐。若 n 大于 m,取 m 等 于 n. 例 4.7 main() { printf(“%3s,%7.2s,% 4s,%-5.3s\n”, “CHINA”,“CHINA”,“CHINA”,“CHINA”); } (4) f 格式符,用来输出实数(单精度、双精度),以小数形式输出。 %f:不指定宽度,整数部分全部输出,输出 6 位小数。 单精度时,7 位数字有效,双精度时,16 位数字有效
[例4.8 [例4.9] maino main 0 i float x i double x,y =111111.111 =1111111111111.1111111111 y=22222.222; y=22222222222.222222222 printf(“%f”,xty): printf(“%f”,xy) 333333.328125 3333333333333.333010 %mnf整个数据占m位,其中小数占n位,向右对齐。 %-mnf意义同上,向左对齐 maino float=123.456; printf("oof %10f%10. F%0.2f%0-10.2fn'",f, f, f; 123455994123456001 123461234612346 2. Scanf()函数 ●一般格式:; scanf〔格式控制,地址列表) &是地址符,表示a,b,c三个变量在内存中的的地址 连续输入多个数字时,空格、回车和tab键均可作为分割符 [例4.10] an 5 i int a, b,c: scanf(“%%d‰d”,&a&b,&c) Printf(d,%d, %d"a, b,c): 45 格式说明 scanf( %03d%3d, &a, &b) 输入123456 ■注:输入数据要与控制格式相符合 如scan(%d,%d),&a,&b)
%m.nf 整个数据占 m 位,其中小数占 n 位,向右对齐。 %-m.nf 意义同上,向左对齐 main() { float f=123.456; printf(“%f %10f %10.2F %0.2f %-10.2f\n”, f,f,f,f,f); } 2.Scanf( )函数 ⚫ 一般格式:scanf(格式控制,地址列表) ⚫ & 是地址符,表示 a ,b,c 三个变量在内存中的的地址. ⚫ 连续输入多个数字时,空格、回车和 tab 键均可作为分割符 ◼ 格式说明 ◼ scanf(“%3d%3d”,&a,&b); ◼ 输入 123456 ◼ 注:输入数据要与控制格式相符合 ◼ 如:scanf(“%d,%d”, &a,&b);
■正确的输入为:4,5 不正确的输为:45 scanf(a=%d, b=%d, &a, &b); 正确的输入:a=4.b=5 不正确的输入:45和4,5 ■ scanf(%od:%d”,&a,&b) 正确的输入为:4:5 不正确的输为:45或4,5 ?问题:当使用多个scan0函数连续给多个字符变量输入时, 例如 maino char cl c2 scanf(%oc",&cl) scanf("%c",&c2) printf("cl is %C, c2 is %c",cl, c2); 要把a赋给clb赋给c2,在输入数据时应如何操作。? 注意:(1)格式控制符的个数与变量的个数要相符。 (2)格式的类型与变量的类型要一致
◼ 正确的输入为:4,5 ◼ 不正确的输为:4_5 ◼ scanf(“a=%d,b=%d”, &a,&b); ◼ 正确的输入:a=4,b=5 ◼ 不正确的输入:4_5 和 4,5 ◼ scanf(“%d:%d”, &a,&b); ◼ 正确的输入为:4:5 ◼ 不正确的输为:4_5 或 4,5 ?问题: 当使用多个scanf()函数连续给多个字符变量输入时, 例如: main() { char c1, c2; scanf("%c", &c1); scanf("%c", &c2); printf("c1 is %c, c2 is %c", c1, c2); } 要把 a 赋给 c1,b 赋给 c2,在输入数据时应如何操作。? 注意:(1)格式控制符的个数与变量的个数要相符。 (2)格式的类型与变量的类型要一致