班级学号姓名。
一共5个题目,其中一个选做题。
重要提示:上传文件时,邮件主题和word文档文件名格式:姓名+学号+班级+实验几。
一.目的要求。
1. 掌握c语言中输入、输出函数的基本使用方法。
2. 掌握如何定义整型、单精度、双精度变量,如何输入或输出这些变量的值。
3. 掌握c算术运算符的基本概念、基本属性、运算规则。
4. 掌握关系运算的求值规则。
5. 记录运行结果,回答问题,完成上机实验报告。
二.实验内容。
实验题1】输入下列源程序,进行修改、编译、连接和运行。
提示: exp(x)为一数学函数,用来求解ex,即e的x次方。
问题与思考:
1)假如删除/*line 2 */**行,程序是否仍正确?原因是?
2)/*line 6*/的**行有错误,正确**为:__scanf(“%f”,&x
3)改正以上错误并运行程序,输入0.05并回车,显示结果是_f(0.050000) =1.
05再次运行该程序,输入2.5并回车,显示结果是___f(2.500000) =5.
254)把最后一行**行改为: printf(" f(%.2f) =2f ", x, y); 运行程序,并输入2.
546,显示结果是__f(2.55)_=5.482f 的作用是___控制小数位占两位。
若/* line 9*/**行改为: printf(" f(%6.1f) =6.
1f ", x, y); 运行程序,并输入2.546,显示结果是__f( 2.5)= 5.
56.1f 的作用是_数据一共占6列,小数位占一位。
若/* line 9*/**行改为: printf(" f(%-6.1f) =6.
1f ", x, y); 运行程序,并输入2.546,显示结果是_ f(2.5 )=5.
56.1f 的作用是___数据一共占6列,小数位一位,并且左对齐___
若/* line 9*/**行改为: printf(" f(%6.2f) =6.
2f ", x, y); 运行程序,并输入2.546,显示结果是__ f( 2.55)= 5.
486.2f 的作用是___数据一共占6列,小数位占两位。
(5) 如将/* line 7*/**行中的“if(x<=1)”改为“if (x>1)”,为保证程序正确性,该if 语句应如何修改?
if(x > 1)
y = x*x - 1;
elsey = exp(x);
实验题2】请将下列源程序填写完整。
#include <>
void main()
int a,b;
float x,y;
double r,s;
scanf("%d,%d", a , bline 6: 输入a,b的值 */
scanf("%f,%f", x , yline 7: 输入x,y的值 */
scanf("%lf,%lf", r , sline 8: 输入r,s的值 */
printf("a=%d, b=%d",a,bline 9 */
printf("x=%f, y=%f",x,yline 10 */
printf("r=%f, s=%f",r,sline 11 */
编译、连接并运行程序,分三行输入以下内容: (提示:double输入时对应%lf)
则输出结果显示为:
如将标有/* line 9 */line 10 */line 11 */的三个语句分别改写为:
printf("a=%5d, b=%5d", a,b);
printf("x=%.2f, y=%.2f",x,y);
printf("r=%9f, s=%9f", r,s);
重新编译、连接并运行,输入内容同上,则输出结果显示为:
在程序最后加入语句。
printf("r=% s=%"r,s); line 12 */
对应该语句的输出结果是。
比较printf("r=% s=%"r,s);与语句printf("r=%9f, s=%9f", r,s);,它们有什么不同?
printf("r=% s=%"r,s); 表示数据一共占9列,小数位占0列。
printf("r=%9f, s=%9f", r,s); 表示数据一共占9列,小数位不做控制,默认为6列。
思考题——位于%与字母d或f之间加入的数字起什么作用?其中,5d中的5: 数据占5列宽度。
.2f中的2:小数位占两位。
9f中的9: 数据一共占9列。
实验题3】设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf函数输入数据,printf函数输出计算结果,输出时要求有文字说明,取小数点后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_area = 4*pi*r*r;
sphere_volume = 4.0/3*pi*r*r*r;
cylinder_volume = pi*r*r*h;
printf("圆的周长为: %2f",circle);
printf("圆的面积为: %2f",square);
printf("球的表面积为: %2f",sphere_surface_area);
printf("球的体积为: %2f",sphere_volume);
printf("圆柱体积为: %2f",cylinder_volume);
实验题4】 编程序并粘贴源**于下面空白处,用getchar函数读入两个字符给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码0~127在字符范围内等价,超出范围不等价。
源**粘贴处。
#include<>
void main()
int c1,c2;
c1 = getchar();
c2 = getchar();
putchar(c1);
putchar(c2);
printf("");
printf("%c",c1);
printf("%c",c2);
选做题。实验题5】
1)给出一个大于或等于3的正整数,判断它是不是一个素数。
2)在(1)的基础上,统计出3到100000之间的素数占总数的比例。请编程序并粘贴源**于下面空白处。
提示:1) 参见课本21页的例2.5。
2)循环写法:
dowhile(条件 );
do… while的详细用法可以参见课本117页。
3)求余数的符号为%
4)该程序可能需要用到break语句直接跳出循环。break的作用是跳到循环体之外,接着执行循环体下面的语句。break语句写法:
break;
关于break语句的详细用法可以参见课本126页。
源**粘贴处。
#include<>
void main()
int i,m;
scanf("%d",&m);
m =3;i = 2;
dowhile(i < m);
if(i==m)
printf("m is a prime");如果是素数,执行完循环后,i的值为m
elseprintf("m is not a prime");如果不是素数,循环会提前跳出,i }
#include<>
void main()
int i,m;
double num = 0;
m = 3;
dowhile(i < m);
if(i==m)//如果是素数,则加1
num= num +1;
m = m + 1;//继续判断下一个数。
}while(m < 100001);
printf("%f",num/(100000-3+1));
细心的同学可能会发现,随着总数的增大,素数所占总数的比例会越来越小~~
上机实验作业答案
答案 一。1 site 把搜索范围限定在特定站点中。有时候,您如果知道某个站点中有自己需要找的东西,就可以把搜索范围限定在这个站点中,提高查询效率。msn 注意,site 后面跟的站点域名,不要带 http 另外,site 和站点名之间,不要带空格。双引号 使用双引号 进行词组检索,利用双引号查询完...
上机实验1答案
实验目的 1.熟悉vc 6.0调试环境,掌握运行一个c程序的基本步骤。2.掌握基本输入 输出函数的使用。3.能够编写简单的顺序结构程序,实现简单的数据处理。4.掌握c程序的查错方法。实验内容 一 调试示例。改正下列程序中的错误,求华氏温度1000f对应的摄氏温度。计算公式如下,其中 c表示摄氏温度,...
C上机实验答案
实验二。1 编写一个控制台应用程序exp02 01,根据用户输入的两个整数,分别输出这两个整数的和 差 积和商。提示 用把用户从键盘上的输入转换成整数 using system using using namespace exp02 01 class program a int b a b a b ...