C语言之函数必备练习题

2023-11-07

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

 话不多说,直接上题!!笔者的一贯要求,速度!!!

1.

作业标题(670)

关于实参和形参描述错误的是:( )

作业内容

A.形参是实参的一份临时拷贝

B.形参是在函数调用的时候才实例化,才开辟内存空间

C.改变形参就是改变实参

D.函数调用如果采用传值调用,改变形参不影响实参

答案解析

答案解析:

A:正确,传参时不论是按照值还是指针方式传递,形参拿到的都是实参的一份拷贝

B:正确,函数没有调用时,新参没有空间

C:错误,如果是按照值的方式传递,形参和实参各自有各自的空间,改变形参不能改变外部的实参

D:正确,因为形参和实参是两个不同的变量

2.

作业标题(669)

函数调用exec((vl,v2),(v3,v4),v5,v6);中,实参的个数是:( )

作业内容

A.3

B.4

C.5

D.6

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

答案解析:

 exec((vl,v2),(v3,v4),v5,v6) 总共有四个参数

 (v1, v2)属于第一个实参,逗号表达式,真实的参数时v2

 (v3,v4)属于第二个实参,逗号表达式,真实的参数是v4

 v5属于第三个实参

 v6属于第四个实参

 因此选择:B

3.

作业标题(668)

以下关于函数设计不正确的说法是:( )

作业内容

A.函数设计应该追求高内聚低耦合

B.要尽可能多的使用全局变量

C.函数参数不易过多

D.设计函数时,尽量做到谁申请的资源就由谁来释放

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

答案解析:

A:正确,高内聚低耦合即:函数体内部实现修改了,尽量不要对外部产生影响,否则:代码不方便维护

B:错误,全局变量每个方法都可以访问,很难保证数据的正确性和安全性

C:正确,参数越少越好,否则用户在使用时体验不是很好,还得必须将所有参数完全搞明白才可以使用

D:正确,谁申请的谁维护谁释放,否则如果交给外部使用者释放,外部使用者可能不知道或者忘记,就会造成资源泄漏

因此,选择B

4.

作业标题(666)

关于C语言函数描述正确的是:( )

作业内容

A.函数必须有参数和返回值

B.函数的实参只能是变量

C.库函数的使用必须要包含对应的头文件

D.有了库函数就不需要自定函数了

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

A:错误,可以没有参数和返回值类型,根据需要给出

B:错误,函数的实参可能是变量,也可能是常量,也可能是宏,也可能是指针等等

C:正确,在使用库函数时,必须要包含该库函数所在的头文件,否则编译器将不能识别

D:错误,库函数是语言设计者为了让用户能够更好的使用,而给出的,但并不能解决用户的所有问题,因此其他问题还

  需要用户自己写方法解决

因此:选择C

5.

作业标题(665)

C语言规定,在一个源程序中,main函数的位置( )

作业内容

A.必须在最开始

B.必须在库函数的后面

C.可以任意

D.必须在最后

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

答案解析:

main函数的位置可以再任意位置,但是如果在主函数之前调用了那些函数,必须在main函数前对其所调用函数进行生命或包含其被调用函数的头文件。

因此:选择C

6.

作业标题(667)

以下叙述中不正确的是:( )

作业内容

A.在不同的函数中可以使用相同名字的变量

B.函数中的形式参数是在栈中保存

C.在一个函数内定义的变量只在本函数范围内有效

D.在一个函数内复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)

 

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

答案解析:

A:正确 不同的函数属于不同的作用域,因此不同的函数中定义相同名字的变量不会冲突

B:正确 在C语言中,函数的形参一般都是通过参数压栈的方式传递的

C:正确 在函数内定义的变量,称为局部变量,局部变量只能在其定义的函数中使用

D:错误 复合语句中定义的变量只能在复合语句中使用

因此:选择D

7.

作业标题(677)

乘法口诀表

作业内容

实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定

