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

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客企业服务