#ifndef 标识符
程序段1
[#else
程序段2]
#endif
作用:这种格式对代码段的编译与第二种格式用法是相反的,如果#ifndef指令后跟着的标识符没有被#define定义过,那么编译程序段1,否则编译程序段2。
【例题】用条件编译实现加密、解密
对一个字符串实现简单的加密:所有的小写字母+3显示,如果不是小写字母则不变,对于x、y、z 变成a、b、c,将加密的字符串还原输出。
用#ifndef实现是加密还是解密。
算法分析:
要想实现解密,可以在函数之外加宏定义语句:
#define FLAG 0
如果想实现加密,可将该宏定义语句注释,使之不起作用。 程序代码如下:
#include <stdio.h>
#define N 100
//#define FLAG 0
void main()
{
char s [100];
int i;
printf("input a string:\n");
gets (s);
#ifndef FLAG
for(i=0;s[i]!=0;i++)
{
if(s[i]=='x')
s[i]='a';
else if(s[i]=='y')
s[i]='b';
else if(s[i]=='z')
s[i]='c';
else
s[i]=s[i]+3;
}
#else
for(i=0;s[i]!=0;i++)
{
if(s[i]=='a')
s[i]='x';
else if(s[i]=='b')
s[i]'y';
else if(s[i]=='c')
s[i]'z';
else
s[i]=s[i]-3;
}
#endif
puts(s);
}
程序执行时,输入:
abcdefg
输出结果为:
defghij
若将#defineFLAG 0的注释去掉,则输入:
abcdefg
输出结果为:
xyzabcd
已有 22658 名学员学习以下课程通过考试
最需教育客户端 软件问题一手掌握
去 App Store 免费下载 iOS 客户端
点击加载更多评论>>