刘桐麒_2404020222_网络24_2 level
获赞
1
粉丝
5
关注
5
看过 TA
7
哈尔滨理工大学
2024
算法工程师
IP属地:黑龙江
暂未填写个人简介
私信
关注
设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号#include  // 包含输入输出流库,用于输入输出操作。#include   // 包含字符串库,用于使用字符串类型。using namespace std; // 使用标准命名空间,使得可以直接使用cout、endl等而不需要std::// 定义学生类class Student {public:// 成员函数,用于设置学生的名字void setName(string name) {m_name = name;}// 成员函数,用于设置学生的IDvoid setID(int id) {m_id = id;}// 成员函数,用于显示学生的信息void showStudent() {cout << "name:" << m_name << " ID:" << m_id << endl;}public:// 成员变量,存储学生的名字和IDstring m_name;int m_id;};int main() {// 创建一个Student对象Student stu;// 设置学生的名字为"德玛西亚"stu.setName("德玛西亚");// 设置学生的ID为250stu.setID(250);// 显示学生的信息stu.showStudent();return 0;}知识点总结:1. **类的定义**:定义了一个包含公有成员变量和成员函数的`Student`类。2. **成员函数**:类中包含`setName`、`setID`和`showStudent`成员函数,用于设置学生的名字和ID,以及显示学生的信息。3. **对象的创建和使用**:在`main`函数中创建了一个`Student`类的对象,并调用其成员函数。4. **输入输出流**:使用`cout`和`endl`进行输出操作。
0 点赞 评论 收藏
分享
0 点赞 评论 收藏
分享
删除字符串中的除字母外的字符代码部分:#includeint main(){char line[150]; // 定义一个字符数组line,用于存储输入的字符串,最大长度为149个字符加上一个空字符'\0'。int i, j; // 定义循环计数器i和j。printf("输入一个字符串: "); // 提示用户输入字符串。fgets(line, (sizeof line / sizeof line[0]), stdin); // 使用fgets函数从标准输入读取字符串,包括空格,最多读取149个字符。// 遍历字符串,直到遇到空字符'\0'for(i = 0; line[i] != '\0'; ++i){// 如果当前字符不是字母也不是空字符,则需要移除while (!( (line[i] >= 'a' && line[i] <= 'z') || (line[i] >= 'A' && line[i] <= 'Z') || line[i] == '\0') ){// 从当前位置i开始,将所有字符向后移动一位,覆盖非字母字符for(j = i; line[j] != '\0'; ++j){line[j] = line[j+1];}// 将字符串末尾的空字符'\0'向前移动一位line[j] = '\0';}}printf("输出: "); // 提示将显示处理后的字符串。puts(line); // 输出处理后的字符串。return 0; // 程序结束,返回0表示成功。}知识点总结:1. **字符数组和字符串**:使用字符数组来存储字符串,并了解字符串以空字符'\0'结束。2. **输入输出函数**:使用`printf`和`fgets`函数进行输出和输入操作,使用`puts`函数输出字符串。3. **循环控制**:使用`for`循环遍历字符串中的每个字符。4. **条件判断**:使用`while`循环和条件判断来检查字符是否为字母或空字符。5. **数组操作**:通过数组索引操作来移动和覆盖数组中的字符。难点:1. **字符串处理**:理解如何通过遍历和条件判断来处理字符串中的字符。2. **数组操作**:理解如何在数组中移动字符来覆盖非字母字符。3. **边界条件处理**:确保在覆盖非字母字符时正确处理字符串的结尾。
0 点赞 评论 收藏
分享
使用指针访问数组元素代码部分:#include  // 包含标准输入输出库,用于输入输出操作。int main() // 主函数入口{int data[5], i; // 定义一个包含5个整数的数组data和一个循环计数器iprintf("输入元素: "); // 提示用户输入元素// 使用for循环读取5个整数到数组data中for(i = 0; i < 5; ++i)scanf("%d", data + i); // 通过指针运算访问数组元素的地址,并将输入的整数存储到数组中printf("你输入的是: \n"); // 提示将显示用户输入的元素// 使用for循环打印数组data中的所有元素for(i = 0; i < 5; ++i)printf("%d\n", *(data + i)); // 通过指针运算解引用数组元素,并打印每个元素return 0; // 程序结束,返回0表示成功}知识点总结:1. **数组定义和使用**:定义一个固定大小的整型数组,并使用循环遍历数组。2. **指针运算**:使用数组名`data`作为指向数组首元素的指针,通过`data + i`来访问数组的第`i`个元素的地址。3. **输入输出函数**:使用`printf`和`scanf`函数进行基本的输入输出操作。4. **循环控制**:使用`for`循环来控制数组元素的输入和输出。
0 点赞 评论 收藏
分享
豪华版计算器代码部分:#include// 函数声明int get_option(); // 获取用户选项的函数void print_result(int num1, int num2, int result, int option); // 打印计算结果的函数// 主函数入口int main(){int done = 0; // 控制循环的标记变量int option, num1, num2, result; // 用于存储用户选项和计算的数字以及结果// 使用while循环来重复执行计算,直到用户选择退出while(!done){option = get_option(); // 获取用户选项if(option == 5) // 如果用户选择退出(选项5){done = 1; // 设置done为1,退出循环}else {do {printf("\n请输入两个数:");scanf("%d %d", &num1, &num2); // 读取用户输入的两个数字if(option == 4 && num2 == 0) // 如果用户选择除法且第二个数为0{printf("\n对不起,除数不能为零"); // 提示用户除数不能为0}else {// 根据用户选项进行计算switch(option){case 1: // 加法result = num1 + num2;break;case 2: // 减法result = num1 - num2;break;case 3: // 乘法result = num1 * num2;break;case 4: // 除法result = num1 / num2;}print_result(num1, num2, result, option); // 打印计算结果}}while(option == 4 && num2 == 0); // 如果是除法且除数为0,则重新输入}}return 0; // 程序结束}// 获取用户选项的函数int get_option(){int option; // 用于存储用户选项do{printf("\n ****************");printf("\n *    1.加法    *");printf("\n *    2.减法    *");printf("\n *    3.乘法    *");printf("\n *    4.除法    *");printf("\n *    5.退出    *");printf("\n ****************");printf("\n请输入您需要的功能:");scanf("%d", &option); // 读取用户输入的选项if(option < 1 || option > 5) // 如果输入的选项不在1到5之间{printf("对不起您输入的数字有误,请重新输入。\n"); // 提示用户输入有误}}while(option < 1 || option > 5); // 循环直到用户输入正确的选项return option; // 返回用户选项}// 打印计算结果的函数void print_result(int num1, int num2, int result, int option){char operator; // 用于存储运算符switch(option) // 根据选项确定运算符{case 1: // 加法operator = '+';break;case 2: // 减法operator = '-';break;case 3: // 乘法operator = '*';break;case 4: // 除法operator = '/';}printf("\n** %d %c %d = %d **\n", num1, operator, num2, result); // 打印计算结果}知识点总结:1. **函数定义与调用**:`get_option`和`print_result`函数的定义和调用。2. **循环控制**:使用`while`和`do-while`循环来控制程序流程。3. **条件判断**:使用`if-else`和`switch`语句来进行条件判断。4. **输入输出**:使用`printf`和`scanf`函数进行输入输出操作。5. **算术运算**:使用基本的算术运算符进行计算。难点:1. **循环控制逻辑**:理解如何使用循环来重复执行计算,直到用户选择退出。2. **错误处理**:处理用户输入错误的情况,如除数为0或输入的选项不在1到5之间。3. **函数的使用**:理解如何定义和调用函数来简化代码和提高代码的可读性。
0 点赞 评论 收藏
分享
求一个整数的所有因数代码部分:#includeint main(){int number, i; // 定义变量,number用于存储用户输入的整数,i用于循环中的计数器。// 提示用户输入一个整数printf("输入一个整数: ");scanf("%d",&number); // 读取用户输入的整数,并存储在变量number中。// 提示将打印出该整数的因数printf("%d 的因数有: ", number);// 使用for循环从1遍历到number,找出所有的因数for(i=1; i <= number; ++i) // 循环从1开始,到number结束,每次循环i增加1{if (number % i == 0) // 如果number除以i的余数为0,说明i是number的一个因数{printf("%d ",i); // 打印出因数i}}return 0; // 程序结束}知识点总结:1. **基本输入输出**:使用`printf`和`scanf`函数进行基本的输入输出操作。2. **循环控制**:使用`for`循环来遍历从1到输入数字的所有整数。3. **取模运算**:使用`%`运算符来检查一个数是否能被另一个数整除,即检查因数。4. **条件判断**:使用`if`语句来判断是否找到因数。难点:1. **理解因数的概念**:需要理解什么是因数,即能够整除给定数的数。2. **循环的使用**:需要理解如何使用`for`循环来遍历所有可能的因数。3. **取模运算的应用**:需要理解如何使用取模运算来检查一个数是否是另一个数的因数。
0 点赞 评论 收藏
分享
判断Armstrong数代码部分:#includeint main(){int number, originalNumber, remainder, result = 0; // 定义变量,用于存储输入的数字、原始数字、余数和结果。// 提示用户输入一个三位数printf("输入三位数: ");scanf("%d", &number); // 读取用户输入的三位数,并存储在变量number中。originalNumber = number; // 将输入的数字赋值给originalNumber,用于后续的计算。// 循环处理每一位数字,直到originalNumber为0while (originalNumber != 0){remainder = originalNumber % 10; // 获取当前最低位的数字result += remainder * remainder * remainder; // 将每一位数字的立方加到result上originalNumber /= 10; // 移除当前最低位的数字,准备处理下一位}// 判断result是否与原始输入的数字相等if(result == number) // 如果相等,说明是阿姆斯特朗数printf("%d 是 Armstrong 数", number);else // 如果不相等,说明不是阿姆斯特朗数printf("%d 不是 Armstrong 数", number);return 0; // 程序结束}知识点总结:1. **基本输入输出**:使用`printf`和`scanf`函数进行基本的输入输出操作。2. **循环控制**:使用`while`循环来处理每一位数字。3. **取模和除法**:使用`%`运算符来获取余数(即最低位数字),使用`/=`运算符来移除最低位数字。4. **条件判断**:使用`if-else`语句来判断一个数是否为阿姆斯特朗数。难点:1. **理解阿姆斯特朗数的定义**:需要理解阿姆斯特朗数(自恋数)的定义,即一个数等于其各位数字的立方和。2. **循环处理每一位数字**:需要理解如何通过循环和取模操作来逐位处理数字。3. **边界条件的处理**:需要确保循环能够正确处理直到数字为0,这要求对循环的控制有一定的理解。这段代码的难点在于理解如何通过循环和数学运算来逐位处理数字,并根据阿姆斯特朗数的定义进行判断。代码本身逻辑清晰,但需要对基本的编程概念有一定的理解。
0 点赞 评论 收藏
分享
有序序列插入数代码部分:#include#include  // 包含算法库,用于调用sort函数int main() {int n; // 声明变量n用于存储数组的大小scanf("%d", &n); // 从标准输入读取数组的大小int arr[1000]; // 声明一个大小为1000的数组arr,用于存储输入的整数for (int i = 0; i < n; i++) {scanf("%d", &arr[i]); // 使用for循环读取n个整数到数组arr中}std::sort(arr, arr + n); // 使用标准库中的sort函数对数组arr进行排序int cha; // 声明变量cha用于存储要插入的数scanf("%d", &cha); // 从标准输入读取要插入的数int insertPos = 0; // 声明变量insertPos用于存储cha的插入位置while (insertPos < n && arr[insertPos] < cha) { // 找到cha应该插入的位置insertPos++;}// 将insertPos及其之后的元素向后移动一位,为cha腾出空间for (int i = n; i > insertPos; i--) {arr[i] = arr[i - 1];}arr[insertPos] = cha; // 将cha插入到正确的位置n++; // 数组的大小增加1// 打印插入新元素后的数组for (int i = 0; i < n; i++) {printf("%d ", arr[i]);}printf("\n"); // 打印换行符return 0; // 程序正常退出}知识点:1. **算法库**:`<>` 是C++标准库的一部分,提供了排序、搜索等算法。2. **数组声明**:声明一个固定大小的数组 `arr` 来存储输入的整数。3. **输入输出流**:使用 `scanf` 和 `printf` 函数进行输入输出操作。4. **循环控制**:使用 `for` 循环来读取数组元素和打印数组元素。5. **数组排序**:使用 `std::sort` 函数对数组进行排序。6. **插入操作**:找到插入位置并将元素插入到已排序数组中。难点:1. **排序算法**:理解 `std::sort` 函数的工作原理和时间复杂度。2. **数组索引**:正确处理数组索引,特别是在循环和条件判断中。3. **插入操作**:理解如何在已排序数组中插入新元素并保持数组有序。4. **代码调试**:如果程序输出不正确,需要能够调试并找到逻辑错误。通过理解和掌握这些知识点和难点,可以更好地编写和理解涉及数组操作和排序的C++程序。
0 点赞 评论 收藏
分享
利用快速排序算法将读入的 N 个数从小到大排序后输出.代码部分:#include  // 包含标准库,bits/stdc++.h 是一个非标准头文件,包含了C++标准库的大部分头文件using namespace std; // 使用标准命名空间,允许我们不必在标准库函数前加std::int a[100000]; // 声明一个全局数组a,大小为100000,用于存储输入的整数int main() {int n, i; // 声明变量n用于存储输入的整数数量,i用于循环计数cin >> n; // 从标准输入读取整数数量nfor (i = 0; i < n; i++) { // 使用for循环读取n个整数到数组a中cin >> a[i];}sort(a, a + n); // 使用标准库中的sort函数对数组a进行排序,范围是从a[0]到a[n-1]for (i = 0; i < n - 1; i++) { // 使用for循环打印排序后的数组元素,除了最后一个元素cout << a[i] << " "; // 打印当前元素,并在元素后加一个空格}if (i == n - 1) // 如果已经打印了n-1个元素,那么打印最后一个元素,并在元素后加一个换行符cout << a[i] << endl; // 打印最后一个元素,并结束当前行return 0; // 程序正常退出}```知识点:1. **头文件包含**:`` 是一个方便的头文件,包含了C++标准库的大部分头文件。2. **命名空间**:`using namespace std;` 允许我们直接使用标准库中的名称而不需要`std::`前缀。3. **数组声明**:声明一个足够大的数组来存储输入的整数。4. **输入输出流**:使用 `cin` 和 `cout` 进行输入和输出操作。5. **循环控制**:使用 `for` 循环来读取和打印数组元素。6. **数组排序**:使用 `sort` 函数对数组进行排序。7. **条件判断**:使用 `if` 语句来判断是否需要打印最后一个数组元素
0 点赞 评论 收藏
分享
汉诺塔问题 #include// 递归函数,用于打印汉诺塔的移动步骤void hnt(int n, char b, char m, char e) {if (n >= 1) {// 将n-1个盘子从b移动到m,e作为辅助柱hnt(n - 1, b, e, m);// 打印移动第n个盘子的步骤printf("%d: %c -> %c\n", n, b, e);// 将n-1个盘子从m移动到e,b作为辅助柱hnt(n - 1, m, b, e);}}int main() {int n;char b, m, e;scanf("%d %c %c %c", &n, &b, &m, &e); // 读取盘子数量和三个柱子的标识hnt(n, b, m, e); // 打印汉诺塔的移动步骤return 0;}知识点:递归函数:使用递归函数 hnt 来模拟汉诺塔问题的解决过程。输入输出:使用 scanf 和 printf 函数进行输入输出操作。字符输入:在 scanf 中使用 %c 格式符读取字符,注意字符之间不需要间隔。递归逻辑:理解递归函数如何通过分治法解决问题,即先递归解决子问题,然后处理当前问题,最后再递归解决剩余的子问题。难点:递归理解:理解递归函数的工作原理,特别是如何通过递归调用自身来解决问题。递归终止条件:正确设置递归的终止条件,避免无限递归。逻辑顺序:理解汉诺塔问题的逻辑顺序,确保每一步移动都是合法的。代码调试:如果程序输出不正确,需要能够调试并找到逻辑错误。通过理解和掌握这些知识点和难点,可以更好地编写和理解涉及递归和经典算法问题的C语言程序
0 点赞 评论 收藏
分享
井字棋 代码部分:#include#include#define MAX_SIZE 3#define TOTAL_CELLS (MAX_SIZE * MAX_SIZE)int main() {// 定义棋盘和计数数组char p[MAX_SIZE][MAX_SIZE];int k[8] = {0}; // K的计数int m[8] = {0}; // B的计数int a = 0, b = 0; // 用于记录获胜情况// 读取棋盘状态for (int i = 0; i < MAX_SIZE; i++) {for (int j = 0; j < MAX_SIZE; j++) {scanf(" %c", &p[i][j]); // 注意添加空格以跳过空白字符}}// 计算K和B的连线数量for (int i = 0; i < MAX_SIZE; i++) {for (int j = 0; j < MAX_SIZE; j++) {if (p[i][j] == 'K') {k[i]++;k[j + 3]++;}if (i == j && p[i][j] == 'K') {k[6]++;}if (i + j == 2 && p[i][j] == 'K') {k[7]++;}if (p[i][j] == 'B') {m[i]++;m[j + 3]++;}if (i == j && p[i][j] == 'B') {m[6]++;}if (i + j == 2 && p[i][j] == 'B') {m[7]++;}}}// 检查是否有获胜者for (int i = 0; i < 8; i++) {if (k[i] == 3) {a++;}if (m[i] == 3) {b++;}}// 输出结果if (a > 0) {printf("KiKi wins!\n");} else if (b > 0) {printf("BoBo wins!\n");} else {printf("No winner!\n");}return 0;}知识点:1. **宏定义**:使用 `#define` 来定义常量,例如棋盘的最大尺寸和总单元格数。2. **数组操作**:使用二维数组来表示棋盘,并使用一维数组来计数。3. **输入输出**:使用 `scanf` 和 `printf` 函数进行输入输出操作。4. **循环控制**:使用 `for` 循环来遍历棋盘和计数数组。5. **条件判断**:使用 `if` 语句来判断棋盘上的字符和计数条件。
0 点赞 评论 收藏
分享
素数回文 代码部分:#include#include#include// 定义长整型别名typedef long long ll;// 素数判断函数ll pan(ll x) {if (x == 1) return 1; // 1不是素数if (x == 2) return 0; // 2是素数for (ll i = 2; i <= sqrt(x); i++) {if (x % i == 0) return 1; // 如果找到因子,则不是素数}return 0; // 没有找到因子,是素数}// 全局变量,用于存储数字的逆序long long o = 0;// 计算数字的逆序long long hui(long long a) {long long t[9];memset(t, 0, sizeof(t)); // 初始化数组t[0] = 1;for (int i = 1; i < 9; i++) {t[i] = 10 * t[i - 1]; // 计算10的幂}for (int i = 0; i < 9; i++) {if (a / t[i] > 0 && a / t[i] <= 9) {o = a * t[i];for (int j = i - 1; j >= 0; j--) {a /= 10;o += a % 10 * t[j];}}}return o;}int main() {ll t;scanf("%lld", &t); // 读取数字if (pan(hui(t))) {printf("noprime\n"); // 如果逆序数不是素数,则输出noprime} else {printf("prime\n"); // 如果逆序数是素数,则输出prime}return 0;}知识点:1. **类型定义**:使用 `typedef` 定义 `ll` 作为 `long long` 的别名。2. **数学函数**:使用 `math.h` 中的 `sqrt` 函数计算平方根。3. **内存操作**:使用 `memset` 函数初始化数组。4. **数组操作**:计算10的幂并存储在数组中。5. **循环控制**:使用 `for` 循环遍历数组和计算逆序数。6. **条件判断**:使用 `if` 语句判断数字是否为素数。7. **输入输出**:使用 `scanf` 和 `printf` 函数进行输入输出操作。
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务