C语言程序设计实验李开第七,C语言程序设计第三次25实验报告.doc

C语言程序设计第三次25实验报告

C语言程序设计 实验报告

专业 班级 日期 11月26日 成绩

实验组别 第 3(2.7) 次实验 指导教师 李开

学生姓名 学号 同组人姓名

实验名称 编译预处理实验

一、实验目的

(1)掌握文件包含、宏定义、条件编译、assert宏的使用;

(2)练习带参数的宏定义、条件编译的使用;

(3)练习assert宏的使用;

(4)使用集成开发环境中的调试功能:单步执行、设置断点、观察变量值。

二、实验任务

1.源程序改错

下面是用宏来计算平方差、交换两数的源程序,在这个源程序中存在若干语法和逻辑错误。要求在计算机上对这个例子程序进行调试修改,使之能够正确完成指定任务。

#include

#define SUM a+b

#define DIF a-b

#define SWAP(a,b) a=b,b=a

void main(void)

{

int b, t;

printf("Input two integers a, b:");

scanf("%d,%d", &a,&b);

printf("\nSUM=%d\n the difference between square of a and square of b is:%d",SUM, SUM*DIF);

SWAP(a,b);

Printf("\nNow a=%d,b=%d\n",a,b);

}

2.源程序修改替换

下面是用函数实现求三个数中最大数、计算两数之和的程序,在这个源程序中存在若干语法和逻辑错误。

要求:1)对这个例子程序进行调试修改,使之能够正确完成指定任务;

2)用带参数的宏替换函数max,来实现求最大数的功能。

void main(void)

{

int a, b, c;

float d, e;

printf("Enter three integers:");

scanf("%d,%d,%d",&a,&b,&c);

printf("\nthe maximum of them is %d\n",max(a,b,c));

printf("Enter two floating point numbers:");

scanf("%f,%f",&d,&e);

printf("\nthe sum of them is %f\n",sum(d,e));

}

int max(int x, int y, int z)

{

int t;

if (x>y)

t=x;

else

t=y;

if (t

t=z;

return t;

}

float sum(float x, float y)

{

return x+y;

}

3.跟踪调试

下面程序利用R计算圆的面积s,以及面积s的整数部分。

#define R

void main(void)

{

float r, s;

int s_integer=0;

printf ("input a number: ");

scanf("%f",&r);

#ifdef R

s=3.14159*r*r;

printf("area of round is: %f\n",s);

s_integer= integer_fraction(s);

printf("the integer fraction of area is %d\n", s_integer);

assert((s-s_integer)<1.0);

#endif

}

int integer_fraction(float x)

{

int i=x;

return i;

}

(1)修改程序,使程序编译通过且能运行;

(2)单步执行。进入函数decimal_fraction时watch窗口中x为何值?在返回main时, watch窗口中i为何值?

(3)排除错误,使程序能正确输出面积s值的整数部分,不会输出错误信息assertion failed。

4.程序设计

(1)三角形的面积是,其中,a,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值