1、 C 语言程序设计 实验报告班级 CS1108 日期 2012/5/26 学生姓名 王一微 学号 U201114404 第 3 次上机 实验 1 编译预处理 (一) 实验目的(1)掌握文件包含、宏定义、条件编译、assert 宏的使用;(2)练习带参数的宏定义、条件编译的使用;(3)练习 assert 宏的使用;(4)使用集成开发环境中的调试功能:单步执行、设置断点、观察变量值。(二) 实验内容及要求1源程序改错下面是用宏来计算平方差和交换两数的源程序。在这个源程序中,存在若干语法和逻辑错误,要求在计算机上对这个源程序进行调试修改,使之能够正确完成计算平方差和交换两数的任务。源程序:#incl
2、ude#define SUM a+b#define DIF a-b#define SWAP(a,b) a=b,b=avoid main(void)int b, t;printf(“Input two integers a, b:“);scanf(“%d,%d“, printf(“nSUM=%dn the difference between square of a and square of b is:%d“,SUM, SUM*DIF);SWAP(a,b);Printf(“nNow a=%d,b=%dn“,a,b);源程序在 code:blocks 上运行后出现修改后为:运行测试为:2源程序修
3、改替换下面是用函数实现求三个数中最大数、计算两数之和的源程序。在这个源程序中存在若干语法和逻辑错误,要求:(1) 对这个例子程序进行调试修改,使之能够正确完成指定任务。(2) 用带参数的宏替换函数 max,来实现求最大数的功能。源程序:void main(void)int a, b, c;float d, e;printf(“Enter three integers:“);scanf(“%d,%d,%d“,printf(“nthe maximum of them is %dn“,max(a,b,c);printf(“Enter two floating point numbers:“);sca
4、nf(“%f,%f“,printf(“nthe sum of them is %fn“,sum(d,e);int max(int x, int y, int z)int t;if (xy)t=x;elset=y;if (tvoid main(void)int a10 = 27, 13, 5, 32, 23, 3, 17, 43, 55, 39;void sort(int ,int);int i;sort(a0,10);for(i = 0; i #define M 10#define N 3void main(void)int aM, bM; /* 数组 a 存放圈中人的编号,数组 b 存放出圈
5、人的编号 */int i, j, k;for(i = 0; i 1; i-)/* i 表示圈中人个数,初始为 M 个,剩 1 个人时结束循环;j 表示当前报数人的位置 */for(k = 1; k i - 1) j = 0;/* 最后一个人报数后第一个人接着报,形成一个圈 */bM-i = j? aj-1 : ai-1 ; /* 将报数为 N 的人的编号存入数组 b */if(j)for(k = -j; k void strncat(char ,char ,int);void main(void)char a50=“The adopted symbol is “,b27=“abcdefghij
6、klmnopqrstuvwxyz“;strncat(a, b, 4);printf(“%sn“,a);void strncat(char s,char t, int n)int i = 0, j;while(si+) ;for(j = 0; j n )si+ = tj+;si = 0;(2)调试发现 s,t 和 i 值有误,修改后源程序为:运行输出结果为:程序设计:编写并上机调试运行能实现以下功能的程序。(1) 已知三角形的面积是 )()(csbasare,其中 2/)(cbas,a,b,c为三角形的三边。定义两个带参数的宏,一个用来求 s,另一个用来求 area,试编写一程序,用带参数的宏来计算三角形的面积。(1)源程序如下: