1 / 19

第四章 顺序程序设计

第四章 顺序程序设计. C 语言概述 赋值语句 数据输出 数据输入 程序举例. C 语言无 I/O 语句, I/O 操作由函数实现 # include <stdio.h> 4.1 C 语言概述 (C 中语句的种类有多少? ) C 语句概述 C 语句种类 控制语句 函数调用语句 表达式语句 空语句 ; 复合语句. ①if( )~else~ 条件语句 ② for( ) 循环语句 ③ while( ) 循环语句 ④ do~while( ) 循环语句

Download Presentation

第四章 顺序程序设计

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第四章 顺序程序设计 C语言概述 赋值语句 数据输出 数据输入 程序举例

  2. C语言无I/O语句,I/O操作由函数实现 #include <stdio.h> 4.1 C语言概述(C中语句的种类有多少?) C语句概述 C语句种类 控制语句 函数调用语句 表达式语句 空语句 ; 复合语句 ①if( )~else~ 条件语句 ②for( ) 循环语句 ③while( ) 循环语句 ④do~while( ) 循环语句 ⑤continue 结束本次循环语句 ⑥break 中止执行switch或循环语句 ⑦switch 多分支选择语句 ⑧goto 转向语句 ⑨return 从函数返回语句 由一次函数调用加一个分号构成一个语句, 如 printf(“This is a C statement.”); a=3 i=i+1 a=3; i=i+1; 任何表达式加上分号就成为语句。 用{ }把一些语句括起来就成为复合语句。 如: { z=x+y; t=z/100; printf(“%f”,t);}

  3. 4.2赋值语句 赋值语句 特点 “=”是运算符 表达式与语句的区别 对 错 if (( a=b )>0) t=a; if (( a=b;)>0) t=a;

  4. C语言无I/O语句,I/O操作由函数实现 #include <stdio.h> 4.3 数据输出 字符输出函数 • 格式: putchar( ch ) • 参数: ch为字符常量、变量或表达式 • 功能:把字符ch输出到显示器上 • 返值:正常,为显示的代码值;出错,为EOF(-1)

  5. /*ch3_1.c*/ #include <stdio.h> main() { int c; char a; c=65; a='B'; putchar(c); putchar('\n'); putchar(a); } 运行结果:A B

  6. 格式输出函数 • 格式:printf(“格式控制串”,输出表) • 功能:按指定格式向显示器输出数据 • 返值:正常,返回输出字节数;出错,返回EOF(-1) • 输出表:要输出的数据(可以没有,多个时以“,”分隔) • 格式控制串:包含两种信息 • 格式说明: %[修饰符]格式字符,用于指定输出格式。 %[-][+][#][m][.n][h/l/L]格式符 • 普通字符或转义序列:原样输出 • 格式字符 主要用于确定输出项的输出格式

  7. 格式字符: 十进制整数 d 十六进制无符号整数 x,X 八进制无符号整数 o 不带符号十进制整数 u 单一字符 c 字符串 s 指数形式浮点小数 e,E 小数形式浮点小数 f e和f中较短一种 g 百分号本身 %% int a=567;printf ( “%d”,a); 567 int a=255;printf(“%x”,a); ff int a=65;printf(“%o”,a); 101 int a=567;printf(“%u”,a); 567 • 例#include <stdio.h> • main() • { unsigned int u=65535; • printf(”u=%d\n",u); • } • 输出结果:u=-1 char a=65;printf(“%c”,a); A 例 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 ABC printf(“%s”,“ABC”); float a=567.789;printf(“%e”,a); 5.677890e+02 567.789000 float a=567.789;printf(“%f”,a); float a=567.789;printf(“%g”,a); 567.789 printf(“%%”); % • 说明 • 格式字符要用小写 • 格式字符与输出项个数应相同,按先后顺序一一对应 • 输出转换:格式字符与输出项类型不一致,自动按指定格式输出

  8. 附加格式说明符(修饰符) 修饰符 功 能 m 指定输出数据域宽,数据长度<m,左补空格;否则按实际输出 对实数,指定小数点后位数(四舍五入) 对字符串,指定实际输出位数 .n 输出数据在域内左对齐(缺省右对齐) - 指定在有符号数的正数前显示正号(+) + 输出数值时指定左面不使用的空位置自动填0 0 # 在八进制和十六进制数前显示前导0,0x 在d,o,x,u前,指定输出精度为long型 在e,f,g前,指定输出精度为double型 l

  9. 例 m.n 例 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

  10. 例 - 例 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.46,123.5 Hello,Hel

  11. 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 例 0 、+ 例 int a=1234; float f=123.456; printf(“%08d\n”,a); printf(“%010.2f\n”,f); printf(“%0+8d\n”,a); printf(“0+10.2f\n”,f); //00001234 //0000123.46 //000+1234 //000+123.56 例 # 例 int a=123; printf(“%o,%#o,%x,%#x\n”,a,a,a,a); //173,0173,7b,0x7b 例 l 例 long a=65536; printf(“%d,%8ld\n”,a, a); //0, 65536

  12. 4.4数据输入 字符输入函数 • 格式: getchar( ) • 功能:从键盘读一字符 • 返值:正常,返回读取的代码值;出错,返回EOF(-1) /*ch3_4.c*/ #include <stdio.h> main() { int c; printf("Enter a character:"); c=getchar(); printf("%c--->hex%x\n",c,c); } 运行结果: Enter a character:A A--->hex41

  13. 格式输入函数 • 格式: scanf(“格式控制串”,地址表) • 功能:按指定格式从键盘读入数据,存入地址表指定的存储单元中,并按回车键结束 • 返值:正常时,返回输入数据个数 • 地址表:变量的地址,常用取地址运算符& • 格式字符:d,o,x,u,c,s,f,e 例 scanf(“%d”,&a); 输入:10  则 a=10 例 scanf(“%x”,&a); 输入:11  则 a=17

  14. 修饰符 功 能 h 用于d,o,x前,指定输入为short型整数 用于d,o,x前,指定输入为long型整数 l 用于e,f前,指定输入为double型实数 m 指定输入数据宽度,遇空格或不可转换字符则结束 抑制符,指定输入项读入后不赋给变量 * 附加格式说明符(修饰符) 例 scanf(“%4d%2d%2d”,&yy,&mm,&dd); 输入 19991015  则1999yy, 10 mm, 15 dd • 例 scanf(“%2d%*3d%2d”,&a,&b); • 输入 1234567 • 则12a, 67b • 例 scanf(“%3d%*4d%f”,&k,&f); • 输入 12345678765.43 • 则123k, 8765.43f 例 scanf(“%3c%2c”,&c1,&c2); 输入 abcde  则‘a’c1, ‘d’ c2

  15. 输入分隔符的指定 一般以空格、TAB或回车键作为分隔符 其它字符做分隔符:格式串中两个格式符间字符 例 scanf(“%d%o%x”,&a,&b,&c); printf(“a=%d,b=%d,c=%d\n”,a,b,c); 输入 123 123 123 输出 a=123,b=83,c=291 • 例 scanf(“%d:%d:%d”,&h,&m,&s); • 输入 12:30:45 • 则12 h, 30 m, 45 s • 例 scanf(“%d,%d”,&a,&b) • 输入 3,4  • 则3a, 4 b • 例 scanf(“a=%d,b=%d,c=%d”,&a,&b,&c); • 输入 a=12,b=24,c=36 

  16. 说明: 用“%c”格式符时,空格和转义字符作为有效字符输入 • 输入数据时,遇以下情况认为该数据结束: • 遇空格、TAB、或回车 • 遇宽度结束 • 遇非法输入 如 scanf(“%c%c%c”,&c1,&c2,&c3); 若输入abc 则ac1, c2, b c3 如 scanf(“%d%c%f”,&a,&b,&c); 若输入1234a123o.26  则 1234 a, ‘a’ b, 123 c 例 int x; char ch; scanf(“%d”,&x); ch=getchar(); printf(“x=%d,ch=%d\n”,x,ch); 执行:123 输出:x=123,ch=10 解决方法: (1)用getchar()清除 (2)用函数fflush(stdin)清除全部剩余内容 (3) 用格式串中空格或“%*c”来“吃掉” 例 int x; char ch; scanf(“%d”,&x); scanf(“%c”,&ch); printf(“x=%d,ch=%d\n”,x,ch); 执行:123 输出:x=123,ch=10 例 int x; char ch; scanf(“%d”,&x); scanf(“ %c”,&ch); 或 scanf(“%*c%c”,&ch); 返回

  17. 4.5程序举例 文件包含预处理命令 变量定义 输入数据 输出数据 例 输入三角形边长,求面积 /*ch3_12.c*/ #include <math.h> #include <stdio.h> main() { float a,b,c,s,area; scanf("%f%f%f",&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2f\n",a,b,c,s); printf("area=%7.2f\n",area); } 输入:346  输出:a= 3.00, b= 4.00, c= 6.00 s= 6.50 area= 5.33

  18. 例: 从键盘输入大写字母,用小写字母输出 /*ch3_13.c*/ #include "stdio.h" main() { char c1,c2; c1=getchar(); printf("%c,%d\n",c1,c1); c2=c1+32; printf("%c,%d\n",c2,c2); } 输入:A 输出:A,65 a,97

  19. /*ch3_14.c*/ #include <stdio.h> #include <math.h> main() { float a,b,c,disc,x1,x2,p,q; scanf("a=%f,b=%f,c=%f",&a,&b,&c); disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("\n\nx1=%5.2f\nx2=%5.2f\n",x1,x2); } 输入:a=1,b=3,c=2  输出:x1=-1.00 x2=-2.00 返回

More Related