C语言程序 (1)

上传人:工**** 文档编号:570653412 上传时间:2024-08-05 格式:PDF 页数:6 大小:178.39KB
返回 下载 相关 举报
C语言程序 (1)_第1页
第1页 / 共6页
C语言程序 (1)_第2页
第2页 / 共6页
C语言程序 (1)_第3页
第3页 / 共6页
C语言程序 (1)_第4页
第4页 / 共6页
C语言程序 (1)_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《C语言程序 (1)》由会员分享,可在线阅读,更多相关《C语言程序 (1)(6页珍藏版)》请在金锄头文库上搜索。

1、 1实验二 C 语言程序设计基础 2-1 编程(文件名为 S2-1.C) 。定义 3 个 int 变量 x,y,z 和一个实型变量 average,计算并输出 3 个整数的平均值 average,即 average=(x+y+z)/3,其中 x,y,z的值可以通过变量的初始化赋值 x=1,y=1,z=0,也可以通过赋值语句赋值。观察运行结果。将 x,y,z 和 average 改为实型变量,再观察运行结果。理解整除和不同类型数据进行混合运算的转化规律,对结果进行合理的解释。 指导 (1) 当把 x,y,z 定义为整型变量时,所做运算(x+y+z)/3 是整除运算,根据C 语言的语法规定: 整除

2、结果是舍去小数部分, 保留整数部分, 而不做四舍五入。因此,average=(x+y+z)/3 是将取整的结果赋给 average。 (2) 当定义 x,y,z 为整型, x=1,y=1,z=0 时, average 的值就为 0。 要想使 average的值为非 0,除非将 x+y+z 的值或 3 转换为实型。可用如下方法之一进行转换: average=(x+y+z)/3.0; (把 3 改为 3.0) average=(float)(x+y+z)/3; (把 x+y+z 的结果强制转换为实型) (3) 如果把 x,y,z 和 average 都定义为 float 型,结果就不再为 0,而是

3、等于0.67。 通过该程序的编写,目的是进一步认识数据的类型,以及不同类型数据的混合运算。 2-2 改写程序 S2-1.C(文件名为 S2-2.C) ,通过键盘用 scanf()函数输入 x,y,z 的值。要求输出结果的形式为 average=。 指导 在 S2-1.C 中,变量 x,y,z 的值是通过变量的初始化或赋值语句赋的值。用这种方法编的程序不灵活,如果要改变 x,y,z 的值,就要修改程序。如果用 scanf()函数输入 x,y,z 的值,就不需要对程序做任何修改,只需在运行程序的过程中,给 x,y,z 输入所需的值。 比较下面三个程序,模仿比较好的一种方法编写 S2-2.C。 源程

4、序 S2-2-1.C #include 2main() int x=1,y=1,sum; /* 定义变量 */ sum=x+y; /* 求和 */ printf (sum=%dn,sum); /* 输出 */ 该程序只能求 x=1 与 y=1 的和,如果要求其他数据的和,必须修改程序中的初始化,然后重新编译、连接并运行。 源程序 S2-2-2.C #include main() int x,y,sum; /* 定义变量 */ scanf(%d%d,&x,&y); /* 输入 */ sum=x+y; /* 求和 */ printf (sum=%dn,sum); /* 输出 */ 该程序可以求任意

5、两个数的和,而不需要修改程序。当程序运行时,输入要求和的数,程序就可输出结果。 源程序 S2-2-3.C #include main() int x,y,sum; /* 定义变量 */ printf(nEnter x y: ); /* 提示输入 */ scanf(%d%d,&x,&y); /* 输入 */ sum=x+y; /* 求和 */ printf (sum=%dn,sum); /* 输出 */ 该程序与 S2-2-2.C 的区别是:在输入之前增加了屏幕提示,在运行程序时,可按屏幕提示进行数据的输入。 运行上面每一个程序,真实感受一下它们的不同。 3通过该程序的编写,目的是从一开始就采用

6、较好的编程风格。 ? 提示: 通过 S2-2-1.C、S2-2-2.C、S2-2-3.C 程序的编写,应该学会用良好的编程风格编写程序。 (1) 编写程序时要考虑程序的通用性,需要变化的量尽量不要通过赋值的方式给定(例如,S2-2-1.C 中的 x 和 y) ,而是通过输入的方式使变量得到当前所需的值(例如,S2-2-2.C 中对 x 和 y 的输入) 。 (2) 从键盘输入数据时,最好先给出提示信息,提示要输入的数据(例如,S2-2-3.C 中在输入 x 和 y 前用 printf()函数输出的屏幕提示信息) 。 2-3 运行程序 S2-3.C,观察输出的结果,并对输出结果作出合理的解释。

