PTA—C语言期末复习(判断题)

1. C语言程序是从源文件的第一条语句开始执行的  (F)

在 C 语言中,程序是从 main 函数开始执行的,而不是从源文件的第一条语句开始执行

2. 若变量定义为double x;,则x % 2是符合C语言语法的表达式 (F)

在 C 语言中,% 运算符(取余运算符)只能用于整数类型的操作数

3. 关于C语言指针的运算:指针只有加减操作,没有乘除操作。指针可以加常数、减常数;相同类型的指针可以相减,不可以相加  T

在 C 语言中,指针通常只有加减操作,没有乘除操作

 

指针可以加常数、减常数,这通常用于在数组中移动指针的位置。例如,如果有一个指向数组元素的指针 p ,p + 1 会指向数组中的下一个元素。

 

相同类型的指针可以相减,相减的结果表示两个指针之间的元素个数。但相同类型的指针不可以相加,因为相加的结果在大多数情况下没有明确的实际意义

4. 在 switch 语句中,多个 case 标号可以共用一组语句   T

#include <stdio.h>int main() {int num = 2;switch (num) {case 1:case 2:case 3:printf("The number is 1, 2 or 3.\n");break;case 4:printf("The number is 4.\n");break;default:printf("The number is not in the expected range.\n");}return 0;
}

在上述示例中,case 1 、case 2 和 case 3 共用了一组语句。

5.  语言的三种循环(for 循环、while 循环、do-while 循环)是可以互相嵌套的  T

6. 以下程序段的功能是计算20的阶乘。 (F)

int i;
double product;
product = 0;
for (i = 1; i <= 20; i++){ product = product * i;
}

初始化时将 product 初始化为 0 是不正确的。阶乘的计算是从 1 开始连续相乘,如果初始化为 0 ,那么后续的乘法运算结果始终为 0

7. 函数的实参可以是常量,变量或表达式  T

例如,定义一个函数 void myFunction(int num) ,在调用这个函数时,可以这样传递实参:

  • 常量:myFunction(5) ,这里的 5 就是常量。
  • 变量:int a = 10; myFunction(a) ,这里的 a 是变量。
  • 表达式:myFunction(2 + 3) ,这里的 2 + 3 是表达式。

8. 按照C语言的规定,在参数传递过程中,既可以将实参的值传递给形参,也可以将形参的值传递给实参,这种参数传递是双向的。 (F)

在 C 语言中,参数传递只有值传递和地址传递。值传递时,形参的改变不会影响实参;地址传递时,可以通过指针间接修改实参的值。但总体来说,参数传递是单向的,从实参到形参,不存在形参的值直接传递给实参的情况

9. 在对数组全部元素赋初值时,不可以省略行数,但能省略列数   F

在对数组全部元素赋初值时,可以省略行数,但不能省略列数

 

例如,定义一个整型数组 int arr[] = {1, 2, 3, 4, 5}; ,这里省略了行数。

 

但如果是二维数组,如 int arr[][3] = {{1, 2, 3}, {4, 5, 6}}; ,列数不能省略。

10. 判断字符串a是否大于b,可以表示为 if (strcmp(a,b)>0)    T

在 C 语言中,strcmp 函数用于比较两个字符串。如果 strcmp(a, b) > 0,则表示字符串 a 大于字符串 b 。

11. "a" 和 'a'是等价的。  (F)

"a" 是一个字符串,它实际上包含两个字符:字符 'a' 和字符串结束标志 '\0' 。

 

'a' 是一个字符。  所以 "a" 和 'a' 不等价。

12. 结构体成员的类型必须是基本数据类型  F

结构体成员的类型不仅可以是基本数据类型(如 intfloatchar 等),还可以是其他结构体类型、指针类型、数组类型等

#include <stdio.h>struct Point {int x;int y;
};struct Person {char name[20];int age;struct Point location;  // 结构体类型作为成员float *scores;  // 指针类型作为成员int grades[5];  // 数组类型作为成员
};int main() {struct Person p;return 0;
}

13. 指向结构体变量的指针可以作函数参数,实现传址调用  T

通过传递结构体指针作为参数,可以在函数内部修改结构体变量的成员值,并且这些修改会反映到函数外部调用处的结构体变量上

#include <stdio.h>struct Student {int id;char name[20];
};void modifyStudent(struct Student *stu) {stu->id = 101;strcpy(stu->name, "Alice");
}int main() {struct Student stu = {1, "Bob"};printf("Before modification: ID = %d, Name = %s\n", stu.id, stu.name);modifyStudent(&stu);printf("After modification: ID = %d, Name = %s\n", stu.id, stu.name);return 0;
}

在上述示例中,modifyStudent 函数接受一个指向 struct Student 类型的指针,在函数内部修改了结构体成员的值,实现了通过指针的传址调用。

14. 共用体变量可以作结构体的成员,结构体变量也可以作共用体的成员。 (T) 

