AI写作助手

AI写作助手

C++编程实例_笔试题目

个人简历

标题:C++编程实例——笔试题目解析

C++编程实例_笔试题目

随着信息技术的不断发展,C++作为一种高效、功能强大的编程语言,在软件开发、算法竞赛等领域都有着广泛的应用。本文将通过几个典型的C++编程实例,分析一些常见的笔试题目,帮助读者加深对C++编程的理解和掌握。

一、题目一:字符串反转

题目描述:编写一个函数,实现将一个字符串反转的功能。

解题思路:

1. 定义一个函数,接收一个字符串参数;

2. 使用一个栈结构,将字符串中的字符依次入栈;

3. 将栈中的字符依次出栈,组成反转后的字符串;

4. 返回反转后的字符串。

代码实现:

“`cpp

#include

#include

#include

std::string reverseString(const std::string& str) {

std::stack charStack;

std::string reversedStr;

// 将字符串中的字符依次入栈

for (char c : str) {

charStack.push(c);

}

// 将栈中的字符依次出栈,组成反转后的字符串

while (!charStack.empty()) {

reversedStr += charStack.top();

charStack.pop();

}

return reversedStr;

}

int main() {

std::string str = \”Hello, World!\”;

std::string reversedStr = reverseString(str);

std::cout << \"Original string: \" << str << std::endl;

std::cout << \"Reversed string: \" << reversedStr << std::endl;

return 0;

}

“`

二、题目二:二分查找

题目描述:给定一个有序数组和一个目标值,编写一个函数,实现二分查找算法,返回目标值在数组中的索引。如果目标值不存在于数组中,则返回-1。

解题思路:

1. 定义一个函数,接收有序数组、目标值和数组大小作为参数;

2. 初始化两个指针,分别指向数组的首尾元素;

3. 循环比较目标值与中间元素的大小,缩小查找范围;

4. 如果找到目标值,返回索引;如果查找范围缩小到0,返回-1。

代码实现:

“`cpp

#include

#include

int binarySearch(const std::vector& nums, int target) {

int left = 0;

int right = nums.size() – 1;

while (left <= right) {

int mid = left + (right – left) / 2;

if (nums[mid] == target) {

return mid;

} else if (nums[mid] < target) {

left = mid + 1;

} else {

right = mid – 1;

}

}

return -1;

}

int main() {

std::vector nums = {1, 3, 5, 7, 9};

int target = 5;

int index = binarySearch(nums, target);

if (index != -1) {

std::cout << \"Target found at index: \" << index << std::endl;

} else {

std::cout << \"Target not found in the array.\" << std::endl;

}

return 0;

}

“`

三、题目三:链表反转

题目描述:编写一个函数,实现将一个单链表反转的功能。

解题思路:

1. 定义一个函数,接收链表的头节点指针;

2. 初始化三个指针,分别指向当前节点、前一个节点和下一个节点;

3. 循环遍历链表,改变节点的指针指向,实现链表反转;

4. 返回反转后的链表头节点指针。

代码实现:

“`cpp

#include

struct ListNode {

int val;

ListNode* next;

ListNode(int x) : val(x), next(nullptr) {}

};

ListNode* reverseList(ListNode* head) {

ListNode* prev = nullptr;

ListNode* curr = head;

ListNode* next = nullptr;

while (curr != nullptr) {

next = curr->next; // 保存下一个节点

curr->next = prev; // 改变当前节点的指针指向

prev = curr; // 前一个节点向后移动

curr = next; // 当前节点向后移动

}

return prev; // 新的头节点

}

void printList(ListNode* head) {

while (head != nullptr) {

std::cout val << \" \";

head = head->next;

}

std::cout << std::endl;

}

int main() {

ListNode* head = new ListNode(1);

head->next = new ListNode(2);

head->next->next = new ListNode(3);

head->next->next->next = new ListNode(4);

std::cout << \"Original list: \";

printList(head);

ListNode* reversedHead = reverseList(head);

std::cout << \"Reversed list: \";

printList(reversedHead);

return 0;

}

“`

通过以上三个实例,我们可以看到C++编程在解决实际问题时的一些应用。掌握这些常见的编程技巧,将有助于我们在笔试、面试和实际工作中更好地应对各种挑战。在学习和实践过程中,不断积累经验,提高自己的编程能力,是我们走向成功的关键。

AI写作助手 原创著作权作品,未经授权转载,侵权必究!文章网址:https://aixzzs.com/6vpotjvg.html


AI写作工具

文章自动写作
输入您的写作要求,AI自动创作一篇高质量的原创文章。

开始创作

工作汇报总结
输入行业、岗位信息,AI帮你快速书写工作报告、总结、计划、体会等文章。

开始创作

创作 模拟 绘画 登录