C语言程序设计
项目二 商场购物 任务1:商品信息的输入与输出 要求: 输入商品的单价、数量、折扣,输出最后应付总额。 解决问题需要的知识点: 顺序 结构 项目二 商场购物 任务1:商品信息的输入与输出 要求: 输入商品的单价、数量、折扣,输出最后应付总额。 解决问题需要的知识点: 1、理解C程序的语句; 2、掌握C程序中的输入输出语句。
项目二 商场购物 任务1:商品信息的输入与输出 —— 第3章 顺序结构程序设计 章节主要内容 3.1 C语言中的语句 3.2 数据的输入输出 项目二 商场购物 任务1:商品信息的输入与输出 —— 第3章 顺序结构程序设计 章节主要内容 3.1 C语言中的语句 3.2 数据的输入输出
顺序 结构 引例: 成绩的输入与输出(程序界面设计) 1 圆的周长与面积的计算 2 三角形面积求解 3
一个班进行了一次考试,现要将几个学生的成绩输入电脑,并按要求输出。 顺序 结构 引例1:成绩的输入输出/界面设计 #include “stdio.h” //编译预处理 main() // 函数名 { //函数体开始 int x,y,z; //定义三个变量x,y,z printf("请输入三个学生的成绩"); scanf("%d%d%d",&x,&y,&z); /*输入三个学生的成绩*/ printf("输出三个学生的成绩"); printf("x=%d,y=%d,z=%d\n",x,y,z); //输出三个变量x,y,z的值 } //函数体结束 程序运行结果: 一、问题情景 一个班进行了一次考试,现要将几个学生的成绩输入电脑,并按要求输出。 二、具体实现
引例2:圆的面积与周长 #include "stdio.h" main() {float r,s,c; printf("请输入圆的半径r:"); scanf("%f",&r); s=3.14*r*r; c=2*3.14*r; printf("圆的面积s为:%f\n圆的周长c为%f\n",s,c); } 问题:输入圆半径,求圆的面积和周长。π的值取3.14. 流程图 定义变量r,s,c 输入变量r s=3.14*r*r c=2*3.14*r 输出s,c
引例3:输入三角形三边的长,求三角形的周长及面积 #include "stdio.h" #include "math.h" //为求平方根函数sqrt() main() {int a,b,c; float cc,l,s; printf("请输入三角形三边a,b,c的长:"); scanf("%d%d%d",&a,&b,&c); cc=(a+b+c); l=cc/2; s=sqrt(l*(l-a)*(l-b)*(l-c)); printf("三角形的周长cc为%f\n三角形的面积S为%f\n",cc,s); } 定义变量a,b,c,l,cc,s 输入变量a,b,c cc=(a+b+c) l=cc/2 s=sqrt(l*(l-a)*(l-b)*(l-c)); 输出三角形的面积和周长
项目二 商场购物 任务1:商品信息的输入与输出 —— 第3章 顺序结构程序设计 章节主要内容 3.1 C语言中的语句 3.2 数据的输入输出
3.1 C语言中的语句 表达式语句 函数调用语句 控制语句 复合语句 空语句 什么是C语句?
1 、表达式语句 表达式语句由表达式加上分号“;”组成。 其一般形式为: 表达式; 执行表达式语句就是计算表达式的值。 x=y+z; /*赋值语句*/ y+z; /*加法运算语句,但计算结 果不能保留,无实际意义*/ i++; /*自增1语句,i值增1 */
2 、复合语句 一条语句 例如: { x=y+z; a=b+c; printf(“%d%d”,x,a); } 把多个语句用括号{ }括起来组成的一个语句称复合语句。 其一般形式为: { 语句说明; 可执行语句; } 在程序中应把复合语句看成是单条语句,而不是多条语句。 复合语句内的各条语句都必须以分号“;”结尾,在括号“}”外不要加分号。复合语句可嵌套。 一条语句 例如: { x=y+z; a=b+c; printf(“%d%d”,x,a); }
3、 控制语句 控制语句用于控制程序的流程, 以实现程序的各种结构方式。它们由特定的语句定义符组成。C语言有九种控制语句。 可分成以下三类: 条件判断语句: if语句、switch语句 循环执行语句: while语句、 do while语句、for语句 转向语句: break语句、continue语句、goto语句、return语句
4、 函数调用语句 调用函数的语句,由函数名、实际参数加上分号“;”组成。 其一般形式为: 函数名(实际参数表); 例如: printf(“How do you do? ”); /*调用库函数,输出字符串How do you do? */
5、 空语句 仅有一个分号“;”组成的语句称为空语句。空语句是什么也不执行的语句。在程序中空语句可用来作空循环体等。 顺序结构:结构中的语句按它们在程序中出现的顺序逐条执行,这种程序结构称为顺序结构。 例如: while(getchar()!='\n') ;
项目二 商场购物 任务1:商品信息的输入与输出 —— 第3章 顺序结构程序设计 章节主要内容 3.1 C语言中的语句 3.2 数据的输入输出
3.2 数据的输入输出 1、数据输入输出概念 思考: 对计算机来说,什么叫输 入?什么叫输出?C语言是如 何实现数据的输入与输出的? ??
C语言无输入输出语句,I/O操作由函数实现 注:C语言编译系统提供的标准库函数存放在不同的头文件(也称标题文件)中。使用时必须在程序的开头用预编译命令“#include”将头文件包含到用户程序中去。 形式为:#include <头文件>或#include “头文 件” ,输入输出函数存放在标准输入输出文 件stdio.h中。
2、字符数据的输入输出 字符输入函数 格式: getchar( ) 功能:从标准输入设备(键盘)读一字符 返值:正常,返回读取的代码值; 出错,返回EOF(-1) 注意:函数没有参数,因此本身不能提供有效存放所读字符的变量,该函数一般作为表达式的一部分使用。
字符输出函数 格式: putchar(c) 参数: c为字符常量、变量或表达式 功能:把一个字符c输出到标准输出设备(显示器)上 返值:正常,为显示的代码值; 出错,为EOF(-1)
运行结果: #include <stdio.h> void main(void) { int a1,a2; /* 定义两个整型变量*/ char c1,c2; /* 定义两个字符变量*/ a1=97;a2=65;c1=‘a’;c2=‘A’; putchar(a1);putchar(a2); putchar(c1);putchar(c2); putchar(‘\n’); /* 输出字符及换行符*/ a1=getchar(); c1=getchar(); /* 从键盘输入字符*/ putchar(a1);putchar(‘\t’);putchar(c1); /* 输出字符及制表符*/ } /* 调用系统函数getchar()和putchar() */ 练习: 运行结果: 输出:aAaA 输入:97 ¿ 输出:9 7
3、格式化输出──printf()函数 printf()函数的一般格式: printf(“格式字符串”[,输出项表]); 2. 输出项表 (1)printf(“我是一个学生\n”); //没有输出项 (2)printf(“%d”,1+2); //输出1+2的值 (3)printf(“a=%d b=%d\n”,1,1+3); //输出1的值和1+3的值 注意:printf(“%d %f\n”,1.212,5) ; 是错误的。 2. 输出项表 输出项表是可选的。在输出项中,列出要输出的任意类型的数据。如果要输出的数据不止一个,相邻2个之间用逗号分开。 1. 常用的格式字符串有: (1) 格式指示符: %d 带符号十进制整数。 %f带符号十进制小数形式(默认6位小数)。 %c输出一个字符。 (2) 转义字符 (3) 普通字符──除格式指示符和转义字符之外的其它字符。
练习:格式化输出 #include "stdio.h" main() { int x=1,y=2,z=3; float a=1.1,b=2.3; char c1='A',c2='B'; printf("输出x,y,z的值\n"); printf("x=%d,y=%d,z=%d\n",x,y,z); printf("输出a,b的值\n"); printf("a=%f,b=%f\n",a,b); printf("输出c1,c2的值\n"); printf("c1=%c,c2=%c\n",c1,c2); } 程序的运行结果为:
printf()函数附加格式说明符(修饰符) 例: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
4、格式化输入──scanf()函数 scanf()函数的功能: 从键盘上接收格式化输入。 2. scanf()函数的一般格式: 格式字符串: (1)格式字符与printf()函数的相似: %d,十进制带符号的整型数; %f,十进制带符号的实型数; %c,输入一个字符。 (2)空白字符(空格、Tab键和回车键)作为相邻2个输入数据的缺省分隔符。 (3)非空白字符(普通字符)在输入数据时,必须原样一起输入。 地址表列: 由若干个输入项首地址组成,相邻2个输入项地址之间用逗号分开。变量首地址的表示方法如下: &变量名 其中:“&”是地址运算符。
scanf(“%d,%d”,&a,&b); scanf(“%d%d”,&a,&b);
scanf()函数附加格式说明符(修饰符) 例:scanf(“%4d%2d%2d”,&a,&b,&c); 输入 20121231 ¿ 则2012Þa, 12 Þb, 31 Þc 例:scanf(“%2c%3c”,&c1,&c2); 输入 abcde ¿ 则‘a’Þc1, ‘c’ Þc2 例:scanf(“%3d%*4d%f”,&m,&n); 输入 123456789.12¿ 则123Þm, 89.12Þn 例:scanf(“%3d %*2d %2d”,&a,&b); 输入 123 45 67¿ 则123Þa, 67Þb
输入分隔符的指定 一般以空格、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”,&a,&b) 输入 3,4 ¿ 则3Þa, 4 Þb 例:scanf(“%d:%d:%d”,&h,&m,&s); 输入 12:30:45¿ 则12 Þh, 30 Þm, 45 Þs 例:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c); 输入 a=12,b=24,c=36 ¿
用“%c”格式符时,空格和转义字符作为有效字符输入 说明: 用“%c”格式符时,空格和转义字符作为有效字符输入 如:scanf(“%c%c%c”,&c1,&c2,&c3); 若输入abc¿ 则aÞc1, Þc2, b Þc3 输入数据时,遇以下情况认为该数据结束: 遇空格、TAB、或回车 遇宽度结束 遇非法输入 如:scanf(“%d%c%f”,&a,&b,&c); 若输入1234a123o.26 ¿ 则 1234 Þa, ‘a’ Þb, 123 Þc 例:scanf("%d,%d",&a,&b); /*应输入3,4*/ scanf("a=%d,b=%d",&a,&b); /*应输入a=3,b=4形式*/ 格式控制字符串中的普通字符,在输入时要在相应位置输入相同的字符
第3章 顺序结构程序设计——总结 内 容 总 结 语句(表达式语句、函数调用语句、控制语句、复合 语句、空语句);输入与输出概念;字符输入输出函 数(getchar、putchar);格式输入输出函数(printf、 scanf)。 内 容 总 结 知 识 点 字符输入输出函 数(getchar、putchar);格式输入输出函数(printf、 scanf)。 重 难 点