位置:首页 > 软件操作教程 > 编程开发 > C语言 > 问题详情

C语言 #ifndef格式

提问人:刘团圆发布时间:2020-12-01

#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

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部