共用体变量可以作为结构体的成员,结构体变量也可以作为共用体的成员。这种嵌套使用在 C 语言中是允许的,可以根据具体的编程需求灵活运用,以实现更复杂的数据结构。

15. 在单向链表中,头指针中存放的是头结点的内容。 T

头指针存放的是头结点的地址,而不是头结点的内容

16. 共用体变量可以作结构体的成员,结构体变量也可以作共用体的成员  T

共用体和结构体可以相互嵌套使用

17. 单向链表中的每个结点都需要动态分配内存空间  T

单向链表的节点通常是在运行时动态分配内存来创建的。

18. 通常使用结构的嵌套来定义单向链表结点的数据类型   (T)

常见的单向链表节点的数据类型是通过结构体嵌套指针来定义的

19. 一个结构类型变量所占的内存空间是其各个成员所占内存空间之和   (T)

结构体变量的内存空间大小等于其所有成员变量所占内存空间的总和,可能会存在字节对齐的情况导致实际占用空间略大于各成员简单相加。

20. 用链表代替数组进行数据操作时,查询更加方便。  F

链表在插入和删除操作上比数组更具优势

21. 循环链表的最后一个元素指向链表的第一个元素。 F

在循环链表中,最后一个元素的指针指向链表的第一个元素,从而形成一个环形结构

22. 函数名代表该函数的入口地址。因此,可用函数名给指向函数的指针变量赋值  (T) 

#include <stdio.h>void myFunction() {printf("Hello!\n");
}int main() {void (*ptr)();  // 定义一个指向函数的指针ptr = myFunction;  // 用函数名给指针赋值// 通过指针调用函数(*ptr)();return 0;
}

在上述代码中,定义了一个指向 void 类型、无参数函数的指针 ptr ,然后将 myFunction 函数的地址赋给了 ptr ,之后通过解引用指针来调用函数。

23. 要通过函数调用来改变主调函数中某个变量的值,可以把指针作为函数的参数  T

因为指针传递的是变量的地址,在被调函数中对指针所指向的内存进行操作,就能够直接修改主调函数中变量的值。

#include <stdio.h>void modifyValue(int *ptr) {*ptr = 100;
}int main() {int num = 50;printf("Before modification: %d\n", num);modifyValue(&num);printf("After modification: %d\n", num);return 0;
}

在上述代码中,modifyValue 函数通过指针 ptr 改变了主调函数 main 中 num 的值。


推荐文章:

PTA—C语言期末复习(选择题)-CSDN博客


海漫浩浩,我亦苦作舟!大家一起学习,一起进步!  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/37009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过nginx去除 api url前缀 并保持后面剩余的url不变向后台请求

如 我前台浏览器向后台请求的接口是 http://127.0.0.1:5099/api/sample/sample/getbuttonlist 实际的请求接口传向 http://192.168.3.71:5099/sample/sample/getbuttonlist 方法是向config中加入下面这样一个server server {listen 5099;location /api/ {rewrite ^/a…

HTML流星雨

目录 写在前面 完整代码 代码分析 系列文章 写在最后 写在前面 岁月如梭&#xff0c;光阴似箭&#xff0c;不知不觉暑假就要来喽&#xff0c;本期小编用HTML给大家手搓了一个炫酷的流星雨动画&#xff0c;一起来看看吧。 完整代码 <!DOCTYPE html> <html lang…

项目风险管理系统有哪些?分享11款主流项目管理系统

本文将分享11款主流项目管理系统&#xff1a;PingCode、Worktile、StandardFusion、MasterControl、ClickUp、SAI360、Netwrix Auditor、MetricStream、Wrike、Celoxis、Zoho Projects。 在项目管理中&#xff0c;风险管理不仅是一个挑战&#xff0c;也是保证项目顺利进行的关键…

探索Vim的文本处理能力:精通查找与替换

探索Vim的文本处理能力&#xff1a;精通查找与替换 Vim&#xff0c;作为Linux终端下的王牌文本编辑器&#xff0c;以其强大的功能和灵活性深受开发者和系统管理员的喜爱。在Vim中进行查找和替换是文本编辑中的一项基础且重要的操作。本文将详细解释如何在Vim中执行查找和替换文…

Linux Redis 服务设置开机自启动

文章目录 前言一、准备工作二、操作步骤2.1 修改redis.conf文件2.2 创建启动脚本2.3 设置redis 脚本权限2.4 设置开机启动2.5 验证 总结 前言 请各大网友尊重本人原创知识分享&#xff0c;谨记本人博客&#xff1a;南国以南i、 提示&#xff1a;以下是本篇文章正文内容&#x…

编程的难点在哪?是逻辑、算法,还是模块、框架的掌握?

&#x1f446;点击关注 回复『新人礼』获取学习礼包&#x1f446; 很多新手程序员在一开始都是满怀热情地投入到编程的学习&#xff0c;但却在学习过程中处处碰壁&#xff0c;导致放弃。 编程的难点在于逻辑、数学、算法&#xff0c;还是模块、框架、接口的掌握&#xff1f;但…

