再也不用去搜罗题目了,chatgpt1分钟搞定!
如何使用 ChatGPT 帮助自己学习
1、写prompt
帮我写一个prompt,让LLM出一个c++专项训练的题目和题解,比如用户想学习C++的匿名函数,LLM就生成一个小型题目,题解全部是用C++匿名函数实现的。
chatgpt:
当然可以!以下是一个为训练C++匿名函数设计的题目和题解的提示(prompt):
提示:
请设计一个C++编程题目,专注于训练匿名函数(即lambda表达式)的使用。题目应该包含一个具体的编程任务,并要求使用C++的匿名函数来实现解题逻辑。题目应简洁明了,适合用于学习和练习C++中的lambda表达式。题解部分需要展示如何用匿名函数实现该题目,并提供详细的代码解释。
题目示例:
设计一个C++程序,完成以下任务:
定义一个整数向量,并用以下值进行初始化:{10, 20, 30, 40, 50}。
计算并输出该向量中所有偶数元素的平方和。
用C++的匿名函数来实现平方计算和筛选偶数的逻辑。
请提供一个完整的C++代码示例,并用注释解释如何使用匿名函数完成任务。
题解示例:
cpp
复制代码
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
int main() {
// 定义一个整数向量
std::vector<int> numbers = {10, 20, 30, 40, 50};
// 使用匿名函数(lambda表达式)计算偶数的平方和
int sumOfSquares = std::accumulate(numbers.begin(), numbers.end(), 0,
[](int sum, int num) {
// 检查是否是偶数
if (num % 2 == 0) {
// 累加偶数的平方
return sum + num * num;
}
// 如果不是偶数,直接返回当前的累加和
return sum;
});
// 输出结果
std::cout << "Sum of squares of even numbers: " << sumOfSquares << std::endl;
return 0;
}
解释:
定义向量:std::vector<int> numbers = {10, 20, 30, 40, 50}; 初始化了一个包含整数的向量。
std::accumulate 函数:用于对向量中的元素进行累加。第四个参数是一个匿名函数(lambda表达式),它接受当前的累加和和当前元素作为参数。
匿名函数:[](int sum, int num) { ... } 是一个lambda表达式,用于检查元素是否为偶数,并累加其平方值。如果元素是偶数,计算它的平方并加到sum中;如果不是偶数,则直接返回当前的累加和。
输出结果:最终将计算得到的偶数平方和输出到控制台。
你可以根据这个示例来设计题目,并提供适合练习匿名函数的解答。希望这对你有帮助!
2、使用chatgpt回答的prompt让chatgpt帮我们生成题目
请设计多个C++编程题目,专注于训练匿名函数(即lambda表达式)的使用。题目应该包含一个具体的编程任务,并涉及所有的知识点,并要求使用C++的匿名函数来实现解题逻辑。题目应简洁明了,适合用于学习和练习C++中的lambda表达式。题解部分需要展示如何用匿名函数实现该题目,并提供详细的代码解释。
题目示例:
设计一个C++程序,完成以下任务:
定义一个整数向量,并用以下值进行初始化:{10, 20, 30, 40, 50}。
计算并输出该向量中所有偶数元素的平方和。
用C++的匿名函数来实现平方计算和筛选偶数的逻辑。
请提供一个完整的C++代码示例,并用注释解释如何使用匿名函数完成任务。
题解示例:
cpp
复制代码
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
int main() {
// 定义一个整数向量
std::vector<int> numbers = {10, 20, 30, 40, 50};
// 使用匿名函数(lambda表达式)计算偶数的平方和
int sumOfSquares = std::accumulate(numbers.begin(), numbers.end(), 0,
[](int sum, int num) {
// 检查是否是偶数
if (num % 2 == 0) {
// 累加偶数的平方
return sum + num * num;
}
// 如果不是偶数,直接返回当前的累加和
return sum;
});
// 输出结果
std::cout << "Sum of squares of even numbers: " << sumOfSquares << std::endl;
return 0;
}
chatgpt回答:
以下是多个专注于训练C++匿名函数(即lambda表达式)使用的编程题目。这些题目覆盖了不同的用例,包括排序、过滤、转换等,适合用于学习和练习C++中的lambda表达式。
题目 1: 过滤并统计
题目描述:
设计一个C++程序,完成以下任务:
定义一个整数向量,并用以下值进行初始化:{5, 12, 17, 23, 42, 56}。
计算并输出该向量中大于20的所有元素的数量。
使用C++的匿名函数来实现筛选大于20的元素的逻辑。
题解示例:
cpp
复制代码
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
// 定义一个整数向量
std::vector<int> numbers = {5, 12, 17, 23, 42, 56};
// 使用匿名函数(lambda表达式)计算大于20的元素数量
int count = std::count_if(numbers.begin(), numbers.end(),
[](int num) {
// 检查元素是否大于20
return num > 20;
});
// 输出结果
std::cout << "Count of numbers greater than 20: " << count << std::endl;
return 0;
}
题目 2: 对元素进行变换
题目描述:
设计一个C++程序,完成以下任务:
定义一个整数向量,并用以下值进行初始化:{1, 2, 3, 4, 5}。
生成一个新向量,该向量的元素是原向量元素的平方。
使用C++的匿名函数来实现平方计算逻辑。
题解示例:
cpp
复制代码
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
// 定义一个整数向量
std::vector<int> numbers = {1, 2, 3, 4, 5};
std::vector<int> squares(numbers.size());
// 使用匿名函数(lambda表达式)将原向量元素平方并存入新向量
std::transform(numbers.begin(), numbers.end(), squares.begin(),
[](int num) {
// 返回元素的平方
return num * num;
});
// 输出结果
std::cout << "Squares of the numbers: ";
for (int square : squares) {
std::cout << square << " ";
}
std::cout << std::endl;
return 0;
}
题目 3: 查找特定值
题目描述:
设计一个C++程序,完成以下任务:
定义一个字符串向量,并用以下值进行初始化:{"apple", "banana", "cherry", "date", "elderberry"}。
查找并输出第一个包含字母'a'的字符串。
使用C++的匿名函数来实现筛选包含字母'a'的逻辑。
题解示例:
cpp
复制代码
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
// 定义一个字符串向量
std::vector<std::string> words = {"apple", "banana", "cherry", "date", "elderberry"};
// 使用匿名函数(lambda表达式)查找第一个包含字母'a'的字符串
auto it = std::find_if(words.begin(), words.end(),
[](const std::string& word) {
// 检查字符串是否包含字母'a'
return word.find('a') != std::string::npos;
});
// 输出结果
if (it != words.end()) {
std::cout << "First word containing 'a': " << *it << std::endl;
} else {
std::cout << "No word contains 'a'" << std::endl;
}
return 0;
}
题目 4: 按照特定条件排序
题目描述:
设计一个C++程序,完成以下任务:
定义一个整数向量,并用以下值进行初始化:{30, 10, 40, 20, 50}。
按照偶数优先且升序排列该向量。
使用C++的匿名函数来实现排序逻辑。
题解示例:
cpp
复制代码
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
// 定义一个整数向量
std::vector<int> numbers = {30, 10, 40, 20, 50};
// 使用匿名函数(lambda表达式)进行自定义排序
std::sort(numbers.begin(), numbers.end(),
[](int a, int b) {
// 偶数优先,偶数之间按升序排序
if ((a % 2 == 0) && (b % 2 != 0)) {
return true;
}
if ((a % 2 != 0) && (b % 2 == 0)) {
return false;
}
// 如果都为偶数或都为奇数,则按升序排序
return a < b;
});
// 输出结果
std::cout << "Sorted numbers with evens first: ";
for (int num : numbers) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
题目 5: 求元素的最大值
题目描述:
设计一个C++程序,完成以下任务:
定义一个浮点数向量,并用以下值进行初始化:{3.5, 7.2, 1.9, 4.8, 6.3}。
使用C++的匿名函数找出并输出向量中的最大值。
题解示例:
cpp
复制代码
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
// 定义一个浮点数向量
std::vector<double> numbers = {3.5, 7.2, 1.9, 4.8, 6.3};
// 使用匿名函数(lambda表达式)找出最大值
auto maxIt = std::max_element(numbers.begin(), numbers.end(),
[](double a, double b) {
// 比较两个元素,返回较大的一个
return a < b;
});
// 输出结果
if (maxIt != numbers.end()) {
std::cout << "Maximum value: " << *maxIt << std::endl;
} else {
std::cout << "Vector is empty" << std::endl;
}
return 0;
}
这些题目涵盖了各种常见的操作,包括计数、变换、查找、排序和求最大值,通过使用C++的lambda表达式来实现相应的功能。每个题目都提供了详细的题解和代码示例,帮助理解如何使用匿名函数解决实际问题。
标签:std,int,C++,匿名,numbers,chatgpt,include
From: https://blog.csdn.net/m0_51271388/article/details/142300959