当前位置: 首页 > news >正文

C语言之:函数的声明和定义必备练习题

笔者来自于一个普通二本,非科班出身,对于未来的打算博多!无法完事皆满意,所以,尽自己可能去实现!所以,打算转码中!!!C语言XX必备练习题,凝聚了笔者精华所有!请看到的读者认真思考,在进行……努力就能实现,成就更加高度的自己!

1.

作业标题(672)

能把函数处理结果的二个数据返回给主调函数,在下面的方法中不正确的是:( )

作业内容

A.return 这二个数

B.形参用数组

C.形参用二个指针

D.用二个全局变量

答案解析(提交后可在已完成作业列表查看答案)

答案解析:

A:错误,一个函数只能返回一个结果

B:正确,将形参存在数组中,修改数组中内容,可以通过数组将修改结果带出去

C:正确,形参如果用指针,最终指向的是外部的实参,在函数中对指向指向内容进行修改,改变的就是外部的实参

D:正确,全局变量不受函数的结束而结束,在函数中改变全局变量,主调函数中可以看到改变之后的结果

因此,选择A

2.

作业标题(673)

关于函数调用说法不正确的是:( )

作业内容

A.函数可以传值调用,传值调用的时候形参是实参的一份临时拷贝

B.函数可以传址调用,传址调用的时候,可以通过形参操作实参

C.函数可以嵌套定义,但是不能嵌套调用

D.函数可以嵌套调用,但是不能嵌套定义

 

答案解析(提交后可在已完成作业列表查看答案)

答案解析:

A:正确,形参按照值的方式传递,将来形参就是实参的一份临时拷贝,修改形参不会影响外部的实参

B:正确,形参按照指针方式传递,将来形参就是实参地址的一份拷贝,形参指向的是实参,修改形参指针指向的内容,  就是在操作实参

C:错误,C语言中,函数不能嵌套定义

D:正确,函数可以嵌套调用,即:A()中调用B(),B()中调用A(),但是要控制好,否则就成为无限递归

因此,选择C

3.

作业标题(674)

在函数调用时,以下说法正确的是:( )

作业内容

A.函数调用后必须带回返回值

B.实际参数和形式参数可以同名

C.函数间的数据传递不可以使用全局变量

D.主调函数和被调函数总是在同一个文件里

答案解析(提交后可在已完成作业列表查看答案)

答案解析:

A:错误,函数可以没有返回值,如果没有返回值也就不需要待会任何结果

B:正确,形参和实参在不同的函数中,即不同的作用域,因此形参和实参可以同名

C:错误,可以使用全局变量传参

D:错误,不一定,函数的定义可以放在任意的文件中,使用时只需要包含头文件即可

因此,选择B

4.

作业标题(676)

关于递归的描述错误的是:( )

作业内容

A.存在限制条件,当满足这个限制条件的时候,递归便不再继续

B.每次递归调用之后越来越接近这个限制条件

C.递归可以无限递归下去

D.递归层次太深,会出现栈溢出现象

答案解析(提交后可在已完成作业列表查看答案)

答案解析:

递归的两个条件:

 1. 将问题转化为其子问题,子问题要与原问题具有相同的解法

 2. 递归的出口

A:正确,限制条件即递归的出口,如果限制条件满足,递归程序就可以退出了

B:正确,因为每次递归,都是将原问题进一步缩小,缩小到限制条件时,就可以往回返,直到第一次递归调用

  比如:递归求和

   int Sum(int N)
   {
     if(N == 1)
       return 1;
       
     return Sum(N-1)+N;
   }

  假设:求Sum(4)的递归调用过程

      Sum(4)<----
        |       |
        |       |
      Sum(3)<----
        |       |
        |       |
      Sum(2)<----
        |       |
        |       |
      Sum(1)-----

 

 C:错误,递归不能无限递归下去,否则会造成死循环和栈溢出

 D:正确,因为每次递归,相当于都是一次新的函数调用,而每次函数调用系统必须给该函数划分栈帧空间,内部的递   归函数没有退出,上层的递归就不能退出,栈帧就会累积许多块,如果累积超过栈的总大小,就会栈溢出。

5.

作业标题(671)

关于函数的声明和定义说法正确的是:( )

