《机实验三答案》由会员分享,可在线阅读,更多相关《机实验三答案(6页珍藏版)》请在金锄头文库上搜索。
1、上机实验三上机实验三 简单的简单的 C 语言程序设计语言程序设计班级班级 学号学号 姓名姓名一共 5 个题目,其中一个选做题 重要提示:重要提示:上传文件时,邮件主题和 word 文档文件名格式:姓名+学号+班级+实验几一目的要求 掌握 C 语言中输入、输出函数的基本使用方法。 掌握如何定义整型、单精度、双精度变量,如何输入或输出这些变量的值。 掌握 C 算术运算符的基本概念、基本属性、运算规则。 掌握关系运算的求值规则。 记录运行结果,回答问题,完成上机实验报告。二实验内容【实验题 1】输入下列源程序,进行修改、编译、连接和运行。提示提示: exp(x)为一数学函数,用来求解 ex,即 e
2、的 x 次方 问题与思考: (1)假如删除/*line 2 */代码行,程序是否仍正确?原因是?(2)/*line 6*/的代码行有错误,正确代码为:_scanf(“%f”,_。(3)改正以上错误并运行程序,输入 0.05 并回车,显示结果是_f(0.050000) = 1.05_。再次运 行该程序,输入 2.5 并回车,显示结果是_ f(2.500000) = 5.25_。(4)把最后一行代码行改为: printf(“ f(%.2f) = %.2f n“, x, y); 运行程序,并输入 2.546,显示结果是 _f(2.55)_=5.48_, %.2f 的作用是_控制小数位占两位_.若/*
3、 line 9*/代码行改为: printf(“ f(%6.1f) = %6.1f n“, x, y); 运行程序,并输入 2.546,显示结果 是_f( 2.5)= 5.5_, %6.1f 的作用是_数据一共占 6 列,小数位占一位 _. 若/* line 9*/代码行改为: printf(“ f(%-6.1f) = %-6.1f n“, x, y); 运行程序,并输入 2.546,显示结果 是_ f(2.5 )=5.5_, %-6.1f 的作用是_数据一共占 6 列,小数位一位,并且左对齐_.若/* line 9*/代码行改为: printf(“ f(%6.2f) = %6.2f n“,
4、x, y); 运行程序,并输入 2.546,显示结果 是_ f( 2.55)= 5.48_, %6.2f 的作用是_数据一共占 6 列,小数位占两位 _.(5) 如将/* line 7*/代码行中的“if(x1)” ,为保证程序正确性,该 if 语句应如何修改? if(x 1) y = x*x - 1; else y = exp(x);【实验题实验题 2】请将下列源程序填写完整。 #include void main() int a,b; float x,y; double r,s; scanf(“%d,%d“, /* line 6: 输入 a,b 的值 */ scanf(“%f,%f“, /
5、* line 7: 输入 x,y 的值 */ scanf(“%lf,%lf“, /* line 8: 输入 r,s 的值 */ printf(“a=%d, b=%dn“,a,b);/* line 9 */printf(“x=%f, y=%fn“,x,y); /* line 10 */printf(“r=%f, s=%fn“,r,s);/* line 11 */ 编译、连接并运行程序,分三行输入以下内容: (提示:提示:double 输入时对应%lf) 12 ,34 5.6789 ,-7.8237 12.4592 ,2.191768 则输出结果显示为:如将标有/* line 9 */、/* li
6、ne 10 */、/* line 11 */的三个语句分别改写为: printf(“a=%5d, b=%5dn“, a,b); printf(“x=%.2f, y=%.2fn“,x,y); printf(“r=%9f, s=%9fn“, r,s); 重新编译、连接并运行,输入内容同上,则输出结果显示为:在程序最后加入语句 printf(“r=%9.f, s=%9.fn“, r,s); /* line 12 */ 对应该语句的输出结果是比较 printf(“r=%9.f, s=%9.fn“, r,s);与语句 printf(“r=%9f, s=%9fn“, r,s);,它们有什么不同? prin
7、tf(“r=%9.f, s=%9.fn“, r,s); 表示数据一共占 9 列,小数位占 0 列 printf(“r=%9f, s=%9fn“, r,s); 表示数据一共占 9 列,小数位不做控制,默认为 6 列 思考题思考题位于%与字母 d 或 f 之间加入的数字起什么作用?其中, %5d 中的 5: 数据占 5 列宽度 %.2f 中的 2:小数位占两位 %9f 中的 9: 数据一共占 9 列【实验题实验题 3】设圆半径 r=1.5,圆柱高 h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用 scanf 函数输入数据,printf 函数输出计算结果,输出时要求有文字说明,取小数点后
8、 2 位小数。请编程序 并粘贴源代码于下面空白处。 提示:提示: (1) 输出时要求有文字说明的意思是: 假设圆周长为 c,则圆周长输出代码为:printf(“圆的周长为:%.2f”,c); (2) 公式记不住,可以找度娘源代码粘贴处 #define Pi 3.14 #include void main() double r = 1.5,h=3.0; double circle,square,sphere_surface_area,sphere_volume,cylinder_volume;circle = 2*Pi*r; square = Pi*r*r; sphere_surface_are
9、a = 4*Pi*r*r; sphere_volume = 4.0/3*Pi*r*r*r; cylinder_volume = Pi*r*r*h;printf(“圆的周长为: %.2fn“,circle); printf(“圆的面积为: %.2fn“,square); printf(“球的表面积为: %.2fn“,sphere_surface_area); printf(“球的体积为: %.2fn“,sphere_volume); printf(“圆柱体积为: %.2fn“,cylinder_volume);【实验题实验题 4】 编程序并粘贴源代码于下面空白处,用 getchar 函数读入两个
10、字符给 c1 和 c2,然后分别用 putchar 函数和 printf 函数输出这两个字符。思考以下问题: (1)变量 c1 和 c2 应定义为字符型还是整型?或二者皆可? 两者皆可。(2)要求输出 c1 和 c2 值得 ASCII 码,应如何处理?用 putchar 函数还是 printf 函数? 用 printf 函数的%d 格式输出。(3)整型变量与字符变量是否在任何情况下都可以互相替代?如 char c1,c2;与 int c1,c2;是否无条 件的等价? 不是在任何情况下都可以互相取代。 VC+6.0 下 ASCII 码 0127 在字符范围内等价,超出范围不等价源代码粘贴处 #i
11、nclude void main() int c1,c2; c1 = getchar(); c2 = getchar(); putchar(c1); putchar(c2); printf(“n“); printf(“%c“,c1); printf(“%c“,c2); 选做题选做题【实验题实验题 5】 (1)给出一个大于或等于 3 的正整数,判断它是不是一个素数。 (2)在(1)的基础上,统计出 3 到 100000 之间的素数占总数的比例。请编程序并粘贴源代码于下面空 白处。 提示:提示: 1) 参见课本 21 页的例 2.5。2)循环写法: do 语句 1; 语句 2; ; while(条
12、件 );do while 的详细用法可以参见课本 117 页。3)求余数的符号为%4)该程序可能需要用到 break 语句直接跳出循环。break 的作用是跳到循环体之外,接着执行循环体下面 的语句。break 语句写法: break; 关于 break 语句的详细用法可以参见课本 126 页。源代码粘贴处 (1) #include void main() int i,m; scanf(“%d“,m =3;i = 2; do if(m%i=0) break;/如果能除尽,则必然不是素数,直接跳出循环 i+;while(i void main() int i,m; double num = 0;m = 3; do /*/ /*判断 m 是否素数*/ /*/ i = 2; do if(m%i=0) break; /如果能除尽,则必然不是素数,直接跳出循环 i+; while(i m);if(i=m)/如果是素数,则加 1 num= num +1;m = m + 1;/继续判断下一个数while(m 100001);printf(“%f“,num/(100000-3+1); 细心的同学可能会发现,随着总数的增大,素数所占总数的比例会越来越小