程序设计基础 谭浩强 著 清华大学出版社
第四章 最简单的程序设计基础- 顺序程序设计 程序设计基础 第四章 最简单的程序设计基础-顺序程序设计 第四章 最简单的程序设计基础- 顺序程序设计 C语句概述 赋值语句 数据输入输出的概念及在C语言中的实现 字符数据的输入输出 格式输入与输出 顺序结构程序设计举例
程序设计基础 第四章 最简单的程序设计基础-顺序程序设计 4.1 C语句概述 C程序的结构 C语句的分类 返回主菜单
C程序的结构
只有分号“;”组成的语句,什么也不执行,在程序中可做空循环体 C语句的分类 一般形式:表达式; 例:x=y+z; i++; 表达式语句 一般形式: 函数名(实际参数表); 例:printf("C Program"); 函数调用语句 条件判断语句:if、switch 循环执行语句:do while、while、for 转向语句:break、goto、continue、return 控制语句 { x=y+z; a=b+c; printf(“%d%d”,x,a); } 复合语句 把多个语句用{ }括起来组成的一个语句 只有分号“;”组成的语句,什么也不执行,在程序中可做空循环体 空语句
4.2 赋值语句 × √ √ × 一般形式:变量=表达式; 说明: 1)赋值语句可以嵌套 如:a=b=c=5; 程序设计基础 第四章 最简单的程序设计基础-顺序程序设计 4.2 赋值语句 一般形式:变量=表达式; 说明: 1)赋值语句可以嵌套 如:a=b=c=5; 2)在变量说明中给变量赋初值和赋值语句的区别 int a=5,b,c; 3)在变量说明中,不允许连续给多个变量赋初值 × √ int a=5,b=5,c=5; int a=b=c=5 ; 4)赋值表达式和赋值语句的区别 √ if((x=y+5)>0) z=x; × if((x=y+5;)>0) z=x; 返回主菜单
4.3 数据输入输出的概念及在C语言中的实现 所谓输入输出是以计算机为主体而言的 本章介绍的是向标准输出设备显示器输出数据的语句 程序设计基础 第四章 最简单的程序设计基础-顺序程序设计 4.3 数据输入输出的概念及在C语言中的实现 所谓输入输出是以计算机为主体而言的 本章介绍的是向标准输出设备显示器输出数据的语句 在C语言中,所有的数据输入/输出都是由库函数完成的, 因此都是函数语句 在使用C语言库函数时,要用预编译命令 # include将有关“头文件”包括到源文件中 返回主菜单
4.4 字符数据的输入输出 putchar函数(字符输出函数) 一般形式 putchar(字符变量) getchar函数(字符输入函数) 程序设计基础 第四章 最简单的程序设计基础-顺序程序设计 4.4 字符数据的输入输出 向终端输出一个字符 putchar函数(字符输出函数) 例4.1 一般形式 putchar(字符变量) 从键盘上输入一个字符 getchar函数(字符输入函数) 一般形式 getchar( ) 例4.2 返回主菜单
例4.1 输出单个字符 #include<stdio.h> main() {char a,b,c; 程序设计基础 第四章 最简单的程序设计基础-顺序程序设计 例4.1 输出单个字符 #include<stdio.h> main() {char a,b,c; a=‘B’;b=‘O’;c=‘Y’; putchar(a); putchar(b); putchar(c); putchar(‘\n’); } 输出: BOY 运行程序
例4.2 输入单个字符 #include<stdio.h> main() {char c; c=getchar(); 程序设计基础 第四章 最简单的程序设计基础-顺序程序设计 例4.2 输入单个字符 #include<stdio.h> main() {char c; c=getchar(); putchar(c); } 输出(如在键盘上输入“a”): a↙ a 运行程序
指定输出格式 ,由格式字符串和非格式字符串两种组成 ,非格式字符串照原样输出。 程序设计基础 第四章 最简单的程序设计基础-顺序程序设计 4.5 格式输入与输出 printf函数(格式输出函数) 一般形式: printf(“格式控制字符串”,输出表列) ; 指定输出格式 ,由格式字符串和非格式字符串两种组成 ,非格式字符串照原样输出。 例4.3 例4.4 例4.5 例4.8 例4.7 例4.6 scanf函数(格式输入函数) 一般形式: scanf(“格式控制字符串”,地址表列); 指定输入格式 ,只有格式字符串。 例4.9 说明 返回主菜单
格式字符串 一般形式: %[标志][输出最小宽度][.精度][长度]类型 类型:用以表示输出数据的类型 标志:标志字符为-、+、#、空格四种 输出最小宽度:用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。 精度:以“.”开头,后跟十进制整数。如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。 长度:长度格式符为h,l两种,h表示按短整型量输出,l表示按长整型量输出。
格式字符串类型 格式字符 意 义 d,i 以十进制形式输出带符号整数(正数不输出符号) o 以八进制形式输出无符号整数(不输出前缀0) 意 义 d,i 以十进制形式输出带符号整数(正数不输出符号) o 以八进制形式输出无符号整数(不输出前缀0) x,X 以十六进制形式输出无符号整数(不输出前缀Ox) u 以十进制形式输出无符号整数 f 以小数形式输出单、双精度实数 e,E 以指数形式输出单、双精度实数 g,G 以%f或%e中较短的输出宽度输出单、双精度实数 c 输出单个字符 s 输出字符串
标志 标 志 意 义 - 结果左对齐,右边填空格 + 输出符号(正号或负号) 空格 输出值为正时冠以空格,为负时冠以负号 # 意 义 - 结果左对齐,右边填空格 + 输出符号(正号或负号) 空格 输出值为正时冠以空格,为负时冠以负号 # 对c,s,d,u类无影响;对o类,在输出时加前缀o;对x类,在输出时加前缀0x;对e,g,f 类当结果有小数时才给出小数点
例4.3 无符号数据的输出 main() {unsigned int a=65535; int b=-2; 程序设计基础 第四章 最简单的程序设计基础-顺序程序设计 例4.3 无符号数据的输出 main() {unsigned int a=65535; int b=-2; printf(“a=%d,%o,%x,%u\n”,a,a,a,a); printf(“b=%d,%o,%x,%u\n”,b,b,b,b); } 输出: a=-1,177777,ffff,65535 b=-2,177776,fffe,65534 运行程序
例4.4 字符数据的输出 main() {char c=‘a’; int i=97; printf(“%c,%d\n”,c,c); 程序设计基础 第四章 最简单的程序设计基础-顺序程序设计 例4.4 字符数据的输出 main() {char c=‘a’; int i=97; printf(“%c,%d\n”,c,c); printf(“%c,%d\n”,i,i); } 输出: a,97 运行程序
程序设计基础 第四章 最简单的程序设计基础-顺序程序设计 例4.5 字符串的输出 main() { printf(〝 %3s,%7.2s,%.4s,%-5.3s\n 〞, 〝CHINA〞, 〝CHINA〞, 〝CHINA〞, 〝CHINA〞); } 输出: CHINA, CH,CHIN,CHI ︺ 运行程序
例4.6 输出实数时的有效位数 main() {float x,y; x=111111.111; y=222222.222; 程序设计基础 第四章 最简单的程序设计基础-顺序程序设计 例4.6 输出实数时的有效位数 main() {float x,y; x=111111.111; y=222222.222; printf(“%f”,x+y); } 输出: 333333.328125 运行程序 只有前7位是有效数字
例4.7 输出双精度数时的有效位数 main() {double x,y; x=1111111111111.111111111; 程序设计基础 第四章 最简单的程序设计基础-顺序程序设计 例4.7 输出双精度数时的有效位数 main() {double x,y; x=1111111111111.111111111; y=2222222222222.222222222; printf(“%f”,x+y); } 输出: 3333333333333.333010 运行程序 只有前16位是有效数字
例4.8 输出实数时指定小数位数 main() { float f=123,456; 程序设计基础 第四章 最简单的程序设计基础-顺序程序设计 例4.8 输出实数时指定小数位数 main() { float f=123,456; printf(“%f %10f %10.2f %.2f %-10.2f\n”,f,f,f,f,f); } ︺ ︺ ︺ ︺ ︺ ︺ ︺ ︺ 输出: 123.455994 123,455994 123.46 123.46 123.46 ︺ 运行程序
例4.9 用scanf函数输入数据 main() {int a,b,c; scanf(“%d%d%d”,&a,&b,&c); 程序设计基础 第四章 最简单的程序设计基础-顺序程序设计 例4.9 用scanf函数输入数据 main() {int a,b,c; scanf(“%d%d%d”,&a,&b,&c); printf(“%d,%d,%d\n”,a,b,c); } 输入:3 4 5 输出: 3,4,5 运行程序
格式字符串 一般形式: %[*][输入数据宽度][长度]类型 类型:表示输入数据的类型 “*”符:用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。 宽度:用十进制整数指定输入的宽度(即字符数)。 长度:长度格式符为l和h,l表示输入长整型数据(如%ld) 和双精度浮点数(如%lf)。h表示输入短整型数据。
格式字符串类型 格式 字符意义 d,i 输入十进制整数 o 输入八进制整数 x 输入十六进制整数 u 输入无符号十进制整数 f或e 输入实型数(用小数形式或指数形式) c 输入单个字符 s 输入字符串
scanf函数的几点说明 √ × 1)scanf函数中没有精度控制 。 2)scanf函数中要求给出变量地址,而不是变量名。 scnaf("%d",&a); √ × scanf("%d",a); 3)在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。C编译在碰到空格,TAB,回车或非法数据时即认为该数据结束。 4)在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。 scanf(“%c%c%c”,&c1,&c2,&c3); 如输入 a b c ︺ 则把‘a’赋予c1,‘ ’赋予c2,‘b’赋予c3
程序设计基础 第四章 最简单的程序设计基础-顺序程序设计 4.6 顺序结构程序设计举例 例4.10 例4.11 例4.12 返回主菜单
例4.10 输入三角形的三边长,求三角形面积 #include<math.h> main() { 输入:3,4,6 程序设计基础 第四章 最简单的程序设计基础-顺序程序设计 例4.10 输入三角形的三边长,求三角形面积 #include<math.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); } 输入:3,4,6 运行程序 输出: a= 3.00,b= 4.00,c= 6.00,s= 6.50 ares= 5.33
例4.11 从键盘输入一个大写字母,要求改用小写字母输出 程序设计基础 第四章 最简单的程序设计基础-顺序程序设计 例4.11 从键盘输入一个大写字母,要求改用小写字母输出 #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 运行程序
例4.12 求ax2+bx+c=0方程的根,a,b,c由键盘输入,设b2-4ac>0。 程序设计基础 第四章 最简单的程序设计基础-顺序程序设计 例4.12 求ax2+bx+c=0方程的根,a,b,c由键盘输入,设b2-4ac>0。 #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 运行程序
The end