位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > C語(yǔ)言 > 問(wèn)題詳情

C語(yǔ)言 #ifndef格式

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-01

#ifndef  標(biāo)識(shí)符 

    程序段1 

[#else

    程序段2] 

#endif

    作用:這種格式對(duì)代碼段的編譯與第二種格式用法是相反的,如果#ifndef指令后跟著的標(biāo)識(shí)符沒(méi)有被#define定義過(guò),那么編譯程序段1,否則編譯程序段2。

【例題】用條件編譯實(shí)現(xiàn)加密、解密

    對(duì)一個(gè)字符串實(shí)現(xiàn)簡(jiǎn)單的加密:所有的小寫(xiě)字母+3顯示,如果不是小寫(xiě)字母則不變,對(duì)于x、y、z 變成a、b、c,將加密的字符串還原輸出。

    用#ifndef實(shí)現(xiàn)是加密還是解密。

    算法分析:

    要想實(shí)現(xiàn)解密,可以在函數(shù)之外加宏定義語(yǔ)句:

    #define FLAG 0

如果想實(shí)現(xiàn)加密,可將該宏定義語(yǔ)句注釋,使之不起作用。 程序代碼如下:

#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);

}

程序執(zhí)行時(shí),輸入:

    abcdefg

輸出結(jié)果為:

    defghij

若將#defineFLAG 0的注釋去掉,則輸入:

    abcdefg

輸出結(jié)果為:

    xyzabcd

繼續(xù)查找其他問(wèn)題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部