如:输入9,输出9*9口诀表,输出12,输出12*12的乘法口诀表。

参考代码片段为:

/*
思路:
1. 设计函数原型,不需要返回值,参数N表示乘法口诀表总共有多少行
2. 设定两个循环,外层循环控制总共有多少行
             内层循环控制每行有多少个表达式以及表达式中的内容
*/
void PrintMulTable(int N)
{
	for (int i = 1; i <= N; ++i)
	{
		for (int j = 1; j <= i; ++j)
		{
			printf("%d*%d=%2d  ", j, i, j*i);
		}
		printf("\n");
	}
}

 笔者所写代码为:

//实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定

//如:输入9,输出9 * 9口诀表,输出12,输出12 * 12的乘法口诀表。
#include <stdio.h>
int main()
{
	int i = 0;
	int j = 0;
	int n = 0;
	scanf_s("%d", &n);
	for (i = 1; i <= n; i++)
	{
		for (j = 1; j <= i; j++)
			printf("%d*%d=%-2d  ", i, j, i * j);
		printf("\n");
	}
	return 0;
}

 代码的运行结果为:

8.

作业标题(678)

交换两个整数

作业内容

实现一个函数来交换两个整数的内容。

/*
思路:
题目比较简单,此处只需要清楚传值和传指针的区别即可。
传值:形参是实参的一份拷贝,函数运行起来后,形参是形参,实参是实参,形参和实参没有任何关联性,改变形      参时,不会对实参造成任何影响。
传地址:形参是实参地址的一份拷贝,形参指向的实体是实参,对形参解引用后,拿到的内容就是实参,因此对形        参解引用之后的内容进行修改,改变的就是实参
 
 
具体的交换实现比较简单,参考如下代码
*/
void Swap(int *pa, int *pb)
{
	int tmp = *pa;
	*pa = *pb;
	*pb = tmp;
}

 9.

作业标题(679)

函数判断闰年

作业内容

实现函数判断year是不是润年。

/*
思路:
  0. 函数原型设计
    返回值:必须要有返回值,返回结果为0说明不是闰年,为非0说明时闰年
    参数:年份
    
  1. 十年一闰百年不闰:即如果year能够被4整除,但是不能被100整除,则year是闰年
  2. 每四百年再一闰:如果year能够被400整除,则year是闰年
 
 
具体实现:请参考以下代码
*/
int is_leap_year(int year)
{
	if(((0 == year%4)&&(0!=year%100))||(0==year%400))
	{
		return 1;
	}
	else
	{
		return 0;
	}
}
 
 
// 对以上代码进行简化

10.

作业标题(680)

函数判断素数

作业内容

实现一个函数,判断一个数是不是素数。

利用上面实现的函数打印100到200之间的素数。

/*
思路:
 0. 函数原型设计
 返回值:必须要有返回值,0表示不是素数,1表示是素数
 1. 检测该数据是否为素数,方法参考前文。
 
 
*/
int is_prime(int n)
{
	int i = 0;
	for(i=2; i<=sqrt(n); i++)
	{
		if(0 == n%i)
		{
			return 0;
		}
	}
	return 1;
}

 笔者所写代码为:

