资源描述:
《C语言实验编译预处理》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、C语言程序设计实验报告专业:计算机科学以技术班级:ACM班口期:2011年口月24日成绩实验组别4第次实验—指导老师:卢萍学生姓名:陈绍鹏学号:U201114349同组人姓名:王坤实验名称:编译预处理实验一.实验目的(1)掌握文件包含、宏定义、条件编译、assert宏的使用。(2)练习带参数的宏定义、条件编译的使用。(3)练习assert宏的使用。(4)使用集成开发环境屮的调试功能:单步执行,设置断点,观察变量值。二.实验内容1.源程序改错用宏来计算平方差和交换两数的源程序。要求:在计算机上对这个源程序进行调试修改,使Z能够正确完成计算平方差和交换两数的任务。2.源程序修改替换用函数实现求
2、三个数中最大数、计算两数之和的源程序。要求:(1)对源程序进行调试修改,使之能够正确完成指定任务。(2)用带参数的宏替换函数max,实现求最大数的功能。3.跟踪调试程序利用R计算圆的面积s,以及面积s的整数部分。现要求:(1)修改程序,使程序编译通过且能运行。(2)单步执行。进入函数decimal_fraction时,watches窗口中x为何值?在返回main时,watch窗口屮i为何值?(3)排除错误,使程序不会输出错误信息assertionfailed4.程序设计编写并上机调试运行实现以下功能的程序。(1)试编写一程序,用带参数的宏来计算三角形的面积。(2)使用条件编译方法编写一程序
3、,输入一行电报文字,可以任选两种输出:一为原文输出;二为变换字母大小写,其他字符不变。用#define命令控制是否变换字符的大小写。三.实验步骤及结果1.正确源程序:#include#defineSUM(a+b)#defineDIF(a-b)#defineSWAP(a,b)t=a刁二b,b=tvoidmain(void){inta,b,t;printf(Hlnputtwointegersa,b:n);scanf(”%d,%d”,&a,&b);printf('、nSUM=%dthediffereneebetweensquareofaandsquareofbis:%d”,
4、SUM,SUM*DIF);/*计算并输出平方差*/SWAP(azb);printf("Nowa=%d,b=%d",a,b);/*交换并输出两数*/}输出结果为:Inputtwointegersa.b:45,34SUM=79Thediffereneebetweensquareofaandsquareofbis:869Nowa=34,b=451.正确源程序:#include#definesum(x,y)(x+y)#definemaxfa^.c)(a>b)?((a>c)?a:c):((b>c)?b:c)voidmain(){intazb,c;floatd,e;print
5、f(HEnterthreeintegers:");scanf("%d,%d,%d,",&a,&b,&c);printf("themaximumofthemis%d",max(a/b,c));/*输出故大数*/printf(uEntertwofloatingpointnumers:11);scanf(吆f,%f,”,&d,&e);printf("thesumofthemis%f"/sum(d/e));/*计算并输出两浮点数之和*/}输岀结果为:Enterthreeintegers:45,55,63themaximumofthemis63Entertwofloatingpoin
6、tnumers:6・534342345thesumofthemis10.7688003•正确源程序:#include#include#defineRintmain(void){floatr;doubles;ints_integer=0;printf(Hinputanumber:H);scanf(”%f””&r);/^fdefRs=3.14159*r*r;printff'areaofroundis:%f",s);/*输出面积s*/s」nteger=(int)s;printf("theintegerfractionofareais%d"zs_int
7、eger);/*输出面积整数部分,s_integer*/assert((s-sJnteger)<1.0);#end讦return0;}输出结果为:inputanumber:4.5areaofroundis:63.617198theintegerfractionofareais631.(1)设计的源程序:#include#include#defines((a+b+c)/2)#definea