7、源程序 S2-3.C main() float a1,a2; double b1,b2; a1=3141.59; a2=0.000001; b1=3141.59; b2=0.000001; printf(%f, %lfn, a1+a2, b1+b2); 指导 程序中的 a1 和 b1、a2 和 b2 的值分别相同,但程序中 a1+a2 和 b1+b2 的输出结果却不会相同。这是因为 float 型数据和 double 型数据的精度不同,实型数在计算机中是非精确表示的,用 float 型变量作两个位数很大的数的加法运算或除法运算时,将得不到预期的结果,而用 double 型变量进行运算则可以得到

8、较准确的结果。 该程序的目的是进一步认识不同类型的数据,其精度是不相同的,编程时应该根据要求定义变量的类型。 42-4 下面程序(S2-4.C)的输出结果是什么?对输出结果给予合理的解释。 源程序 S2-4.C main() char ch; int k; ch=a; k=10; printf(%d, %x, %o, %c, ch, ch, ch, ch, k); printf (k=%dn,k); 指导 在 C 语言中,字符数据既可以用字符形式输出,也可以用整数形式输出。字符 a 的 ASC十进制代码为 97,按十六进制形式输出为 61,按八进制形式输出则为 141。本题中第一个 print

9、f 函数调用中输出项 k 为多余的,因此不予输出;第二个 printf 函数调用语句中的格式说明中包含了两个连续的%字符,根据 C 语言的规定,%不再作为格式描述字符使用,而是处理成字符“%”的原样输出,因此该句中的输出项 k 任然没有对应的格式描述符,也将不予输出。 该程序的目的是为了掌握变量按不同格式的输出,进一步认识格式描述符,printf 函数中参数的正确使用。 2-5 写出程序(S2-5.C)的运行结果,并对输出结果给予合理的解释。 源程序 S2-5.C #include main() float x; double y; x=213.82631; y=213.82631; prin

10、tf (%-4.2f, %-6.2en, x,y); 指导 5使用 f 格式描述符输出浮点数时的一般形式是%m.nf 或%-m.nf, 其中 m 指定输出数据所占的总列数;n 指定小数点后的位数,“-”是使输出数据左对齐,当输出数据宽度大于 m 时,数据的整数部分将按照实际位数输出,在本例中由于输出数据宽度大于 m, 因此%后面的“-”对输出格式无影响。 使用 e 格式描述符输出浮点数时的一般形式是%m.ne 或%-m.ne,其中 m、n、“-”的含义与 f 格式相同。在不同的计算机中,对指数部分应占的宽度规定不同,而数值部分均按标准化指数形式输出(即小数点前必须有而且仅有一位非零数字) 。该

11、题中 y 的实际宽度为 9,而格式说明中所给定的域宽为 6,所以只能按标准化指数形式输出 y 的整数部分,截去小数部分并四舍五入。 该程序的目的是为了进一步认识格式描述符。 2-6 下面程序(S2-6.C)的功能是从键盘上输入 x=25,y=36.7,c=C,然后将输入的内容输出到屏幕上。调试程序 S2-6.C,修改有错误的语句行,并输出正确的结果。 源程序 S2-6.C #include main() int x; float y; char c; scanf(x=%d,y=%d,c=%c,x,y,c); printf(nx=%d,y=%d,c=%c,x,y,c); getch(); 指导

12、调试程序 S2-6.C 时要注意的问题有: (1) 函数 scanf()的输入表列要求是变量地址的表列,否则在编译时会给出警告错误: Possible use of xxx before definition (2) 函数 scanf()的格式描述符要与输入表列中变量的类型一致。如果类型不 6一致,将得不到正确的输入值。如果 float 型变量用%d 格式输入,得到的是 0;int 型变量用%f 格式输入,运行时会给出错误信息: scanf: floating point formats not linked Abnormal program termination (3) 如果函数 scan

13、f()的格式描述符中有按原样输入的字符,输入数据时一定要按格式输入这些字符。 (4) 函数 printf()的格式描述符要与输出表列中变量的类型一致。否则得不到正确的输入结果。如果 float 型变量用%d 格式输出,得到的是 0;int 型变量用%f 格式输出,运行时会给出错误信息: printf: floating point formats not linked Abnormal program termination 2-7 编程(S2-7.C) 。执行下列语句后,a,b,c,d,e 的值分别等于多少?为什么? int a,b,c,w=1,x=2,y=3,z=4,d=5,e=6; a=

14、b=c=1; +a|+b&+c; (d=wx)&(e=yz); 指导 在逻辑表达式的计算中要注意: (1) 对于+a|+b&+c 运算,若+a 为真,后面的运算就不再进行。 (2) 对于+a&+b|+c 运算,若+a 为真,继续计算+b,若+b 为真,就不再计算+c;若+b 为假,则继续计算+c。 (3) 逻辑运算或关系运算的结果是一个逻辑值,即 0 或 1。 2-8 假设有 unsigned int a=3,b=10; char c=9, d=020; 计算 a1 和c&d1 的结果,并编程(S2-8.C)验证。 指导 (1) 进行位运算时,先将要运算的数据转换为二进制。 (2) 对于 a1,移位运算优先于按位或运算。 (3) 对于c&d1,左移运算优先于按位与运算,求反运算符优先级最高。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号