实验报告10

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《程序设计基础》实验报告

姓名郭晟班级17级计算机科学与技术

1班

学号1706011105

实验名称实验10、预编译处理和位处理

实验时间成绩90

实验目的:

1.掌握宏定义的定义格式和使用方法,区别无参数宏和带参数宏;

2.掌握条件编译的具体形式以及使用方法;

3.掌握位运算的概念和方法,学会使用位运算符;

4.学会通过位运算实现对某些位的操作。

实验环境:

1.所用操作系统的版本windows 10

2.所用软件版本visualc 6.0++

实验内容:

1.输入一行字母字符,设置条件编译命令,使之能将字符全部已大写字母输出,或全部以小写字母输出。

2.设计一个函数,使给出一个数的原码,能得到该数的补码。

3.使用##进行程序的文本链接。

4.输入半径,求圆周长,圆面积,圆球体积,使用不带参数的宏定义.(圆周长l=2*pi*r,圆面积s=pi*r*r,圆球体积v=4/3*pi*r*r*r)。

实验过程及结果记录:

1.源代码为:

#define PI 1

void main()

{

char str[20]="zxcvbn",c;

int i=0;

while((c=str[i])!='\0')

{

i++;

#if PI

if(c>='a'&&c<='z')

c=c-32;

#else

if(c>='A'&&c<='Z')

c=c+32;

#endif

printf("%c",c);

}

}

错误结果为:

错误原因:

没有任何库函数,找不到函数。

改正:

在第一行后加 #include

2.源代码:

#include

unsigned int num(unsigned value)

{

unsigned int z;

z=value&0x80000000;

if(z==0x80000000)

z==(~ value|0x80000000)+1;

else

z=value;

return(z);

}

void main()

{

unsigned int a;

printf("请输入十六进制数:");

scanf("%x",&a);

printf("%The result is %x\n",num(a)); }

出现的错误为:

改正为:

第七行改为:z=(~ value|0x80000000)+1;

3.代码:

#include

#define ABC(x,y) x#y

void main()

{

int a1,a2,a3;

ABC(a,1)=15;

ABC(a,2)=120;

a3=4;

printf("%d %d %d",a1,a2,a3);

}

错误为:

错误原因:

没有找到ABC以及无法识别。

改正:

将第二行改为#define ABC(x,y) x##y

将第7行改为ABC(a,2)=120;

4.源代码为:

#include

#define PI 3.1415926

int main()

{

double l,s,r,v;

printf("请输入半径r:");

scanf("%lf",&r);

l=2.0*PI*r;

s=PI*r*r;

v=4/3*PI*r*r*r;

printf("l=%10.4lf\ns=%10.4lf\nv=%10.4lf\n",l,s,v);

}

运行结果为:

错误为:

对于有’/’字符的运算,两侧若全是整数,则结果为int型,会导致结果偏小,应把分子或分母改为小数,以保证结果的精确性

改正为:

第十行改为:v=4.0/3*PI*r*r*r;

实验总结:

1.宏名习惯用大写字母表示,以便与变量名相区别,虽然并非规定,但建议大写。

2.宏定义只是简单的置换,不做正确性检查,若出现错误编译时也不会报错,因此会增加程序的不稳定性,定义时务必要仔细检查。

3.善于利用宏定义,可以实现程序的简化。

评阅意见:本次实验报告书写格式不够规范;目的明确,报告内容有错误分析和错误改进,有错误截图,记录不够详细;实验总结较恰当。

相关文档
最新文档