《C语言程序设计》案例讲义 - 完整版 联系客服

发布时间 : 星期一 文章《C语言程序设计》案例讲义 - 完整版更新完毕开始阅读09bd7a05bed5b9f3f90f1ca9

案例二 求任意两个数之和(差、积、商)

教学目的:

1. 掌握整型和实型变量的定义;

2. 掌握整型和实型变量的数据范围; 3. 掌握用scanf函数输入整型和实型数据; 4. 掌握用printf函数输出整型和实型数据。

C语言将数分为整型和实型两种类型,不同的类型,在程序编写上有所区别,因此案例二要求的两个整数之和,我们先给出求两个整型数据和的程序,如下:

/*求两个整数的和*/ #include #include main() {

int num1,num2,sum; /*定义三个整型变量*/ clrscr(); /*清除屏幕*/

sum=0; /*和的初值置为0*/

printf(“Please input two integers:”); /*显示提示字符*/ scanf(“%d”,&num1); /*输入第一个整数*/ scanf(“%d”,&num2); /*输入第二个整数*/

sum=num1+num2; /*求两个整数的和,并存入变量sum中*/ printf(“num1 and num2 is: %d\\n”,sum); /*输出和值*/ }

一、案例分析

1. 上述程序的功能是通过键盘输入两个整数,然后求两个整数的和。这段程序也只有一个主函数。

2. “int num1,num2,sum;”行根据注释可知是定义了三个整型的变量。

? 变量 就是如同数学中用到的x、y等,可以改变它们的值,在C语言中给变量取名字时要

求只能用数字、字母和下划线组成,且第一个符号不能是数字。如“_sum,num,score”等

都是合法的变量名,而“1a,2_b”等是不合法的变量名。

? 常量 如123,-7,34.6,-0.76等都是常量,前两个称为整型常量,后两个称为实型常量。 ? 整型变量的定义 C语言中整型变量又分为基本整型(int)、短整型(short int 或short)、长

整型(long int 或long)及无符号整型(unsigned int、unsigned short int/ unsigned short、unsigned

long int/ unsigned long)。如: int num1,num2,sum; 表示定义了三个基本的整型变量; short a;或者short int a;表示定义了短整型变量a;

long int c;或者long c;表示定义了长整型变量c; unsinged int d;表示定义了基本的无符号整型变量d;

各种整型变量在不同的计算机机型中存放的数的范围不同,也即表示数所用的字节数不同,

见表2-1。

表2-1 整型变量所占用字节数和数的范围

数据类型 int

所占字节数(二进制位数) 2(16) 17

数的范围 -32768~32767 即-215~(215-1) short int /short long int /long unsigned int unsigned long int/ unsigned long 2(16) 4(32) 2(16) 4(32) -32768~32767 即-2~(2-1) -2147483648~2147483647即-231~(231-1) 0~65535即(0~216-1) 0~65535即(0~216-1) 0~4294967295即0~(2-1) 321515unsigned short int/ unsigned short 2(16) 3. “ sum=0;”行是给存放和值的变量赋初值0。

4. “printf(“Please input two integers:”);”行是在屏幕上输出“Please input two integers:”字符串,以提示用户输入两个整数。

5. “scanf(“%d”,&num1);”行的作用是等待用户从键盘输入一个整数,并存入变量num1中。 ? scanf函数 scanf函数是标准库函数,其作用是等待用户从键盘给变量输入值。scanf函数的定义包含在stdio.h头文件中。 ? scanf函数调用格式

scanf(格式串,地址列表)

“%d”就是格式串,其表示的意思是等待从键盘输入的必须是一个整型数据。scanf函数的格式串是由“%”开始,其后跟不同的类型格式符。具体格式符见表2-2。

表2-2 scanf函数的格式符 格式符 d,i u o X,x c s f e 输入有符号十进制整数 输入无符号十进制整数 输入无符号八进制整数 输入无符号十六进制整数(大小写作用相同) 输入单个字符 输入字符串,将字符串送到一个起始地址起的存储单元中,输入时以非空格字符开始,以第一个非空格字符结束。字符串存储时以‘\\0’作为结束标志 输入实数,可以是小数形式及指数形式 与f作用相同,可以互换 “&num1”表示一个地址,这个地址就是变量num1在内存中分配的存储单元的首地址,“&”在变量名前表示取该变量的地址。如果是地址列表,则各地址之间用“,”隔开。

“scanf(“%d”,&num2);”行同“scanf(“%d”,&num1);”行的作用,等待用户从键盘给变量num2输入值。

上述两条语句也可合并为一条语句scanf(“%d%d”,&num1,&num2); ,这时在输入两个数据时,可以用空格、回车或制表符进行分隔。 6.“sum=num1+num2;”行是求num1和num2两个变量值的和,并把和存入变量sum中。 7. “printf(“num1 and num2 is: %d”,sum);”行的作用是输出变量sum的值。这里我们见到了printf函数的第二种调用形式:printf(“控制字符串”,输出项列表)

? 格式串 printf函数的控制字符串包括格式串和普通字符串,其格式串也是以“%”开始,后

跟相应的格式符。printf函数的格式符见表2-3。

表2-3 printf函数的格式符 格式符 d,i u o X,x

说 明 说 明 以带符号的十进制形式输出整数(正数不输出符号) 以无符号十进制形式输出整数 以八进制无符号形式输出整数(不输出前导符0) 以十六进制无符号形式输出整数(不输出前导符0 x),用x则在输出十六进制数的a-f18

时以小写形式输出;用X时,则以大写字母输出 c s f E,e G,g 以字符形式输出,只输出一个字符 输出字符串 以小数形式输出单、双精度型数,隐含输出6位小数 以指数“e”或“E”形式输出实数(如1.2e+02或1.2E+02) 选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0,用G时,若以指数形式输出时,则指数以大写表示 is: %d”,sum);语句中“num1 and num2 is:”是普通字符串,因此是原样显示,并且“num1 and num2 is:”是在%d之前,因此先输出“num1 and num2 is:”,然后输出sum变量的值,%d表示输出整型数据项。 8.案例运行结果

运行时如果输入:34回车 62回车 输出结果:num1 and num2 is:96

? 普通字符串 在printf函数中,普通字符串根据其顺序,原样显示。如printf(“num1 and num2 二、应用举例

上述案例是求两个整型数据的和,如果要求的是两个实数的和,应如何编写程序呢? 【例2-1】请编程求两个实数的和。

? 分析 C语言将数分为整型数和实型数,前面已经讲述了整型变量的定义方法,本例要求两

实数的和,同样也需要事先定义实型变量,然后再求和。其编程方法同求整数和一样,只是现在的对象是实数。

? 实型变量的定义 C语言中实型变量分为两种类型,分别是单精度(float)和双精度(double)。

如float x; 表示定义了单精度类型变量x;double y;表示定义了双精度类型变量y。两种实型

数据占用的存储字节数和表示的数的范围是不同的。其中float型占4个字节(32个二进制位),表示数的范围是:-3.4e-38~3.4e+38,但只能提供7位有效数字;double型占8个字节(64个二进制位),表示数的范围是:-1.7e-308~1.7e+308,可提供16位有效数字。 ? 修改案例程序(1)变量类型由int改为float; (2)scanf和printf函数的格式符由%d改为%f。 ? 程序

/*求两个实数的和*/ #include #include main() {

float f_num1,f_num2,f_sum; /*定义三个实型变量*/ clrscr(); /*清除屏幕*/

f_sum=0; /*和的初值置为0*/

printf(“Please input two reals:”); /*显示提示字符*/ scanf(“%f”,&f_num1); /*输入第一个实数*/ scanf(“%f”,&f_num2); /*输入第二个实数*/

f_sum=f_num1+f_num2; /*求两个实数的和,并存入变量f_sum中*/ printf(“f_num1 and f_num2 is: %f\\n”,f_sum); /*输出和值*/ }

【例2-2】请编程求两个实数的差。

本例只需要将例2-1程序中语句“f_sum=f_num1+f_num2;” 中的“+”改为“-”即可。 【例2-3】请编程求两个实数的商及积。 本例同例2-2,修改一下运算符即可。

19

【例2-4】请编程求两个整数的商。

根据前面的例题,我们自然可以很轻松地将案例程序中的“+”改为“/”即可。程序如下: /*求两个整数的商*/ #include #include main() {

int num1,num2,sum; /*定义三个整型变量*/ clrscr(); /*清除屏幕*/

sum=0; /*和的初值置为0*/

printf(“Please input two integers:”); /*显示提示字符*/ scanf(“%d”,&num1); /*输入第一个整数*/ scanf(“%d”,&num2); /*输入第二个整数*/

sum=num1/num2; /*求两个整数的商,并存入变量sum中*/ printf(“num1 divide num2 is: %d\\n”,sum); /*输出商值*/ }

运行上述程序,如果输入:16回车 4回车

则输出结果为:num1 divide num2 is:4 如果输入:16回车 5回车

则输出结果:num1 divide num2 is:3

结果分析:C语言规定两个整数相除的结果还是整数,所以16除5的结果是3。

三、小结

1. 求两个数的和、差、积、商程序的思路是,根据实际需要先定义所需类型的变量,然后计算

和、差、积、商,最后输出计算结果。通常程序的编写也遵循这样的三步曲:先定义变量,

然后进行相应的处理,最后将处理结果输出。

2. C语言规定,所有的变量一定要先定义,然后才能使用。

3. C语言的变量有类型之分,而且分得比较细,要根据需要选择不同的类型。

4. printf和scanf这两个库函数,定义了多种格式,需要针对不同的对象选择不同的格式符。

四、实验三 求两个数和、差、积、商

4.1实验目的

1. 掌握整型、实型变量的定义方法;

2. 掌握printf和scanf函数的%d和%f格式控制符; 3. 熟悉实型、整型变量所表示数的范围。 4.2实验内容及步骤

1.运行案例程序,并记录相应过程。 程序:

编译结果: 修改记录: 输入数据: 运行结果:

2.调试【例2-1】的程序,并记录相关数据。 程序:

编译结果: 修改记录:

20