C程序设计基础及实验 习题10 复习

本文详细解释了C语言中的预处理命令、宏定义的使用、变量和常量的区别,以及如何正确调用数学库函数。涉及的知识点包括预处理命令的使用规则、宏定义的语法和类型问题,以及函数如printf、scanf和递归函数的运用。
摘要由CSDN通过智能技术生成

判断题

1-1 预处理命令的前面必须加一个“#”号。T

1-2 #define MAX 100 int MAX=100;的效果相同,都是定义一个变量MAX并使其值为100。F,宏定义使MAX成为常量100

1-3 若有宏定义:#define S(a,b) t=a;a=b;b=t 由于变量t没定义,所以此宏定义是错误的。F

1-4 C语言中,编译预处理后,所有的符号常量名和宏名都用相应的字符串替换。T

1-5 调用printf函数前,应使用编译预处理命令#include <stdio.h>。T

1-6 include <stdoi.h> 是正确的编译预处理命令。F

1-7 #define ADD(X,Y) X+Y 的效果完全等同于定义一个函数ADD(X,Y)。F,注意,应该是#define ADD(X,Y) ((X)+(Y))

1-8 C语言中的预处理命令都以“#”开头。T

1-9 #include <stdio.h>是一条编译预处理命令 。T

1-10 #define PI 3.1415926是一条C语句。F,是预处理指令

1-11 宏定义不存在类型问题,宏名无类型,它的参数也无类型。T

1-12 宏名必须用大写字母表示。F

1-13 调用数学库函数时,编译预处理命令为 include math.h。F,应该是#include <math.h>

1-14 调用输入输出库函数时,编译预处理命令为#include <stdio.h>。T

1-15 在 C 程序开头行使用 #include<stdio.h> 语句就可以使用 scanf() 、printf() 和 fabs() 函数。F,fabs()是math.h内的函数

单选题

2-1 要调用数学处理函数时,在#include命令行中应包含()。

A."stdio.h" B."string.h" C."math.h" D."ctype.h"

选择C

2-2 对于以下递归函数f,调用f(4),其返回值为() 。

int f(int n)
{    if (n)  return f(n - 1) + n;
     else return n;
}

A.10 B.4 C.0 D.以上均不是

选择A,函数为求1+2+……+n

2-3 执行下列程序后变量i的值应为()。

       #define MA(x, y)  ( x*y )
       i = 5;
       i = MA(i, i + 1) – 7;

A.30 B.19 C.23 D.1

选择B,MA(i,i+1)=5*5+1=26

2-4 宏定义“#define DIV(a, b) a/b”,经DIV(x + 5, y - 5) 引用,替换展开后是()。

A.x + 5 / y - 5 B.(x + 5 / y – 5) C.(x + 5) / (y - 5) D.(x + 5) / (y - 5);

选择A

2-5 执行下面程序,正确的输出是()。

int x = 5, y = 7;
void swap ( )
{
      int z ;

      z = x ;  x = y ;  y = z ;
}
int main(void)
{
      int x = 3, y = 8;
      swap ( ) ;
      printf ("%d,%d \n", x , y ) ;

      return 0 ;
}

A.3,8 B.8,3 C.5,7 D.7,5

选择A,swap没有实际交换x和y的值,应该是swap(&x,&y)

程序填空题

5-1 正整数逆序输出

输入一个正整数n,将其逆序输出。要求定义和调用函数reverse(num),其功能是将num逆序输出,要求用递归实现。例如,输入12345,输出54321。

void reverse (int num)

{

        if (num<10){

                printf("%d", num);

        }else{

                printf("%d",num%10);

                reverse(num/10);

        }

}

5-2 递归求和

定义递归函数sum(n)计算1+2+...+n, 其中n的类型是int,函数类型是double。

double sum(int n)

{

        if (n<=0){

                return 0;

        }else{

                return n+sum(n-1);

        }

}

5-3 用递归函数实现求n!

本题要求定义一个递归函数fact(n),计算非负整数n的阶乘, 其中n的类型是int,函数类型是double。

double fact(int n)

{

        double result;

        if (n==0||n==1){

                return 1;

        }else{

                return n*fact(n-1);

        }

        return result;

}

5-4 使用递归函数求最大公约数

定义函数gcd( m, n),用递归法求m和n的最大公约数。
使用辗转相除法求最大公约数的递归算法描述如下:

1.png

int gcd(int m, int n)

{

        if(m%n==0){

                return n;

        }else{

                return gcd(n,m%n);

        }

}

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北欧海盐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值