条件编译(宏定义)

#if…#else和#endif命令

#include<stdio.h>
#define pi 3.14159
int main()
{
 float r=0;
 float s,v=0;
 printf("请输入半径r:");
 scanf("%f",&r);
 #if 0  //编译开关(1时执行)//输入半径r的值
  s=4*pi*r*r;     //条件编译
  printf("半径为%f的圆球表面积为:%f\n",r,s);
 #endif
 v=4*pi*r*r*r/3.0;
 printf("半径为%f的圆球体积为:%f\n",r,v); 
}
//若忘记#endif命令行则预编译无法结束#if命令

#if…#else…#endif命令

#include<stdio.h>
#define sl 30
#define lc 1
int main()
{
 char str[sl]="basic c language study",c;
 int i=0;
 while((c=str[i]!='\0'))     //遍历字符串
 {
  i++;
#if lc     //定义编辑开关
  if('A'<=c&&c<='Z')
  {
   c=c+32;
  } 
#else
  if('a'<=c&&c<='z')
  {
   c=c-32;
  }
#endif
  printf("%c",c);
 } 
 printf("\n");
}

#ifdef…#endif和#indef…#endif命令

#include<stdio.h>
#define ency 1
#define max 100
int main()
{
 int i=0;
 char telegram[max];
 printf("请输入电报报文:");
 gets(telegram);
#ifdef ency;       //判断是否已定义过宏ency 
 for(int i=0;telegram[i]!='\0';i++)
 {
  if((telegram[i]>='a'&&telegram[i]<='z')||(telegram[i]>='A'&&telegram[i]<='Z'))
  {
   telegram[i]+=1;
  }
  else if(('z'==telegram[i])||('Z'==telegram[i]))
  {
   telegram[i]=telegram[i]-25; //最后一个字母转换 
  }
 }
 printf("电报密文为:");
 puts(telegram);      //输出密码电文
 printf("\n");
#else
 printf("电报报文为:")puts(telegram);      //输出原文电报
#endif 
}
原创文章 326 获赞 309 访问量 3万+

猜你喜欢

转载自blog.csdn.net/huangziguang/article/details/106075829
今日推荐