南京邮电大学C语言实验报告

南京邮电大学C语言实验报告1v2

实验一 顺序结构编程练习

一、 实验目的和要求
(1)初识Microsoft Visual Studio 2010上机环境,学会建立工程、文件,学会编译、链接并运行程序,查找并修改简单的语法错。
(2)正确调用输入输出处理的函数scanf( )、printf( )、getchar( )、putchar( )进行数据的I/O,观察输出格式,掌握键盘输入方法。
(3)初步使用调试器跟踪程序,观察变量的值的变化情况。

二、实验环境(实验设备)
硬件: 微型计算机
软件: Windows 操作系统、Microsoft Visual Studio 2010

三、实验原理及内容
实验题目(1)【见实验教材实验一的题目1】:在D盘上建立以自己学号命名的文件夹(例如:B07020518)(以后实验的所有文件存于此文件夹下);正确进入VS2010集成开发环境,建立一个单文件项目,项目名为:exp1_1,然后向该项目中以新建方式添加一个源文件,名为:exp1_1.c,完成:从键盘输入两个整数a和b,计算并输出他们的和sum、差difference、积product、商quotient和平均值ave(注意ave和商的定义类型)。
具体要求:
① 编辑、编译、连接并运行程序,观察运行结果。
② 观察exp1_1.obj、exp1_1.exe、exp1_1.c所在的文件夹。
③ 对变量quotient分别定义为int和double型,在printf函数中正确使用格式串,当读入的两个整数为4和5时,观察运行结果并分析原因,思考怎么使变量quotient更准确。
④ 对变量ave分别定义为int和double型,在printf函数中正确使用格式串,当读入的两个整数为4和5时,观察不同的运行结果并分析原因。
⑤ 单步跟踪程序(用F10键),观察每一步程序运行时各个变量的变化情况。
实验解答:

① 源程序代码如下:

#include<stdio.h>
int main()
{
    
    
	int a,b,sum,difference,product,quotient,ave;
    printf("请输入两个整数a和b: ");
	scanf("%d,%d",&a,&b);
    sum=a+b;
	difference=a-b;
	product=a*b;
	quotient=a/b;
	ave=(a+b)/2;
	printf("sum=%d,difference=%d,product=%d,quotient=%d,ave=%d\n",sum,difference,product,quotient,ave);
	return 0;
}

#include<stdio.h>
int main()
{
    
    
	int a,b,sum,difference,product;
	double quotient,ave;
    printf("请输入两个整数a和b:");
	scanf("%d,%d",&a,&b);
    sum=a+b;
	difference=a-b;
	product=a*b;
	quotient=a*1.0/b;
	ave=(a+b)*1.0/2;
	printf("sum=%d,difference=%d,product=%d,quotient=%f,ave=%f\n",sum,difference,product,quotient,ave);
	return 0;
}


文件名 文件所在的完整路径(例如:d:\ttt\t1.c)
exp1_1.c d:\ttt\exp1_1.c
exp1_1.obj D:\ttt\Debug\exp1_1.obj
exp1_1.exe D:\ttt\Debug\exp1_1.exe


quotient的类型 求解quotient的语句 输出quotient的格式串 屏幕输出的quotient值
int quotient=a/b; %d 0
double quotient=a*1.0/b; %f 0.800000

运行结果的差异、原因以及保证结果正确的措施:
差异:当商类型是int时,结果没有小数;当商类型是double时,结果带有小数,且当a/1.0时值更精确。
原因:变量类型的差异,整数除和实数除的差异。
保证结果正确的措施:做除法时尽量使用实数除。

ave的类型 求解ave的语句 输ave的格式串 屏幕输出的ave值
int ave=(a+b)/2; %d 4
double ave=(a+b)*1.0/2; %f 4.500000

运行结果的差异及原因:
差异:当ave类型是int时,结果没有小数;当ave类型是double时,结果带有小数,且当(a+b)/1.0时值更精确。
原因:变量类型的差异,整数除和实数除的差异。

实验题目(2)【见实验教材实验一的题目3】:编程序exp1_3.c,实现两个整数a,b的交换,提示思考:我们在现实生活中,两杯水是怎么交换的。
实验解答:
源程序exp1_3.c的代码是:

#include <stdio.h>
int main( )
{
    
    
	int a,b,temp;
	printf("请输入两个整数:");
	scanf("%d,%d",&a,&b);
	temp=a;
	a=b;
	b=temp;
	printf("a=%d,b=%d\n",a,b);
    return 0;
}

实验题目(3)【见实验教材实验一的题目4】:编程序exp1_4.c,工厂给一圆柱体镀膜,每平方厘米造价10元,现从键盘上输入圆柱底面的半径radius(厘米)和圆柱的高height(厘米),求该圆柱体的表面积area(平方厘米)和所需费用,要求输出结果保留两位小数。
实验解答:
① 源程序exp1_4.c的代码是:

#include<stdio.h>
#define PI 3.14159
int main()
{
    
    
	double r,h,area,fy;
    printf("请输入圆柱底面的半径和圆柱的高: ");
	scanf("%lf,%lf",&r,&h);
    area=2*PI*r*r+2*PI*r*h;
	fy=10*area;
	printf("area=%.2f,fy=%.2f\n",area,fy);
	return 0;
}         

② 多次运行程序,根据下表第一列要求,输入不同的数据,请填写下表
输入数据的要求 你输入的数据 你程序的输出结果
半径和高均为正整数 1,2 area=18.85,fy=188.50
半径和高均为正实型数 1.0,2.0 area=18.85,fy=188.50
半径和高有一个为负数 1,-2 area=-6.28,fy=-62.83
半径和高均为负数 -1,-2 area=18.85,fy=188.50
其他测试用例 2,3 area=62.83,fy=628.32

实验题目(4)【见实验教材实验一的题目6】:编写程序exp1_6.c输入一个3位正整数,计算该数的逆序数,并输出。例如:输入789,输出987;
实验解答:源程序exp1_6.c的代码是:

#include<stdio.h>
int main()
{
    
    
	int x,a,b,c;
    printf("请输入一个三位整数:");
	scanf("%d",&x);
    a=x/100;
	b=x/10%10;
	c=x%10;
	printf("该数的逆序数=%d%d%d",c,b,a);
	return 0;
}    

四、实验小结(包括问题和解决方法、心得体会、意见与建议、实验出错信息及解决方案等)
(一)实验中遇到的主要问题及解决方法
实验时一些基础规范没注意(如忘记在scanf函数中给出所输入变量的地址、定义PI时在PI和3.14159之间加=),而后意识到之后改了过来。
(二)实验心得
学习C语言需要牢记基础,多实践多尝试,去解决问题并探寻更佳表达。
(三)意见与建议(没有可省略)
学校机房的电脑调试时总闪退

实 验 报 告
五、支撑毕业要求指标点
1.2-H掌握计算机软硬件相关工程基础知识,能将其用于分析计算机及应用领域的相关工程问题。
3.1-M掌握设计/开发复杂工程问题解决方案所需要的专业知识和开发工具。

猜你喜欢

转载自blog.csdn.net/qq_46392282/article/details/109322480