C语言基础习题50例(十)46-50

简介: 文章目录习题46习题47习题48习题49习题50

习题46

宏#define命令练习。

实现思路:

宏通过#define命令定义,分为无参宏和带参宏,可以分别进行测试。这只是一种简单的字符串代换。

代码如下:

#include <stdio.h>
#define TRUE 1
#define FALSE 0
#define SQR(x) (x)*(x)
int main(){
  int num, next = TRUE;
  while(next){
    printf("Please input a number:\n");
    scanf("%d", &num);
    printf("Square = %d\n", SQR(num));
    if(num > 10){
      next = FALSE;
    }
  }
  return 0;
}

打印:

Please input a number:
1
Square = 1
Please input a number:
5
Square = 25
Please input a number:
9
Square = 81
Please input a number:
13
Square = 169

习题47

宏#define命令练习,替换一个代码块。

实现思路:

实现在代码中使用宏就像调用函数一样(当然,实际上并不是调用函数)。

代码如下:

#include<stdio.h>
#define EXCHANGE(a,b) { int t;t=a;a=b;b=t;}
int main()
{
    int x = 12;
    int y = 20;
    printf("Before Exchange:x=%d; y=%d\n",x,y);
    EXCHANGE(x,y);
    printf("After Exchange:x=%d; y=%d\n",x,y);
    return 0;
}

打印:

Before Exchange:x=12; y=20
After Exchange:x=20; y=12

习题48

宏#define命令练习,替换运算符号。

实现思路:

在进行比较运算的时候用定义的宏替换掉原来的符号。

代码如下:

#include <stdio.h>
#define GT >
#define LT <
#define EQ ==
int main()
{
    int i, j;
    printf("Please input two numbers:\n");
    scanf("%d %d", &i, &j);
    if(i GT j)
        printf("%d is greater than %d \n", i, j);
    else if(i EQ j)
        printf("%d is equal to %d \n", i, j);
    else if(i LT j)
        printf("%d is smaller than %d \n", i, j);
    else
        printf("Error\n");
    return 0;
}

打印:

Please input two numbers:
13 45
13 is smaller than 45
• 1
• 2
• 3
• 4

习题49

#if、#ifdef和#ifndef的综合应用。

实现思路:

预处理程序提供了条件编译的功能,可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。

代码如下:

#include<stdio.h>
#define MAX
#define MAXIMUM(x,y) (x>y)?x:y
#define MINIMUM(x,y) (x>y)?y:x
int main(){
    int a=12, b=20;
#ifdef MAX
    printf("%d is bigger\n", MAXIMUM(a,b));
#else
    printf("%d is smaller\n", MINIMUM(a,b));
#endif
#ifndef MIN
    printf("%d is smaller\n", MINIMUM(a,b));
#else
    printf("%d is bigger\n", MAXIMUM(a,b));
#endif
#undef MAX
#ifdef MAX
    printf("%d is bigger\n", MAXIMUM(a,b));
#else
    printf("%d is smaller\n", MINIMUM(a,b));
#endif
#define MIN 1
#ifndef MIN
    printf("%d is smaller\n", MINIMUM(a,b));
#else
    printf("%d is bigger\n", MAXIMUM(a,b));
#endif
#if(MIN)
    printf("%d is smaller\n", MINIMUM(a,b));
#else
    printf("%d is bigger\n", MAXIMUM(a,b));
#endif  
    return 0;
}

打印:

20 is bigger
12 is smaller
12 is smaller
20 is bigger
20 is bigger
• 1
• 2
• 3
• 4
• 5
• 6

习题50

#include的应用练习。

实现思路:

文件包含使用尖括号表示在包含文件目录中去查找(包含目录是由用户在配置环境时设置的),而不在源文件目录去查找;

使用双引号则表示首先在当前的源文件目录中查找,若未找到才到包含目录中去查找。

创建cp.h如下:

#define GT >
#define LT <
#define EQ ==

代码如下:

#include <stdio.h>
#include "cp.h"
int main()
{
    int i, j;
    printf("Please input two numbers:\n");
    scanf("%d %d", &i, &j);
    if(i GT j)
        printf("%d is greater than %d \n", i, j);
    else if(i EQ j)
        printf("%d is equal to %d \n", i, j);
    else if(i LT j)
        printf("%d is smaller than %d \n", i, j);
    else
        printf("Error\n");
    return 0;
}

打印:

Please input two numbers:
12 20
12 is smaller than 20
相关文章
TU^
|
6月前
|
存储 C语言
C语言习题~day35
C语言习题~day35
TU^
31 1
|
4月前
|
机器学习/深度学习 C语言
【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)
要保持最小的步数,每一次汉诺塔问题(无论是最初还是递归过程中的),如果此时初始柱盘子数为偶数,我们第一步是把最上面的盘子移动到中转柱,如果为奇数,我们第一步则是将其移动到目标柱。
96 0
【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)
TU^
|
6月前
|
编译器 C语言
C语言习题~day31
C语言习题~day31
TU^
24 2
TU^
|
6月前
|
算法 程序员 C语言
C语言习题~day36
C语言习题~day36
TU^
43 1
TU^
|
6月前
|
存储 C语言
C语言习题~day34
C语言习题~day34
TU^
34 1
TU^
|
6月前
|
算法 C语言
C语言习题~day33
C语言习题~day33
TU^
30 1
TU^
|
6月前
|
C语言
C语言习题~day32
C语言习题~day32
TU^
19 1
TU^
|
6月前
|
C语言
C语言习题~day30
C语言习题~day30
TU^
24 1
TU^
|
6月前
|
自然语言处理 C语言 C++
C语言习题~day29
C语言习题~day29
TU^
25 1
TU^
|
6月前
|
存储 C语言
C语言习题~day28
C语言习题~day28
TU^
21 1