项目一 学生成绩的平均分与总分的计算(课件)-《 C语言程序设计》同步教学(电子工业出版社)

2024-08-10
| 34页
| 45人阅读
| 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 ",x,y,z); //输出三个变量x,y,z的值 } //函数体结束 程序运行结果: 从上面这段程序可分析出: 首先,要了解C语言的结构; 第二,要了解C语言的运行环境; 第三,要懂得如何定义变量,输入输出语句。 相关知识 (一) C程序的结构 #include “stdio.h” {int x,y; main( ) x=1; y=x+2; printf(“x=%d y=%d ”,x,y); } 文件预处理 主函数 数据声明部分 语句部分 (二) C程序运行环境及运行方法 点击【文件】→【新建】,出现的对话框中用鼠标点击【文件】→【C++Source File】,然后更改文件所保存的目录(若需要更改),需入文件名,然后点击【确定】。输入程序。当程序输入完毕后,点击 或按F7,进行编译和连接。如果没有错误,点击 或按Ctrl+F5,进行运行,就能得出程序运行的结果。 (三) 数据类型 C语言的数据类型可分为: 基本类型:又分为整型、实型、字符型和枚举型四种。其中枚举型这里暂不介绍。 构造类型:又分为数组类型、结构类型和共用类型三种。 指针类型。 空类型。 【常量】 在程序运行中,其值不能被改变的量称为常量。 常量可分为: 整型常量。例1,23,-8。 实型常量。例 1.23,-9.8,.123,23.,0.0,2.23e-4(表示2.23×10-4), 0.23e3(表示0.23×103), 0.23E-3(表示0.23×10-3),1.23E3(表示1.23×103)。 字符常量。例 ‘A’,’+’,’8’。 符号常量。例 #define PI 3.14。则PI是一个符号常量,其值为3.14, 它不能在程序中被改变。(请见任务三中的例1-15改) 【变量】 所谓变量就是在程序运行过程中,其值可以被改变的量。 一个变量由两个要素组成。即变量名和变量值。 变量名:每一个变量都必须有一个名字,即变量名。变量名的命名规则: 由字母或下划线开头,后面跟字母、数字和下划线。其有效长度, 随系统而异,但至少前8个字符有效。如果超长,则超长部分被舍弃。 C语言的变量名区分大小写。 即同一字母的大小写,被认为给是两个不同的变量。 例Total、total、toTal是不同的变量名。 给变量名命名时,最好遵循“见名知意”这一基本原则。 例如,name/xm(姓名)、sex/xb(性别)、age/nl(年龄)、salary/gz(工资)。 【变量】 所谓变量就是在程序运行过程中,其值可以被改变的量。 一个变量由两个要素组成。即变量名和变量值。 变量名:每一个变量都必须有一个名字,即变量名。变量名的命名规则: 由字母或下划线开头,后面跟字母、数字和下划线。其有效长度, 随系统而异,但至少前8个字符有效。如果超长,则超长部分被舍弃。 【变量定义与初始化】 数据类型 变量名[=初值,变量名2=初值2……]; 例如:int x=1,y=2,z=3; float a=1.1,b=1.2,c=-0.1; char ch1=’A’,ch2=’*’; (四) 格式化输出──printf()函数 printf()函数的一般格式 printf(“格式字符串”[,输出项表]); 1. 常用的格式字符串有: (1) 格式指示符: %d 带符号十进制整数。 %f带符号十进制小数形式(默认6位小数)。 %c输出一个字符。 (2) 转义字符 例1-1中的printf()函数中的” ”就是转义字符,输出时产生一个“换行”。 (3) 普通字符──除格式指示符和转义字符之外的其它字符。例1-1中的printf(“x=%d,y=%d,z=%d ”,x,y,z);的“x=”、“y=”、“z=”,格式字符串中的普通字符,原样输出。在汉字系统环境下,允许使用汉字。 2. 输出项表 输出项表是可选的。在输出项中,列出要输出的任意类型的数据。如果要输出的数据不止一个,相邻2个之间用逗号分开。 (1)printf(“我是一个学生 ”); //没有输出项 (2)printf(“%d”,1+2); //输出1+2的值 (3)printf(“a=%d b=%d ”,1,1+3); //输出1的值和1+3的值 注意:printf(“%d %f ”,1.212,5) ; 是错误的。 #include “stdio.h” main() { printf(“’%d %f ”,1.234,6); } 【例1-3】格式化输出。 #include "stdio.h" main() { int x=1,y=2,z=3; /*定义x,y,z三个整型变量,并将它们的初值赋为 1,2,3*/ float a=1.1,b=2.3; char c1='A',c2='B'; /*定义c1,c2二个字符型变量,并将它们的初值赋为'A'和'B'*/ printf("输出x,y,z的值 "); //原样"输出x,y,z的值"后换行 printf("x=%d,y=%d,z=%d ",x,y,z); //输出"x=1,y=2,z=3"后换行 printf("输出a,b的值 "); printf("a=%f,b=%f ",a,b); printf("输出c1,c2的值 "); printf("c1=%c,c2=%c ",c1,c2); //输出c1='A',c2='B'后换行 } 程序的运行结果为: (五)格式化输入──scanf()函数 1. scanf()函数的功能:从键盘上接收格式化输入。 2. scanf()函数的一般格式 scanf(“格式字符串”,输入项首地址表); 格式字符串。格式字符串可以包含3种类型的字符:格式字符,空白字符(空格、Tab键和回车键)和非空白字符(又称普通字符)。 格式指示符与printf()函数的相似: %d,十进制带符号的整型数; %f,十进制带符号的实型数; %c,输入一个字符。 空白字符作为相邻2个输入数据的缺省分隔符。 非空白字符在输入数据时,必须原样一起输入。 输入项首地址表──由若干个输入项首地址组成,相邻2个输入项地址之间用逗号分开。变量首地址的表示方法如下: &变量名 其中“&”是地址运算符。例如,在例1-1中scanf(“%d%d%d”,&x,&y,&z)中的“&x”是指变量x在内存中的首地址。其功能是从键盘上输入3个整型数,分别存入&x,&y,&z起始的存储单元中,即输入三个整数分别赋给x,y,z。 scanf(“%d,%d”,&a,&b); scanf(“%d%d”,&a,&b); [例1-4]有两个人A,B,在数学考试中获得87和76的成绩,请输入A,B两人的代号及成绩,输出成绩。 分析:此题就是考查输入输出语句,注意整数输入/输入的格式用%d,字符变量的输入/输出格式用%c,同时注意输入语句中的两个数据之间用什么符号隔开,则在程序运行输入数据时也要用同样的符号隔开两个数据。 #include "stdio.h" main() { char c1,c2; int x,y; printf("请输入A的成绩及代号:"); scanf("%d:%c",&x,&c1); printf("请输入B的成绩及代号:"); scanf("%d:%c",&y,&c2); printf("输出A的代号及成绩:"); printf("%c:%d ",c1,x); printf("输出B的代号及成绩:"); printf("%c:%d ",c2,y); } 程序运行结果为: 知识扩展 1. 转义字符 已经提到“ ”的转义字符,是换行。 常用的转义字符还有“\t”,即横向跳出下一个输出区。 【例1-5】用转义字符控制输出效果。 #include "stdio.h" main() { printf("%d\t%d\t%d ”,1,2,3); } 程序运行结果如图所示 2.格式化输出 前面,已经学过输出语句的一般格式为: printf(“格式字符串”[,输出项表]); 常用的格式字符串表示法如下: “%5d”表示输出十进制带符号的整数,其输出域的宽度为5位,若数超长,则按实际宽度输出;若不足,则输出数的左端补空格。“%ld”只是表示输出的是长整型。 “%-5d” 表示输出十进制带符号的整数,其输出域的宽度为5位,若数超长,则按实际宽度输出;若不足,则输出数的右端补空格。 “%6.1f” 表示输出十进制带符号的单、双精度实数,其输出域的宽度为6位,其中小数一位,若数超长,则按实际宽度输出;若不足,则输出数的左端补空格。 “%-7.2f” 表示输出十进制带符号的单、双精度实数,其输出域的宽度为7位,其中小数2位,若数超长,则按实际宽度输出;若不足,则输出数的右端补空格。 【例1-6】类型转换字符d的使用。 #include <stdio.h> main() {int a=123; long b=123456; /*用四种不同格式,输出int型数据a的值*/ printf("a=%d,a=%5d,a=%-5d,a=%2d ",a,a,a,a); /*用四种不同格式,输出long型数据b的值*/ printf("b=%ld,b=%8ld,b=%-8ld,b=%2ld ",b,b,b,b); printf("a=%ld ",a); //用%ld输出int型数据a printf("b=%d ",b); //用%d输出long型数据b } 程序的运行结果如图所示。 分析: a=%d,按实际长度输出123。 a=%5d,由于123只占3列,所以前面空二个空格,输出a=□□123。 a=%-5d,由于123只占3列,同时有一个“-”号,所以右面空二个空格,输 出a=123□□。 a=%2d,由于123占3列,所以按实际宽度输出。即输出a=123。 b=%ld,按实际长度输出123456。即输出b=123456。 b=%8ld,由于123456只占6列,所以前面空二个空格,输出b=□□123456。 b=%-8ld,由于123456只占6列,同时有一个“-”号,所以右面空二个空格,输出b=123456□□。 b=%2ld,由于123456占6列,所以按实际宽度输出。即输出b=123456。 a=%ld,输出a=123。 b=%d,输出b=123456。 【例1-7】类型转换字符f的使用。 #include <stdio.h> main() {float f=123.456; double d1,d2; d1=111111.11111111; d2=222222.22222222; printf("f=%f,f=%12f,f=%12.2f,f=%-12.2f,f=%.0f,f=%.2f ",f,f,f,f,f,f); printf("d1+d2=%f ",d1+d2);} 分析: f=%f是将小数保留6位,所以输出f=123.456001(因为f是float型,由于精度的关系,最后的小数位出现了1,后面同理)。 f=%12f是共输出12列,小数位还是是默认为6位,也就是6位小数,加上一个小数点,再加上整数位是3位,一共是10位,所以在左边加上二个空格,也就是输出f=□□123.456001。 f=%12.2f表示一共输出12位,其中小数位是二位(4舍5入),加上一个小数点,再加上整数位是3位,一共是6位,所以在左边加上六个空格,也就是输出f=□□□□□□123.46。 f=%-12.2f与前面一样,只是将空格放置在右边,也就是输出f=123.46□□□□□□。 f=%.0f表示整数位原样输出,小数位是0位,也就是输出f=123。 f=%.2f表示整数位原样输出,小数位是2位(4舍5入),也就是输出f=123.46。 程序结果如图所示。 3.单个字符的输入输出 (1)单个字符的输出——putchar()函数 【例1-8】putchar()函数的格式和使用方法。 #include “stdio.h” main() {char ch1,ch2,ch3; ch1=’S’; ch2=’u’;ch3=’n’; putchar(ch1); putchar(ch2); //输出ch1,ch2的值 putchar(ch3); putchar(‘ ’); //输出ch3的值并换行 putchar(ch1); putchar(‘ ’); //输出ch1的值并换行 putchar(‘u’); putchar(‘ ’); //输出字符’u’并换行 putchar(ch3); putchar(‘ ’); //输出ch3的值并换行 } 程序运行如图所示。 putchar()函数的格式为: putchar(ch); ch可以是一个字符变量或常量,也可以是一个转义字符。 putchar()函数的作用是向终端输出一个字符。 注意 putchar()函数只能用于单个字符的输出,且一次只能输出一个字符。从功能角度来说,printf()函数完全可以替代putchar()函数;同样使用putchar()函数也需要在程序的开头加上编译预处理命令,即:#include “stdio.h” (2)单个字符的输入——getchar( )函数 【例1-9】getchar()函数的格式和使用方法。 #include “stdio.h” main() {char ch; printf(“请输入一个字符”); ch=getchar(); //从键盘输入一个字符并赋给变量ch putchar(ch);putchar(‘ ’); //输出ch的值并换行 putchar(getchar()); //从键盘输入一个字符并输出 putchar(‘ ’); } getchar()函数的格式:getchar(); getchar()函数的作用:从键盘输入一个字符。从功能的功度看,scanf()函数完全可以替代getchar()函数。 注意 getchar()函数只能用于单个字符的输入,且一次只能输入一个字符。同样使用getchar()函数要在程序的开头加上编译预处理命令,即:#include “stdio.h” 4.字符串常量 字符串常量是由双引号括起来的一串字符。如“How do you do.”就是字符串常量,在C语言中,系统在每个字符串的最后自动加入一个字符‘\0’作为字符串结束的标志。请注意字符常量和字符串的区别,例如。‘a’是一个字符常量,在内存中占一个字节;而”a”是字符串常量,占二个字节的存储空间,其中的一个字节用来存放‘\0’。两个连续的双引号“”也是一个字符常量,称作“空串”。但要占一个字节的存储空间来存放‘\0’。 注意 (1)字符串的结束符‘\0’占内存空间,但在测试字符串长度时不计在内,也不输出。 (2)‘\0’为字符串的结束符,但遇到‘\0’不一定是字符串的结束,可能是八进制数组成的转义字符常量,如字符串“abc\067de”表示6个字符,并非为3个。 【例1-10】下列数据中,为字符串常量的是()。 (A)’A’ (B)“house” (C) How do you do (D) $asd 分析:字符串常量是用一对双引号括起来的字符序列。答案为B。 ▲ 举一反三 【例1-10】若变量为float类型,要通过语句scanf(“%f%f%f”, &a, &b, &c);给a赋予10.0,b赋予22.0,c赋予33.0,则下列A、B、C、D四个答案中不正确的为哪个。请大家将它写成一个完整的C语言,使得程序的运行结果是:a=10.0,b=10.0,c=10.0 A.10<回车> B.10.0,22.0,33.0<回车> 22<回车> 33 C.10.0<回车> D.10 22<回车> 22.0 33.0<回车> 33<回车> 分析: (1)因为语句scanf(”%f%f%f”, &a, &b, &c)是要求我们在输入时,数与数之间要么是空格分隔开,要么是回车隔开,所以答案A、C、D均可,只有B错。若是以10.0,22.0,33.0<回车>的形式输入数据,则输入语句应写成:scanf(”%f ,%f,%f”, &a, &b, &c); (2)因为a,b,c的值为实型,所以定义的变量要求是实型float ,输出的语句要注意保留小数一位。 答案:B。 完整的程序如下: #include “stdio.h” main() {float a,b,c; scanf(“%f%f%f”, &a, &b, &c); printf(“a=%.1f,b= %.1fc=%.1f”, a, b, c);} 【例1-11】有一输入函数scanf(“%d”,k),则不能使float类型变量k得到正确数值的原因是什么? 分析:因为k是实型变量,所以格式字符串应该是“%f”,同时变量前边未加取地址符&。 答案:scanf(“%f”,&k)。 【例1-12】阅读以下程序,当输入数据的形式为:12,34,正确的输出结果为( )。 #include ”stdio.h” main() { int a,b; scanf(“%d%d”, &a,&b); printf(“a+b=%d ”,a+b);} A.a+b=46 B.有语法错误 C.a+b=12 D.不确定值 分析:因为输入语句scanf(“%d%d”, &a,&b)要求输入的二个数之间以空格或回车分隔,而题意中给出的二个数是以逗号分隔,所以导致b的值为一个不确定数,所以其值为不确定。 答案:D 【例1-13】有如下程序,若要求x1、x2、y1、y2的值分别为10、20、A、B,正确的数据输入应该如何?请将这段程序后面补充printf()使之完整。 int x1,x2; char y1,y2; scanf(“%d%d”,&x1,&x2); scanf(“%c%c”, &y1,&y2); A.1020AB B.10└┘20└┘AB C.10└┘20 D.10└┘20AB AB 分析:因为x1,x2是整型变量,所以二个数之间可以空格分隔,也可以回车分隔;而y1,y2是字符型,则在输入完x2值后的任何字符(包括空格及回车,程序都认为是在为y1,y2输入值,所以答案A的错误是没将10、20分隔,答案B的错是输入完20后的空格,程序认为是给y1赋值,后面的‘A’是给y2的值,即y1的值为空格,y2的值为字符‘A’;答案C的输入方法程序认为x1=10,x2=20,y1的值为回车,y2的值为字符‘A’;只有答案D是正确的。 答案为D。 参考程序: #include "stdio.h" main() {int x1,x2; char y1,y2; scanf("%d%d",&x1,&x2); scanf("%c%c",&y1,&y2); printf("x1=%d,x2=%d ",x1,x2); printf("y1=%c,y2=%c ",y1,y2);} 任务2 总分及平均分的计算 一、任务提出 一个班进行了一次考试,现要将几个学生的成绩输入电脑,并计算他们的平均分及总分,然后按要求输出。 二、具体实现 #include "stdio.h" main() { int x,y,z; float sum,avg; //定义二个实型变量sum,avg printf("请输入三个学生的成绩"); scanf("%d%d%d",&x,&y,&z); /*输入三个学生的成绩*/ sum=x+y+z; //将x+y+z的值赋给sum avg=sum/3; //将sum/3的值赋给avg printf("请输出三个学生的总成绩及平均分为"); //输出提示 printf("sum=%.2f,avg=%.2f ",sum,avg); //输出二个变量sum及avg的值 } 程序的执行情况如下 : 首先,算术运算和算术表达式; 第二,赋值运算和赋值表达式; 另外,还需掌握在本任务中没有体现,但在C程序中却经常要用到的C语言特有的运算和运算符。 三、相关知识 (一) 算术运算与算术表达式 1. 五种基本的算术运算符 +(加法)、-(减法)、*(乘法)、/(除法)、%(求余数) 这里,需要特别提出的是: (1)关于除法运算/ C语言规定,两个整数相除,其商为整数,小数部分被舍弃。例如:5/2=2。 如果商为负数,则取整的方向随系统而异。但大多数的系统采取“向零取整”原则,换句话说,取其整数部分。例如:-5/3=-1。 (2)关于求余数运算% 要求两侧的操作数均为整型数据,否则出错。例如:5%3=2,3%5=3,-5%3=-2,-5%(-3)=-2。但是,5.2%3是语法错。 (一) 算术运算与算术表达式 2. 表达式和算术表达式 (1)表达式的概念 用运算符和括号将运算对象(常量、变量和函数)连接起来的、符合C语言语法规则的式子,称为表达式。 单个常量、变量,可以看作是表达式的一种特例。将单个常量、变量构成的表达式称为简单表达式,其他表达式称之为复杂表达式。 (2)算术表达式的概念 表达式中的运算符都是算术运算符。例如:3+2*5、(x+y)/2+3、5%2+3都是算术表达式。 3. 运算符的优先级与结合性 (1)算术运算符的优先级是:先*,/,%,再+,-。 (2)有括号的先做括号。 (一) 算术运算与算术表达式 4. 数据类型转换 高 double ← float    ↑ long    ↑ unsigned    ↑ 低 int ← char,short 例如: (double)x 等价于(double)(x) //将变量x的值转换成double型 (int)(x+y) //将x+y的结果转换成int型 (float)7/2 等价于(float)(7)/2 //将7转换成实型,再除以2(=3.5) (float)(7/2) //将7整除2的结果(3)转换成实型(3.0) (二) 赋值运算和赋值表达式 1. 赋值运算 赋值符号“=”就是赋值运算符,它的作用是将一个表达式的值赋给一个变量。 赋值运算符的一般形式为:变量=赋值表达式 2. 复合赋值运算 复合赋值运算是C语言特有的一种运算。 复合赋值运算的一般格式为:变量 复合运算符 表达式 复合算术运算符有五种,分别是:+=,-=,*=,/=,%= 例如: x=5 //将5赋给变量x x=6+7 //将6+7的值赋给变量x 5=x 是错误的 x+y=z也是错误的。 x+=3 等价于 x=x+3 x+=5+8 等价于 x=x+(5+8) x*=y+2 等价于 x=x*(y+2) x/=x+y 等价于x=x/(x+y) x/=8 等价于x=x/8 x%=7 等价于 x=x%7 x%=(4-2) 等价于x=x%(4-2) 【例1-16】阅读下列程序 #include "stdio.h" main() {int x,y,z; float a,b,c; //定义三个单精度型变时a,b,c x=1; //将1赋给变量x,即x的值为1 y=2; z=3; a=1.1; //将1.1赋给变量a,即a的值为1.1 b=2.1; c=3.5; x=x+y+z; //将x+y+z的值赋给变量x, x的值为(1+2+3),即x=6 printf("x=%d ",x); y*=y+1; //将y*(y+1)赋给y, y=2*(2+1),即y=6 printf("y=%d ",y); z=(int)a%(int)b; //z=1%2,即z=1 printf("z=%d ",z); a+=a+b+c; //a=a+(a+b+c), a=1.1+(1.1+2.1+3.5),即a=9.9 printf("a=%f ",a); } 程序执行情况如下: (三) C语言特有的运算和运算符 1. 自增(++)、自减(--)运算 作用: 自增运算使单个变量的值增1,自减运算使单个变量的值减1. 用法与运算规则 自增、自减运算符都有两种用法: 1) 前置运算——运算符放在变量之前:++变量、--变量 先使变量的值增(减)1,然后再以变化后的值参与其他支算,即先增减,后运算。 y=++x+2; //x先增1(=5),然后与2的和再赋给y(=7) printf("x=%d y=%d ",x,y); z=--x; //x先减1(=4),然后再赋给z(=4) printf("x=%d z=%d ",x,z); --x; //x=x-1,即x=3 printf("x=%d ",x); //输出x=3后换行 } #include "stdio.h" main() {int x=2,y,z; printf("x=%d ",x); y=++x; //x先增1(=3),然后再赋给y(=3) printf("x=%d y=%d ",x,y); ++x; //x=x+1,即x=4 printf("x=%d ",x); 后置运算——变量++、变量— #include "stdio.h" main() {int x=2,y,z; printf("x=%d ",x); y=x++; //先将x的值(2)赋给y(=2) ,然后x再自增(3) printf("x=%d y=%d ",x,y); x++; //x=x+1,即x=4 printf("x=%d ",x); y=(x++)+2; //先将x+2赋给y(=6),然后x再自增(5) printf("x=%d y=%d ",x,y); z=x--; //先将x的值(5)赋给z(=5),然后x再自减(4) printf("x=%d z=%d ",x,z); x--; //x=x-1,即x=3 printf("x=%d ",x); } 自增、自减运算符不能用于常量和表达式。 例如:5++、--8、++(a+b)都是错误的。 2. 逗号运算(,)及其表达式 C语言提供一种用逗号运算符“,”连接起来的式子,称为逗号表达式。逗号运算符又称顺序求值运算符。 (1) 一般形式:表达式1,表达式2,……,表达式n. (2) 求解过程:自左至右,依次计算各表达式的值,“表达式n”的值即为整个逗号表达式的值。 例如:逗号表达式“a=3*5,a*4”的值=60:先求解a=3*5,得,a=15;再求a*4=60,所以逗号表达式的值为60。 又例如:逗号表达式“(a=2+1,a*5),a+8”的值=11,先求解a=2+1,得a=3,再求a*5=15;最后求解a+8=11,所以逗号表达式的值=11 举一反三 【例1-19】输入圆半径,求圆的面积和周长。π的值取3.14. 分析:因为根据圆半径,求圆的面积和周长,所以要定义三个变量,半径r,面积s和周长c;考虑到输入的圆半径可能会有小数,所以这三个变量不妨都定义为单精度型float。 定义变量r,s,c 输入变量r s=3.14*r*r c=2*3.14*r 输出s,c #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 圆的周长c为%f ",s,c); } 流程图 符号常量 #define PI 3.14 意思是定义一个符号常量PI,其值为3.14。符号常量的命名规则与变量名一样,但习惯上,符号常量常用大写字母表示。 #include "stdio.h" #define PI 3.14 //定义一个符号常量PI,其值为3.14 main() {float r,s,c; printf("请输入圆的半径r:"); scanf("%f",&r); s=PI*r*r; c=2*PI*r; printf("圆的面积s为:%f 圆的周长c为%f ",s,c); } 【例1-20】输入三角形三边的长,求三角形的周长及面积。 分析:输入三角形三边的长,所以显然要定义三个变量a,b,c,同时还要定义三角形的周长c 及面积s,由于在求三角形的面积时要用的海伦公式s=其中是三角形的二分之一周长,所以还需要定义,需要提示的是s=在程序中的表达式为s=sqrt(l*(l-a)*(l-b)*(l-c));即根号用sqrt()函数表示。只要在程序的前面加上库函数math.h就行。 定义变量a,b,c,l,c,s 输入变量a,b,c c=(a+b+c)/3.0; x1=(-b+sqrt(disc))/(2*a); l=c/2 s=sqrt(l*(l-a)*(l-b)*(l-c)); 输出三角形的面积和周长 #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 三角形的面积S为%f ",cc,s); } 【例1-21】求方程ax2+bx+c=0的实数根。a,b,c由键盘输入,a≠0且b2-4ac>0。 分析:首先要考虑到定义的变量有a,b,c,x1,x2,判别式disc=b2-4ac,然后就可以根据公式(-b±)/(2a)计算,最后输出结果。 程序流程图如图 所示: 定义变量a,b,c,x1,x2,disc 输入变量a,b,c disc= b*b-4*a*c x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); 输出x1,x2 #include “stdio.h” #include “math.h” main() {float a,b,c,disc,x1,x2; printf(“请输入方程a,b,c的值:”); scanf(“%f%f%f”,&a,&b,&c); //输入a,b,c的值 disc=b*b-4*a*c; //将判别式的值赋给变量disc x1=(-b+sqrt(disc))/(2*a); //求方程的根x1 x2=(-b-sqrt(disc))/(2*a); printf(“方程的根为x1=%f,x2=%f ”,x1,x2); //输出方程x1,x2的值 } 【例1-22】从键盘输入一个小写字母,要求用大小写字母形式输出该字母及对应的ASCII码值。 分析:由于要从键盘输入一个小写字母,同时还要求将它转换为大写字母,所以需要定义二个字符变量,再根据大小写字母的转换公式:小写字母=大写字母+32,最后输入即可。 定义字符变量c1,c2 输入小写字母c1 c2=c1-32 输出c1,c2 #include “stdio.h” main() {char c1,c2; //定义二个字符变量c1,c2 printf(“请输入小写字母:”); scanf(“%c”,&c1); //输入小字字母 c2=c1-32; //求所对应的大写字母 printf(“原字母为%c,大写字母为%c ”,c1,c2);} //输出原字母及对应的大写字母 $$

资源预览图

项目一  学生成绩的平均分与总分的计算(课件)-《 C语言程序设计》同步教学(电子工业出版社)
1
项目一  学生成绩的平均分与总分的计算(课件)-《 C语言程序设计》同步教学(电子工业出版社)
2
项目一  学生成绩的平均分与总分的计算(课件)-《 C语言程序设计》同步教学(电子工业出版社)
3
项目一  学生成绩的平均分与总分的计算(课件)-《 C语言程序设计》同步教学(电子工业出版社)
4
项目一  学生成绩的平均分与总分的计算(课件)-《 C语言程序设计》同步教学(电子工业出版社)
5
项目一  学生成绩的平均分与总分的计算(课件)-《 C语言程序设计》同步教学(电子工业出版社)
6
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。