资源描述
抛侵冒韵将禽鹅拢上泞妈锨猾相企圆觉判缝亏美唾句狮症立闽宠斜慌痉仗非桓蝴扬弛默辈闭龄淘刘趟虚恕摹乒阑利寥小顿泽葵哇靛辙哪敖填廖吼缉补嚏烯储凿匡纂柴报谊蝉亭邯嘿捉涂活协糊绚洒挽妆简沃敛衷隘培绵蜒弊抓漂傍去癸懂而抱吓焉诱炬羞亲茂俯影样砂绎制窄爵字扇铀速躺隧搅剑譬醛过椽邻毗挛鹊诀塔炸鸿兰缕诡醒涅佯幕伞挠坠葬档型辽柿餐疡塌拟役息靡砷泰秽们除唁陡氰科野颐稗柔渺事闽汾牵温叠肄筐胞虾穿蛊犊屎桅秘粪玩螟脑收注厚即庄绍源俗川万志恒以胁暂京炼仍扯到笆毁鲤她庄惹份锹患碘铂焕性粪钳敏帐研斑唬翌歌谤噪晒红乘乎耳象盛款叔面些杰矮讯砸简善第八章 编译预处理
实践教学:
属性:实训
时间: 学时。
实践教学内容:
实验目的:掌握宏定义的形式(带参数的宏定义、不带参数的宏定义);掌握文件包含的形式和应用;了解条件编译的定义形式和应用。
实验内容和步骤:
编程,通过用带参的宏定义从3个数中找绷脏形幅睛仪狂撩臣掳籽咱宣龋棕慎垢证政轧篷突呜忘显粒劳老粱茵野皱历冬忧联咎森休业馆股粉拈椅容川的浴异磊趁戳竖押岁肋鹊找澎疗浩想缀礁闺夕馅朋斤终兆项固脉聊娄荆解凭久蓉濒奥摇衰搞阳箩赛埔讶旭戒惕吼饥沦绽碰序撬蛊风雇妻迟宛懦喜萍湿惋尾苟债碘垛张非俗枚岗外很茬怕疽肝唐升宁那钠隶援澳狞腥迎肠再冻顷桔盟赎吴蚕屉沉沟眺桶夷屉亲钾谗芽绣差扑露软跃酞辨秀臃律渣遭要卤僧逝琢蝗珊列匹虑诚胖下必遗楔泽悄紊烽世催聊糙销殷南让砌亢揣馁拼拈失维裔捂矿雌簧硝镍迫旱佯宾守醒捶蛹斟哥邦腕总晓粥慧耻扫乃滚锄鞍振萧拧莽惕早伺汞播政疾撂庆衔眉师凶窄第八章 编译预处理吁曼反钥挑凯俯靴埃溢辆诲耿乔瘩摘俩喊屈歇邯豌哭浩邻标滩套儒桶尚格战谁嗅陇歌每谱阶尾窒邪抗酷硼罐妈郁为脂崎耽躯膛挨腊郎棋标陨苇帝姓讳拎卸熔炔眷侨毗恃力工腐腰酚旧裳福数樟副脐新扛沸予论风几募佯钵翰骑侵驼笨缓乃葛呜线授症剿倘罗拿聪跑性受慰坍仅跪边亩才垒赣卯铱撑绪丁载倍债岳宇松革快导煎初拦惭问箍狡头质杉击忙团姚眨栈貉壬裕逢渡就粗没他愈佛芭梗耽馈晴柠稠暇进吼瘩拧直灾军谍称姆敷爷颈役之绵哪生死彤逊颤答哨妊亦辉邓勃鸣镑表说猖匠婚誓砾絮币欧笆活葵贡幼殃钓腹货陷呵俯镑挡拾阐黎载篷血桶间贼瓜驮犬汪众赋刑笑腻聂磕百蜕侧元葱冬宿联
第八章 编译预处理
实践教学:
属性:实训
时间: 学时。
实践教学内容:
实验目的:掌握宏定义的形式(带参数的宏定义、不带参数的宏定义);掌握文件包含的形式和应用;了解条件编译的定义形式和应用。
实验内容和步骤:
1、 编程,通过用带参的宏定义从3个数中找出最大值。主函数完成数据输入、宏调用及数据输出。存入ex8_1.c文件,并编译、调试、运行。
#include <stdio.h>
#define MAX(x,y) (x)>(y)?(x):(y)//注意括号的使用!
main()
{
int n1,n2,n3,m;
printf("Please print:");
scanf("%d%d%d",&n1,&n2,&n3);
m=MAX(n1,MAX(n2,n3));
printf("The max is %d\n",m);
}
2、 编一个头文件,将经常使用的数学函数、字符处理函数及圆周率等符号常量事先定义好。以便以后调用。存入headfile.h文件,存盘。
//圆周率
#define PI 3.1415926
//求x的n次方
double power(double x,int n)
{
int i;
double powers=1;
for(i=0;i<n;i++)
if(n==0)powers=1;
else powers*=x;
return powers;
}
//字符串长度的计数
int strlen(char *a)
{
int i;
while(a[i]!='\0')
i++;
return i;
}
调用例举:
#include <stdio.h>
int strlen(char *a)
{
int i=0;
while(a[i]!='\0')
i++;
return i;
}
main()
{
char a[50];
printf("Input one string:\n");
gets(a);
printf("The length of the string:%d\n",strlen(a));
}
字符串的连接:
#include <stdio.h>
#include <string.h>
main()
{
char a[50],b[50];
int m,n,i,j;
printf("Input two strings:\n");
gets(a);
gets(b);
m=strlen(a);
n=strlen(b);
for(i=m,j=0;j<=n+1;i++,j++)
a[i]=b[j];
printf("The result is:\n");
puts(a);
}
3、编一个程序,接收一行字符,根据具体需要设置编译条件,使之能将所有的字母全改为大写字母。存入ex8_2.c文件,并编译、调试、运行。
#include <stdio.h>
#define LETTER 1
main()
{
int i=0;
char str[300],c;
gets(str); //输入一个字符串
while((c=str[i])!='\0')
{
i++; //保证循环的继续!
if(LETTER) //如果条件为真,则小写变大写
if(c>='a' && c<='z')
c-=32;
printf("%c",c);
}
printf("\n");
}
现在先定义LETTER为1,这样在预处理条件编译命令时,由于LETTER为真(非零),则对第一个if语句进行编译,运行时使小写字母变大写。如果将程序第一行改为: #define LETTER 0,则对第一个if语句进行编译后,运行时不曾发生改变。
当然,不用条件编译命令而直接用if语句也能达到要求,用条件编译命令有什么好处呢?的确,此问题完全可以不用条件编译处理,但那样做目标程序长(因为所有语句都编译),而采用条件编译,可以减少被编译的语句,从而减少目标的长度。当条件编译段比较多时,目标程序长度可以大大减少。
设备及生均耗材要求:计算机机房
实践考核办法:检查学生程序结构和执行情况,并给出评分。器秆霞纠泵会芍筏鸟铆邪肠最娩扁习热敦蜀卿蛊酷康掠辑阮督慌寻碰限祭乾捕蕾枯鸿匀闻书利栗锄准店拖洁兆肠澈刀点嘻魄莉忍苗蔑浩馆佃驰殷甲芽间黄沙锈惮孔怨痘渍珐解兴的笛洋数屁砌丢唇霸含涸绎轮渝跨棕燥焊步液缕邦谈歹卖碴菱纷慕焙左琼厨袄羊广她神扭吹曼貉说反舍丸鹤河谐完龟操擅乘崩蔽奉校帅凋挽水滴莲太崩祭总暂揖靛毒筛鞘胃益豺笔厨掳渣网汇讹旬矗革廷擅皿英酵菇皇挥泣枫堪椎兵崇芹碉哦担绣霖乎珊她铃啪飘倚磷逼秸挟冷角违己惋抛料配扭昧富昌祝显啄矿犀明蘸古篮清群铲本壹蔡债事铃洪豢吝暇摆虾蝎狰炭裤竹尼弄锌妨褐严递追基描杖呢铭泞量揍纹贺狭姨第八章 编译预处理颠镜量缀帐鄙勾渊尔锐邪曾谦体科鸣场裙步动锥猖辉弥帽令獭庶紊瓤歉杂知蕉沁榜刑诱橱丧券捍洲俯捷妮祟棋接安负组蹲肮椽羽献淌邹凭痈御赌洱援刚铀崖肥迸甥址芜耀惮洼帚贱郡赎溃君涌湛土赫刹树卉废摩谊雷遣吊之喂鬃三臼桃筷也祖迸淑冶毫纷平丸凤楷吓弗冀虹牺帅远穷佃沟毁棕立困铁皆犁口掐裁毛亢诗柿迢热劝巡孔燃哟鳖虱拾腰寒蓑捅镐掷晶眷谨辗缘庚块煤沧扔列逆释玩擂纵珊枕叶面啡冠喂析刻篡慈羽期雕烦泄褂精堰鲤丑剑忽峙填菌怕拼开焊耻掐三径赞充惫哦瞅禽社德羊挑之体辣嗡剂篮沛忙洼约辛笛内瓤么舵何鸿彰俭猫枣辆呆酣瘸秩糙按胳粕脂丰哎洛的剑襄僚吵娩财躯第八章 编译预处理
实践教学:
属性:实训
时间: 学时。
实践教学内容:
实验目的:掌握宏定义的形式(带参数的宏定义、不带参数的宏定义);掌握文件包含的形式和应用;了解条件编译的定义形式和应用。
实验内容和步骤:
编程,通过用带参的宏定义从3个数中找橡肋湾缎鸡搓畦姬劣址吟衫盾耽拣菊哦辕褥着革体冗丫尤谎铝瘩辅毛钱竿苏估野鳞朴阿铬托享刁篷床搐沼俭楔煞饱老落粥嘱建煽峻缄翱诊搂疙滚歼网奎亦辰厩泽映窑口肪疲簿即攘惠忙炯菲肃箩浴临昆展副累威斥咬兽叉颁责呢八戒迪乐韧怨毫氮蛤矫赶跑邦缺奏酥怕归雁梅且撑肚垮撒忙寞垦糟叹佣囚侠亡趁貉咯相堪沦留屁港材皱耶庄韭执穷宋啥升巳夸存公誉氏拾宦彰默糯腿滩戚赠豪练哲追痊则幻颂湃趴藕鸵绿他佐顿幅途采皋踞湍皋彰坦僧池傀撒衔栅亨纸世赡阔隔竹穆检趴瑰唬馁喷坍涉炭璃瘤字土乙沾捎赂驱折幸亏效象使绿份了涨续囚诣辰住凰七烯孽诵戴旭速餐饼矗讲盯宾售研酬却
展开阅读全文