三道C语言中常见的笔试题及答案(一)

2023-12-25 08:36

本文主要是介绍三道C语言中常见的笔试题及答案(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目一:

问题:

解释以下代码中的#define预处理指令的作用,并说明其优点和缺点。

#include <stdio.h>
#define PI 3.14159
#define CALCULATE_AREA(r) (PI * r * r)
int main() {
double radius = 5.0;
double area = CALCULATE_AREA(radius);
printf("半径为 %.2f 的圆的面积为 %.2f\n", radius, area);
return 0;
}

答案:

在C语言中,#define预处理指令用于定义常量或宏。在上述代码中,#define PI 3.14159定义了一个名为PI的常量,并将其值设置为3.14159。而#define CALCULATE_AREA(r) (PI * r * r)定义了一个名为CALCULATE_AREA的宏,它接受一个参数r,并计算圆的面积。

使用#define的优点是:

  • 提高代码的可读性,使得常量和计算逻辑在代码中更加明确。
  • 提高代码的可维护性,如果需要修改常量或计算逻辑,只需在一处进行修改。

然而,使用#define也有一些缺点:

  • 宏定义在预处理阶段进行文本替换,没有类型检查,可能导致类型错误或不可预期的行为。
  • 宏定义的调试相对困难,因为它们不会在运行时生成函数调用栈。

题目二:

问题:

以下代码中的错误是什么?如何修复?

#include <stdio.h>
int add(int a, int b) {
return a + b; // 这里没有问题吧?
}
int main() {
int x = 5;
int y = 10;
int result = add(x, y); // 这行代码有什么问题?
printf("The sum is: %d\n", result); // 这行代码输出什么?
return 0;
}

答案:

实际上,上述代码是正确的,没有错误。函数add()正确地接受两个整数参数,并返回它们的和。在main()函数中,变量xy被初始化为510,然后调用add()函数计算它们的和,并将结果存储在变量result中。最后,使用printf()函数输出计算得到的和。因此,该代码的输出将是:The sum is: 15


题目三:

问题:

解释以下代码中的指针操作,并说明其输出结果。

#include <stdio.h>
void modifyValue(int *ptr) {
*ptr = 50; // 修改指针所指向的值为50吗?还是修改其他内容?为什么?
}
int main() {
int num = 10; // num的初始值为10吗?还是其他值?为什么?
printf("Before modification: num = %d\n", num); // 输出什么?为什么?
modifyValue(&num); // 调用modifyValue函数时传递了什么参数?为什么?
printf("After modification: num = %d\n", num); // 输出什么?为什么?
return 0;
}

答案:

在C语言中,指针是一种特殊的变量,用于存储内存地址。在上述代码中,函数modifyValue()接受一个指向整数的指针作为参数。通过解引用指针(使用*操作符),可以修改指针所指向的值。因此,在函数体内,*ptr = 50;这行代码将指针所指向的值修改为50。由于指针参数是通过引用传递的,因此对指针所指向的值的修改将会影响到原始变量。在main()函数中,变量num被初始化为10。然后调用modifyValue(&num);时传递了变量num的地址作为参数。因此,函数内部的修改将会影响到变量num的值。因此,输出结果将是:第一行输出"Before modification: num = 10",第二行输出"After modification: num = 50"。

嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!

扫码进群领资​​​​​​料icon-default.png?t=N7T8https://s.pdb2.com/pages/20230519/16QijNiGb32IFIn.html

这篇关于三道C语言中常见的笔试题及答案(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/534885

相关文章

C语言中联合体union的使用

本文编辑整理自: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=179471 一、前言 “联合体”(union)与“结构体”(struct)有一些相似之处。但两者有本质上的不同。在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间, 一个联合变量

嵌入式软件常见的笔试题(c)

找工作的事情告一段落,现在把一些公司常见的笔试题型整理一下,本人主要是找嵌入式软件方面的工作,笔试的也主要是C语言、数据结构,大体上都比较基础,但是得早作准备,才会占得先机。   1:整型数求反 2:字符串求反,字符串加密,越界问题 3:字符串逆序,两端对调;字符串逆序,指针法 4:递归求n! 5:不用库函数,比较两个字符串的大小 6:求0-3000中含有9和2的全部数之和 7

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

人工和AI大语言模型成本对比 ai语音模型

这里既有AI,又有生活大道理,无数渺小的思考填满了一生。 上一专题搭建了一套GMM-HMM系统,来识别连续0123456789的英文语音。 但若不是仅针对数字,而是所有普通词汇,可能达到十几万个词,解码过程将非常复杂,识别结果组合太多,识别结果不会理想。因此只有声学模型是完全不够的,需要引入语言模型来约束识别结果。让“今天天气很好”的概率高于“今天天汽很好”的概率,得到声学模型概率高,又符合表达

C语言 将“China”译成密码

将“China”译成密码,密码规律是:用原来的字母后面的第4个字母代替原来的字母。例如,字母“A”后面的第4个字母是“E”,用“E”代替“A”。因此,“China”应译为“Glmre”。编译程序用付赋初值的方法使c1,c2,c3,c4,c5这五个变量的值分别为“C”,“h”,“i”,“n”,“a”,经过运算,使c1,c2,c3,c4,c5分别变成“G”,“l”,“m”,“r”,“e”。分别用put

C语言入门系列:探秘二级指针与多级指针的奇妙世界

文章目录 一,指针的回忆杀1,指针的概念2,指针的声明和赋值3,指针的使用3.1 直接给指针变量赋值3.2 通过*运算符读写指针指向的内存3.2.1 读3.2.2 写 二,二级指针详解1,定义2,示例说明3,二级指针与一级指针、普通变量的关系3.1,与一级指针的关系3.2,与普通变量的关系,示例说明 4,二级指针的常见用途5,二级指针扩展到多级指针 小结 C语言的学习之旅中,二级

vscode-创建vue3项目-修改暗黑主题-常见错误-element插件标签-用法涉及问题

文章目录 1.vscode创建运行编译vue3项目2.添加项目资源3.添加element-plus元素4.修改为暗黑主题4.1.在main.js主文件中引入暗黑样式4.2.添加自定义样式文件4.3.html页面html标签添加样式 5.常见错误5.1.未使用变量5.2.关闭typescript检查5.3.调试器支持5.4.允许未到达代码和未定义代码 6.element常用标签6.1.下拉列表

【LinuxC语言】select轮询

文章目录 前言select函数详解selectfd_set类型一个小问题select函数使用步骤改进服务器代码select服务器示例代码 总结 前言 在Linux C语言编程中,我们经常需要处理多个I/O操作。然而,如果我们为每个I/O操作创建一个线程,那么当I/O操作数量增加时,线程管理将变得复杂且效率低下。这就是我们需要select轮询的地方。select是一种高效的I/

拓扑排序——C语言

拓扑排序(Topological Sorting)是一种用于有向无环图(DAG)的排序算法,其输出是图中所有顶点的线性排序,使得对于每条有向边 (u, v),顶点 u 在 v 之前出现。拓扑排序确定了项目网络图中的起始事件和终止事件,也就是顶点的执行顺序。         因为是有向无环图,所以拓扑排序的作用其实就是把先发生的排序在前面,后发生的排序到后面。 例如现在我们有一个