//用函数来判断是否为素数
#include <stdio.h>
int sushu(int n)
{
	int j = 0; for (j = 2; j < n; j++)
	{
		if (n % j == 0)
			return 0;
	}
	return 1;
}
int main()
{
	int i = 0;
	for (i = 100; i <= 200; i++)
	{
		if (sushu(i) == 1)
		{
			printf("%d ", i);
		}
	}
	return 0;
}

 代码的运行结果为:

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言之函数必备练习题 的相关文章

  • C++:头文件中全局函数的多重定义错误

    该函数是全局的 在头文件中定义 暂时地我想把它留在那里 头文件还构成一个具有内联函数的特定类 其中一个函数调用this全局函数 源文件不包含任何有问题的全局函数 有关错误原因的任何提示吗 如果有人感兴趣的话我可以发布代码 mainwindo
  • 使用内部构造函数实例化类

    我有一个类 其构造函数被定义为内部 这意味着我无法实例化它 虽然这可能有道理 但出于调试和研究目的 我仍然愿意做一次 是否可以通过反射来做到这一点 我知道我可以访问私有 内部成员 但是我可以调用内部构造函数吗 或者 由于构造函数没有做任何重
  • 在两个 .cpp 文件之间定义全局变量 [重复]

    这个问题在这里已经有答案了 如何在 A cpp 和 B cpp 之间共享 全球化 bool 变量 其中它们都不包含其他 h 文件 他们有其他联合头文件 但彼此没有 我可以在这些共享标头中定义全局变量吗 Thanks 我可以在这些共享标头中定
  • C++ 有像 Pascal 一样的“with”关键字吗?

    withPascal 中的关键字可用于快速访问记录的字段 有人知道 C 是否有类似的东西吗 前任 我有一个包含许多字段的指针 但我不想这样输入 if pointer gt field1 pointer gt field2 pointer g
  • C++ - 模板专业化和部分专业化

    我一直在互联网和 stackoverflow 上寻找具体的答案 但我似乎找不到 我必须创建一个通用类 然后实现特定的功能 我的具体说明是 您需要使用模板表达式参数以及模板类专业化和部分专业化 我有一个模板类 template
  • C# ConfigurationManager 从 app.config 检索错误的连接字符串

    我有一个简单的 WinForms 应用程序 它最终将成为一个游戏 现在 我正在研究它的数据访问层 但遇到了障碍 我创建了一个单独的项目 名为DataAccess在其中 我创建了一个本地 mdfSQL Server 数据库文件 我还创建了一个
  • C++ 模板参数类型推断

    我有一个这样的C 模板 template
  • 未定义异常变量时通过引用捕获

    捕获异常时 标准指导是按值抛出 按引用捕获 据我了解 这有两个原因 如果由于内存不足异常而引发异常 我们将不会调用可能终止程序的复制构造函数 如果异常是继承层次结构的一部分 我们可能会对异常进行对象切片 如果我们有一个场景 我们没有在 ca
  • 首先EntityFramework数据库 - 类型映射 - 将binary(8)从SQL映射到C#中的int

    在 SQL 内部 我有一个主键为二进制 8 的表 当我使用该表添加到我的模型中时Update Model from Database我可以看到该列有 type Binary 在 C 中 我将该列设为byte 我可以将该列映射到 int 吗
  • ASP MVC 5 - 403 customError 不起作用

    我正在尝试为我的应用程序创建自定义错误页面 它在大部分情况下都有效 但不适用于403 errors 我的网络配置
  • 基于 C++ 范围的 for 循环

    尝试使用基于范围的 for 循环执行某些操作 可以使用常规的 for 循环来完成 如下所示 vector
  • 使用对象列表构建树

    我有一个带有属性 id 和parent id 的对象列表 我想建造一棵树来连接那些孩子和父母 1 个父对象可以有多个子对象 并且有一个对象将成为所有对象的祖先 实现该功能最快的算法是什么 我使用 C 作为编程语言 但其他语言也可以 像这样的
  • IBM Watson 对话服务错误:无法从“方法组”转换为“conversation.onMessage”

    我正在尝试运行 IBM Watson会话服务团结和下面是代码片段 https github com watson developer cloud unity sdk conversation private Conversation m C
  • 使用 cudamalloc()。为什么是双指针?

    我目前正在浏览有关的教程示例http code google com p stanford cs193g sp2010 http code google com p stanford cs193g sp2010 学习CUDA 演示的代码 g
  • 为什么我的 ITexthandler 不工作?我正在尝试将 XML 解析为 ITextSharp 文档

    我正在使用 Visual Developer 2010 MVC 3 c 我正在尝试将 XML 解析为 iTextSharp 文档 如下所示 ITextHandler textHandler new ITextHandler doc text
  • 语义问题 Qt Creator:命名空间“std”中没有名为“cout”的成员

    我开始使用 Qt Creator 编写代码 对于 C 文件 我遇到很多语义问题 99 是 命名空间 yyy 中没有名为 xxx 的成员cpp文件构建 编译和输出没有问题 如果我点击例如cout 我已链接到 iostream 我是否需要在 Q
  • 如何使用eclipse构建C++应用程序

    我已经从以下位置下载了 Eclipse Juno for C here http www eclipse org downloads download php file technology epp downloads release ju
  • printf 参数不足

    我的问题是关于缺少参数的 printf 之后的行为 printf s blah blah d int integer was given as argument and not int written 我已经知道 如果格式参数不足 则行为是
  • 如何在Linux上构建GLFW3项目?

    我已经使用 cmake 和 make 编译了 glfw3 和包含的示例 没有出现任何问题 开始编写我的第一个项目 作为 opengl 和 glfw 的新手 并且对 C 和 CMake 没有经验 我正在努力理解示例构建文件 甚至要链接哪些库和
  • Crypto++ 和压缩 EC 密钥

    如何在 Crypto 中生成压缩的 ECDSA 密钥 AutoSeededRandomPool prng ECDSA

随机推荐

  • 数据挖掘 决策树算法 ID3 通俗演绎

    决策树是对数据进行分类 以此达到 预测的目的 该决策树方法先根据训练集数据形成决策树 如果该树不能对所有对象给出正确的分类 那么选择一些例外加入到训练集数据中 重复该过程一直到形成正确的决策集 决策树代表着决策集的树形结构 决策树由决策结点
  • Openwrt下设置程序开机自动启动

    转自http www cnyubin com p 364 今天在使用Openwrt时 需要将scp到上面的程序设置为开机自动启动 按照Linux下设置自动启动的方法并不有效 后来在官方wiki下发现了介绍文章 具体可见Openwrt下htt
  • Epoll图解

    图解 Epoll怎么实现的 51CTO COM epoll详解 Ineffable 的博客 CSDN博客 epoll详解
  • Nginx健康检查

    0 背景 服务治理的一个重要任务是感知服务节点变更 完成服务自动注册及异常节点的自动摘除 这就需要服务治理平台能够 及时 准确的感知service节点的健康状况 1 方案概述 Nginx 提供了三种HTTP服务健康检查方案供用户选择 1 T
  • 三面阿里被挂,竟获内推名额,历经 5 面拿下口碑 offer...

    每一个互联网人心中都有一个大厂梦 百度 阿里巴巴 腾讯是很多互联网人梦寐以求的地方 而我也不例外 但是 BAT 等一线互联网大厂并不是想进就能够进的 它对人才的技术能力和学历都是有一定要求的 所以除了学历以外 我们的技术和能力都要过硬才行
  • win10微信打电话对方听不到你的声音,你能听到对方声音

    1 隐私权限 开始 设置 隐私 麦克风 更改 开启权限 2 禁用占用问题 右键电脑右下角小喇叭 声音 声音控制面板 录制 分别右键下面的几个选项 启用麦克风 立体声混音等 然后分别双击下面的麦克风 立体声等选项 高级 独占前面的v取消 确定
  • 拯救小tim【最短路】

    题目链接 这里有一个坑点 譬如说 我们从S出发的时间 不是刚好卡着第一个的 起始点 没准出发的第一步 没有卡起始点 而是在后面的到达其他点的时候卡了起始点这样的情况 所以我们应该从0 max BegTim的来枚举起点时间 然后跑Dijkst
  • javamail发送接收的简单demo

    目录结构 首先引入文件
  • 23考研重大软院数一英一391分经验帖

    今年这情况之后 所有前人的经验帖作废 前言 本校本专业生一战上岸 属于考研界难度最低的一档 今年有个初试439的怪物 属于是蚌了 第二名也有419 第三名就断档了 我初试第五 政治78 英一75 数一115 专业课123 总分391分 可以
  • [个人笔记] vCenter设置时区和NTP同步

    VMware虚拟化 运维篇 第三章 vCenter设置时区和NTP同步 VMware虚拟化 运维篇 系列文章回顾 vCenter设置时区和NTP同步 附加 ESXi设置alias 参考链接 系列文章回顾 第一章 vCenter给虚机添加RD
  • 鼓励参与计算机考试宣传标语,考试宣传标语

    考试标语 1 遵守考场纪律 维护知识尊严 2 提倡诚信做人 纯洁校园风气 3 考前不慌不乱 考时沉着应对 考后杜绝议论 4 用心看卷 专心答题 细心复查 5 我自信 我成功 6 与诚信携手同行与舞弊挥手作别 7 怀轻松心情进考场 带胜利喜悦
  • 安全https,dns笔记整理

    一 https HTTP 是用于从万维网 WWW World Wide Web 服务器传输超文本到本地浏览器的传送协议 他是一种应用层协议 是基于 TCP IP 通信协议来传递数据的 但他不安全 以明文传递的方式 容易被他人盗取篡改信息 H
  • java 提取存在逗号和小数点的字符串中的数字

    可以使用正则表达式来处理 以下是一个示例代码 可以提取字符串中可能包含逗号和小数点的数字 import java util regex Matcher import java util regex Pattern public class
  • Arduino和Python实时监督控制和数据采集系统(SCADA)

    本文 将向您展示如何设置环境温度信号 该信号将通过计算机上的实时仪表板记录和可视化数据 硬件设计 首先 我们将使用Arduino Uno开发板从红外温度计读取温度值 如上所示连接红外测温仪后 继续将以下程序上传到Arduino 要验证Ard
  • 如何在windows下切换node版本

    解决办法 1 用到某个版本对node重新卸载 安装对应的版本 2 使用nvm 很明显 第一种方法虽然也能解决node版本问题 但是太多麻烦 接下来介绍下nvm的安装使用 第一步 下载nvm并安装 推荐使用nvm setup zip nvm
  • ROS配置LTE第二链路实现故障自动切换

    本文几乎没有操作部分 主要是讲原理 设备是RB962 通过PPPoE方式上网 华为5577移动路由器配合电信日租卡作为第二链路备用 计划实现宽带正常时通过PPPoE线路上网 异常时通过LTE线路上网 PPPoE线路恢复正常时 流量回到PPP
  • 第37.2节 框选-框选场景中的物体

    目录 本节内容 实现要点 点选 性能 绘制球 本节内容 结合上一节 我们把框选这个功能给完善了 如下 白色的是我点击左CTRL 用鼠标左键在场景中拉的框 拉框的教程在第37 1节 框选 绘制框选框 拉完框后能够将场景中选择的物体置红 本节代
  • 基于Qt的OpenGL编程(3.x以上GLSL可编程管线版)---(十二)光照贴图

    Vries的原教程地址如下 https learnopengl cn github io 02 20Lighting 04 20Lighting 20maps 关于OpenGL函数的详细解析及OpenGL关于满反射贴图与镜面反射贴图的知识点
  • 反射的使用

    反射 一 反射基本概念 1 反射是什么 2 Class类实例对象是什么 Field类实例对象和Method类实例对象是什么 3 jVM类加载机制 很难又很重要 待补充 二 反射的作用 三 Class详解 Class的使用场景 1 通过对象获
  • C语言之函数必备练习题

    笔者来自于一个普通二本 非科班出身 对于未来的打算博多 无法完事皆满意 所以 尽自己可能去实现 所以 打算转码中 C语言XX必备练习题 凝聚了笔者精华所有 请看到的读者认真思考 在进行 话不多说 直接上题 笔者的一贯要求 速度 1 作业标题