华中科技大学C语言实验与课程设计上机实验报告汇总(1~8全部)(8)

2020-04-03 13:02

华中科技大学 C语言实验与课程设计实验报告 CS1408赵晓雁

错误原因:未完整声明所有参数,导致部分参数不识别。 改正:int a,b,t;

(4)scanf(\

错误原因:scanf函数中类型声明中,两个%d符号中间不加符号。 改正:scanf(\(5)SWAP(a,b);

错误原因:与宏定义相对应的更改为三个参数。 改正:SWAP(a,b,t); 4.2.2 源程序修改替换

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

(1)对这个例子源程序进行调试修改,使之能够正确完成指定任务。 (2)用带参数的宏替换函数max,实现求最大数的功能。

程序代码:

void main(void) {

int a, b, c; float d, e;

printf(\scanf(\

printf(\printf(\scanf(\

printf(\return 0; }

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

int t;

if (x > y) t = x; else t = y; if (t < z) t = z; return t; }

float sum(float x, float y) {

return x + y; }

【分析】(1)修改如第一题,出现的问题有:scanf函数的参数变量类型间

的格式问题与函数声明问题。

(2)将函数max用带参数的宏定义表示,利用语句“?:”表示if选择语句。

【程序】(1) #include

31

华中科技大学 C语言实验与课程设计实验报告 CS1408赵晓雁

int max(int x,int y,int z); float sum(float x,float y); int main() {

int a,b,c; float d,e;

printf(\ scanf(\

printf(\ printf(\ scanf(\

printf(\ return 0; }

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

int t;

if(x>y)t=x; else t=y; if(t

float sum(float x,float y) {

return x+y; }

(2)

#include

#define max(x,y,z) (((x)>(y)?(x):(y))>(z))?((x)>(y)?(x):(y)):(z) float sum(float x,float y); int main() {

int a,b,c; float d,e;

printf(\ scanf(\

printf(\ printf(\ scanf(\

printf(\ return 0; }

float sum(float x,float y) {

return x+y; }

【测试】(1)程序运行结果如下,程序正确。

32

华中科技大学 C语言实验与课程设计实验报告 CS1408赵晓雁

(2)程序运行结果如下,程序正确。

4.2.3跟踪调试

下面程序的功能是利用R计算圆的面积s,以及面积s的整数部分。现要求:

(1)修改程序,使程序编译通过且能运行。修改过的源程序见下面部分。 (2)单步执行。进入函数integer_fraction时,watches窗口中为何值?在返回main时, watch窗口中i为何值?如图:

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

题目程序代码: #define R

int main(void) {

float r, s;

int s_integer = 0;

printf(\scanf(\#ifdef R

s = 3.14159 * r * r;

printf(\

33

华中科技大学 C语言实验与课程设计实验报告 CS1408赵晓雁

s_integer = integer_fraction(s);

printf(\assert((s-s_integer) < 1.0); #endif return 0; }

int integer_fraction(float x) {

int i = x; return i; }

【修改后的源程序】 #include #include #include #define R

int integer_fraction(float x); int main() {

float r,s;

int s_integer=0;

printf(\ scanf(\ #ifdef R

s=3.14159*r*r;

printf(\ s_integer=integer_fraction(s);

printf(\ assert((s-s_integer)<1.0); #endif // R return 0; }

int integer_fraction(float x) {

int i=x; return i; }

4.2.4 程序设计

编写并上机调试运行能实现以下功能的程序:

(1)已知三角形的面积是area=根号下[s(s–a)(s–b)(s–c)],其中s= (a+b+c)/2,a, b, c为三角形的三边。定义两个带参数的宏,一个用来求s,另一个用来求 area,试编写一程序,用带参数的宏来计算三角形的面积。

(2)使用条件编译方法编写一程序,其功能要求是,输入一行电报文字,可以任选两种输出:一为原文输出;二为变换字母的大小写,其他字符不变。用#define命令控制是否变换字母的大小写。

【分析】

(1)根据公式用宏定义表示s和area,并分别在函数中引用。

34

华中科技大学 C语言实验与课程设计实验报告 CS1408赵晓雁

(2)宏定义变量CHANGE,通过改变CHANGE的值,利用if-else语句,控制大小写变换或者原文输出。

【程序】

(1)

#include #include #include

#define s(a,b,c) 1.0/2*((a)+(b)+(c))

#define area(s,a,b,c) sqrt((s)*((s)-(a))*((s)-(b))*((s)-(c)))

int exam(int a,int b,int c); int main() {

double a,b,c;

printf(\ scanf(\

if(abs(a-b) printf(\ else printf(\ return 0; }

(2)

#include #include #define CHANGE 1

int main() {

char c;

printf(\ while((c=getchar())!=EOF) {

if(CHANGE) {

if(c>='A'&&c<='Z')putchar(c+32); else if(c>='a'&&c<='z')putchar(c-32); else putchar(c); }

else putchar(c); }

return 0; }

【测试】

(1)输入三边值为2,4,结果正确:

35


华中科技大学C语言实验与课程设计上机实验报告汇总(1~8全部)(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:财务案例思考题汇总

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: