位置:首頁 > 軟件操作教程 > 編程開發(fā) > C語言 > 問題詳情

C語言 #ifndef格式

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

#ifndef  標(biāo)識符 

    程序段1 

[#else

    程序段2] 

#endif

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

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

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

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

    算法分析:

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

    #define FLAG 0

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

#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í)行時,輸入:

    abcdefg

輸出結(jié)果為:

    defghij

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

    abcdefg

輸出結(jié)果為:

    xyzabcd

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

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