idea Error running ‘Application‘

1、Error running ‘Application’ Error running ApplicationError running Application. Command line is too long.Shorten the command line via JAR manifest or via a classpath file and rerun.找到 .idea/libraies/workspace.xml 中的 PropertiesComponent 属性&#…

Android InputDispatcher分发输入事件

派发循环是指 InputDispatcher 不断地派发队列取出事件&#xff0c;寻找合适的窗口并进行发送的过程&#xff0c;是 InputDispatcher 线程的主要工作 事件发送循环是 InputDispatcher 通过 Connection 对象将事件发送给窗口&#xff0c;并接受其反馈的过程 InputDispatcher —…

Spring Boot跨域请求关键处理技术解析

Spring Boot跨域请求关键处理技术解析 在Web开发中&#xff0c;跨域请求是一个常见问题&#xff0c;尤其在微服务架构和前后端分离的开发模式中更为突出。Spring Boot作为一种流行的Java Web框架&#xff0c;提供了多种解决跨域请求的方法。本文将详细解析Spring Boot中跨域请…

在 Qt 中设置 QMainWindow 的大小

问题描述 一位 Qt 新手提问&#xff0c;是否有办法将 QMainWindow 的大小设置为用户桌面大小的 70%。他尝试过使用伸缩因子&#xff0c;但未成功。QWidget::setFixedSize 可以工作&#xff0c;但只能使用像素值。 解决方案 方案一&#xff1a;使用 QDesktopWidget 在 QMain…

大模型赋能全链路可观测性:运维效能的革新之旅

目录 全链路可观测工程与大模型结合---提升运维效能 可观测性&#xff08;Observability&#xff09;在IT系统中的应用及其重要性 统一建设可观测数据 统一建设可观测数据的策略与流程 全链路的构成和监控形态 云上的全链路可视方案 为什么一定是Copilot 大模型的Copilo…

mov和mp4区别是什么?苹果的原创和时代的宠儿

在数字媒体领域&#xff0c;视频格式的选择往往决定了观看体验的质量和文件的兼容性。在众多视频格式中&#xff0c;MOV和MP4无疑是最具代表性的两种&#xff0c;它们分别承载着苹果和互联网世界的技术革新与历史变迁。本文将带您穿越时间的长廊&#xff0c;探索MOV与MP4的发展…

A : 平面划分

Description 一条直线可以把平面分成两部分&#xff0c;两条直线分成四部分。那么 n 条直线最多可以把平面分成几部分&#xff1f; Input 多组数据&#xff0c;每组数据一个正整数 1≤&#xfffd;≤1000。 Output Sample #0 Input Copy 3 5 Output Copy 7 16 Hin…

区间DP——AcWing 320. 能量项链

区间DP 定义 区间动态规划&#xff08;Interval Dynamic Programming&#xff09;&#xff0c;简称区间DP&#xff0c;是动态规划领域的一个重要分支&#xff0c;专门用于解决涉及区间问题的最优化问题。这类问题通常需要在给定的一组区间上找到最优解&#xff0c;比如求解最…

福兰农庄携手越南NFC巨头朱雀桥薇妮她百香果饮料,深化品质合作

近日&#xff0c;国内知名果汁品牌福兰农庄成功与越南NFC行业领军者朱雀桥建立深入合作关系。为了进一步提升产品品质和市场竞争力&#xff0c;福兰农庄派遣专业团队前往越南&#xff0c;深入VINUT百香果饮料的生产线&#xff0c;学习其从原料采购到产品上市的严格操作流程。 在…

IAR 常见报错与实用小技巧(ZigBee)

一、报错 1.未发现选择目标 原因&#xff1a;硬件连接存在问题 解决方案&#xff1a;将数据线重新插拔或更换接口、数据线 2. 烧录终止 原因&#xff1a;烧录前未点击仿真器复位按钮 解决方案&#xff1a; 进行烧录前点击仿真器复位按钮&#xff08;下载过程中不能按&#xff…

数据结构与算法 - 图

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 图的定义和基本概念&#xff1a; 图&#xff08;Graph&#xff09;是一种由…

java+mysql图书管理系统

完整代码地址 1.运行效果图 2.主要代码 2.1.连接数据库 package com.my.homework.utils;import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException;public class JDBCUtils {public static Connection getConnection() throws Exception {…

Linux内核 -- Clocksource的注册与使用

Linux Clocksource 使用教程 本文档介绍了如何在Linux内核中实现和使用clocksource&#xff0c;并提供了内核态和用户态使用clocksource的示例代码。 1. Clocksource 驱动实现 以下是一个简单的基于周期计数器的clocksource驱动实现示例。 1.1 定义clocksource结构体 #inc…

使用SQLMap进行SQL注入测试

使用SQLMap进行SQL注入测试 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 什么是SQL注入&#xff1f; SQL注入是一种常见的Web应用程序安全漏洞&#xff0c…