BTSB-面试题

server/2024/12/22 20:07:18/

面试笔试题

在32位系统里面,用C语言写一个程序,如何判断小端和大端

#include <stdio.h>// 判断系统字节序的函数
void checkEndianness() {unsigned int num = 1;char *ptr = (char*)&num;// 如果第一个字节存储的是最低有效字节,则是小端if (*ptr) {printf("Little endian\n");}// 否则是大端else {printf("Big endian\n");}
}int main() {// 调用函数来检查字节序checkEndianness();return 0;
}

用C语言写一个链表逆置

#include <stdio.h>
#include <stdlib.h>// 定义链表节点结构体
struct Node {int data;struct Node* next;
};// 函数声明
void insertAtEnd(struct Node** head_ref, int new_data);
void printList(struct Node* node);
void reverseList(struct Node** head_ref);// 在链表末尾插入新节点
void insertAtEnd(struct Node** head_ref, int new_data) {// 为新节点分配内存struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));struct Node* last = *head_ref; // 用于遍历链表// 给新节点赋值new_node->data = new_data;new_node->next = NULL;// 如果链表为空,则新节点为头节点if (*head_ref == NULL) {*head_ref = new_node;return;}// 找到最后一个节点while (last->next != NULL)last = last->next;// 将新节点链接到最后一个节点last->next = new_node;return;
}// 打印链表
void printList(struct Node* node) {while (node != NULL) {printf("%d ", node->data);node = node->next;}printf("\n");
}// 反转链表
void reverseList(struct Node** head_ref) {struct Node* prev = NULL;struct Node* current = *head_ref;struct Node* next = NULL;while (current != NULL) {// 保存当前节点的下一个节点next = current->next;// 将当前节点的指针反转current->next = prev;// 移动指针到下一对节点prev = current;current = next;}// 将头指针指向最后一个节点*head_ref = prev;
}// 主函数
int main() {struct Node* head = NULL; // 初始化空链表// 在链表末尾插入节点insertAtEnd(&head, 1);insertAtEnd(&head, 2);insertAtEnd(&head, 3);insertAtEnd(&head, 4);insertAtEnd(&head, 5);printf("Original list: \n");printList(head);// 反转链表reverseList(&head);printf("Reversed list: \n");printList(head);return 0;
}

下面输出哪个选项能指向a[1] 这个元素?

对数组名 a 进行自增运算是非法的,因为数组名不是一个可修改的左值。在 C 语言中,数组名 a 表示数组的首地址,而数组的地址是一个常量,不能被修改。因此,a++ 这行代码会导致编译错误

#include "stdio.h"
int main(void) {int a[5] = {1,2,3,4,5};int *p = a;a++;  //错误printf("%d\r\n",(a); // 错误printf("%d\r\n",*(a+1); // 正确return 0;
}

下面也是正确做法

#include "stdio.h"
int main(void) {int a[5] = {1,2,3,4,5};int *p = a;p++;printf("%d\r\n",*p);return 0;
}

http://www.ppmy.cn/server/13093.html

相关文章

数字积分生态:区块链与电商的未来发展之路

大家好&#xff0c;我是微三云周丽&#xff0c;今天给大家分析当下市场比较火爆的商业模式&#xff01; 小编今天跟大伙们分享什么是区块链与电商的完美结合&#xff1f; 区块链技术作为一种去中心化、不可篡改的分布式账本技术&#xff0c;正逐渐渗透到各行各业&#xff0c;给…

AI图书推荐:AI股票投资入门手册

人工智能是华尔街最热门的投资趋势之一。《AI股票投资入门手册》&#xff08;ai investing for dummies&#xff09;由Paul Mladjenovic撰写&#xff0c;由John Wiley & Sons, Inc.出版&#xff0c;为您提供了了解人工智能如何惠及投资者的所有必要信息。您将学习强大的AI如…

链接热爱,争夺荣耀:英雄联盟全国高校联赛南大区决赛盛况回顾

4月20日&#xff0c;第十二届英雄联盟全国高校联赛南大区决赛在浙江传媒学院圆满落下帷幕。本次赛事在国内顶级配置的专业4K演播厅举办&#xff0c;并结合高校专业学生共创赛事主题曲&#xff0c;全程线下直转播&#xff0c;为本次选手和全国召唤师粉丝们打造了一场链接潮流热爱…

详细剖析多线程4----锁策略(八股文/面试常考)

文章目录 前言一、常见锁策略(八股文)1.1乐观锁和悲观锁1.2轻量级锁和重量级锁1.3自旋锁和挂起等待锁1.4普通互斥锁和读写锁1.5公平锁和非公平锁1.6可重入锁和不可重入锁1.7总结 二、synchronized内部原理三、CAS四、JUC(java.util.concurrent) 的常见类4.1Callable 接⼝4.2Ree…

4. HTTPS通信(握手)过程

HTTPS的通信过程如下&#xff1a; 客户端向服务器发起请求&#xff0c;请求中包含使用的协议版本号、生成的一个随机数、以及客户端支持的加密方法。服务器端接收到请求后&#xff0c;确认双方使用的加密方法、并给出服务器的证书、以及一个服务器生成的随机数。客户端确认服务…

C++ //练习 13.17 分别编写前三题中所描述的numbered和f,验证你是否正确预测了输出结果。

C Primer&#xff08;第5版&#xff09; 练习 13.17 练习 13.17 分别编写前三题中所描述的numbered和f&#xff0c;验证你是否正确预测了输出结果。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 /*************************…

EXCEL下划线转驼峰

公式&#xff1a; LEFT(A1,1)&MID(SUBSTITUTE(PROPER(A1),“_”,“”),2,100) 效果图&#xff1a;

error while loading shared libraries: libaio.so.1: wrong ELF class: ELFCLASS32

这个错误的意思是编译对象需要32位的libaio库 centos版本执行以下命令检查系统有哪些libaio的版本 yum list libaio 如图&#xff0c;有两个版本&#xff0c;将两个版本都安装一下 yum install libaio.x86_64 再编译&#xff0c;成功