作业内容

A.函数的定义必须放在函数的使用之前

B.函数必须保证先声明后使用

C.函数定义在使用之后,也可以不声明

D.函数的声明就是说明函数是怎么实现的

答案解析(提交后可在已完成作业列表查看答案)

答案解析:

A:错误,函数的定义可以放在任意位置,函数的声明必须放在函数的使用之前

B:正确

C:错误,函数定义在使用之后,使用之前没有声明时,编译器编译时识别不了该函数

D:错误,函数的声明只是告诉编译器函数返回值类型、函数名字以及函数所需要的参数,函数定义才是说明函数是怎么  实现的

6.

作业标题(675)

根据下面递归函数:调用函数Fun(2),返回值是多少( )

int Fun(int n)      
{ 
  if(n==5)   
    return 2;     
  else     
    return 2*Fun(n+1);      
}

作业内容

A.2

B.4

C.8

D.16

 参考答案为:

Fun(2)--->返回16
 return 2*Fun(3)  2*8=16
      |__Fun(3):8
         return 2*Fun(4)  2*4=8
              |__Fun(4):4
                 return 2*Fun(5) 2*2=4
                      |__Fun(5):2  
                         return 2

 因此选择:D

7.

作业标题(686)

求阶乘

作业内容

递归和非递归分别实现求n的阶乘(不考虑溢出的问题)

/*
Fac(N) = 1*2*3*……*N
 
 
递归方式实现:
        1    N <= 1
Fac(N)
        Fac(N-1)*N    N >= 2
*/
 
 
long long Fac(int N)
{
    if(N <= 1)
        return 1;
    
    return Fac(N-1)*N;
}
 
 
/*
循环方式:从1乘到N即可
*/
long long Fac(int N)
{
    long long ret = 1;
    for(int i = 2; i <= N; ++i)
    {
        ret *= i;
    }
    
    return ret;
}

 8.

作业标题(687)

打印一个数的每一位

作业内容

递归方式实现打印一个整数的每一位

参考思路为:

/*
思路:
              N   N <= 9
Print(N)
              Print(N-1), 打印N
*/
 
 void print(unsigned int n)
 {
 	if(n>9)
 		print(n/10);
 	printf("%d ", n%10);
 }
 

 

 

相关文章:

  • Java互联网实时聊天系统(附源码)
  • Python 题库自动化面试题
  • 微分方程数值解法(PID仿真用一阶被控对象库PLC算法实现)
  • vue脚手架(2022年9月份nodejs16.17.0版本)
  • 【C语言】前言关键字
  • 错误监控——自建sentry
  • 【2022-09-14】JS逆向之某团影视(jsjiami-v5)
  • Jmeter工具的使用
  • PVE系列教程(十六)、安装ubuntu server22.04系统
  • 【牛客】WY49数对,JZ65不用加减乘除做加法
  • C语言《超详细解析内存函数》
  • SpringBoot使用Redisson 实现分布式锁
  • 微服务初级入门实战分布式项目构建
  • tessafe.sys是病毒吗?tessafe.sys不兼容驱动程序如何解决?
  • Android实现ViewPager适配器kotlin简单实现
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【剑指offer】让抽象问题具体化
  • Centos6.8 使用rpm安装mysql5.7
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • jquery cookie
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • TypeScript迭代器
  • use Google search engine
  • Vue.js-Day01
  • 飞驰在Mesos的涡轮引擎上
  • 排序(1):冒泡排序
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 物联网链路协议
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 因为阿里,他们成了“杭漂”
  • # 安徽锐锋科技IDMS系统简介
  • $L^p$ 调和函数恒为零
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (一)80c52学习之旅-起始篇
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)C#调用WebService 基础
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • @Data注解的作用
  • [ solr入门 ] - 利用solrJ进行检索
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [14]内置对象
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——
  • [20161101]rman备份与数据文件变化7.txt
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [AIR] NativeExtension在IOS下的开发实例 --- IOS项目的创建 (一)
  • [APIO2012] 派遣 dispatching
  • [codeforces]Checkpoints
  • [IDF]聪明的小羊
  • [IE编程] 如何获得IE版本号
  • [Interview]Java 面试宝典系列之 Java 多线程