CC++数据结构一点经典题目
- 格式:doc
- 大小:590.41 KB
- 文档页数:83
数据结构经典题目及c语言代码一、线性表1. 顺序表顺序表是一种利用连续存储空间存储元素的线性表。
以下是一个顺序表的经典题目及C语言代码实现:```c#define MaxSize 50typedef struct {int data[MaxSize]; // 存储元素的数组int length; // 顺序表的当前长度} SeqList;// 初始化顺序表void initList(SeqList *L) {L->length = 0;}// 插入元素到指定位置void insert(SeqList *L, int pos, int elem) {if (pos < 1 || pos > L->length + 1) {printf("插入位置无效\n");return;}if (L->length == MaxSize) {printf("顺序表已满,无法插入\n"); return;}for (int i = L->length; i >= pos; i--) { L->data[i] = L->data[i - 1];}L->data[pos - 1] = elem;L->length++;}// 删除指定位置的元素void delete(SeqList *L, int pos) {if (pos < 1 || pos > L->length) {printf("删除位置无效\n");return;}for (int i = pos - 1; i < L->length - 1; i++) {L->data[i] = L->data[i + 1];}L->length--;}// 获取指定位置的元素值int getElement(SeqList *L, int pos) {if (pos < 1 || pos > L->length) {printf("位置无效\n");return -1;}return L->data[pos - 1];}```2. 链表链表是一种利用非连续存储空间存储元素的线性表。
第一章概论一、选择题1、研究数据结构就是研究(D )。
A. 数据的逻辑结构B。
数据的存储结构C. 数据的逻辑结构和存储结构D。
数据的逻辑结构、存储结构及其基本操作2、算法分析的两个主要方面是( A )。
A。
空间复杂度和时间复杂度 B. 正确性和简单性C。
可读性和文档性D。
数据复杂性和程序复杂性3、具有线性结构的数据结构是( D )。
A。
图B。
树C。
广义表D。
栈4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、( B )等5个特性。
A. 可执行性、可移植性和可扩充性B。
可执行性、有穷性和确定性C。
确定性、有穷性和稳定性 D. 易读性、稳定性和确定性5、下面程序段的时间复杂度是( C )。
for(i=0;i<m;i++)for(j=0;j〈n;j++)a[i][j]=i*j;A. O(m2) B。
O(n2) C。
O(m*n) D. O(m+n)6、算法是(D )。
A。
计算机程序 B. 解决问题的计算方法C。
排序算法 D. 解决问题的有限运算序列7、某算法的语句执行频度为(3n+nlog2n+n2+8),其时间复杂度表示( C )。
A。
O(n) B. O(nlog2n) C。
O(n2) D. O (log2n)8、下面程序段的时间复杂度为( C ).i=1;while(i<=n)i=i*3;A. O(n)B。
O(3n) C。
O(log3n) D. O(n3)9、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的()和运算等的学科。
A. 结构B。
关系C。
运算D。
算法10、下面程序段的时间复杂度是(A )。
i=s=0;while(s<n){i++;s+=i;}A. O(n) B。
O(n2)C。
O(log2n)D。
O(n3)11、抽象数据类型的三个组成部分分别为(A)。
A. 数据对象、数据关系和基本操作B. 数据元素、逻辑结构和存储结构C. 数据项、数据元素和数据类型D. 数据元素、数据结构和数据类型12、通常从正确性、易读性、健壮性、高效性等4个方面评价算法的质量,以下解释错误的是()。
数据结构(C语言版)课后习题答案目录第1章绪论 (1)第2章线性表 (5)第3章栈和队列 (13)第4章串、数组和广义表 (26)第5章树和二叉树 (33)第6章图 (43)第7章查找 (54)第8章排序 (65)第1章绪论1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
答案:数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。
如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。
数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。
在有些情况下,数据元素也称为元素、结点、记录等。
数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。
数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。
例如,学生基本信息表中的学号、姓名、性别等都是数据项。
数据对象:是性质相同的数据元素的集合,是数据的一个子集。
例如:整数数据对象是集合N={0,±1,±2,…},字母字符数据对象是集合C={‘A’,‘B’,…,‘Z’, ‘a’,‘b’,…,‘z’},学生基本信息表也可是一个数据对象。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。
逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。
因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
存储结构:数据对象在计算机中的存储表示,也称为物理结构。
抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。
具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。
2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。
数据结构(C语言版)1800道题及答案[完整版]数据结构(C语言版)1800道题及答案[完整版]数据结构1800例题与答案第一章绪论一、选择题(每小题2分)1.算法的计算量的大小称为计算的(B )。
【北京邮电大学2000 二、3 (20/8分)】A.效率 B.复杂性 C.现实性 D.难度2.算法的时间复杂度取决于(C)。
【中科院计算所 1998 二、1 (2分)】A.问题的规模 B.待处理数据的初态 C.A和B D.都不是3.计算机算法指的是(① C ),它必须具备(② B )这三个特性。
① A.计算方法B.排序方法C.解决问题的步骤序列 D.调度方法② A.可执行性、可移植性、可扩充性B.可执行性、确定性、有穷性C.确定性、有穷性、稳定性 D.易读性、稳定性、安全性【南京理工大学1999 一、1(2分)【武汉交通科技大学1996 一、1(4分)】4.一个算法应该是( B )。
【中山大学 1998 二、1(2分)】A.程序 B.问题求解步骤的描述C.要满足五个基本特性 D.A和C.5.下面关于算法说法错误的是( D )【南京理工大学 2000 一、1(1.5分)】A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的6. 下面说法错误的是(C )【南京理工大学2000 一、2 (1.5分)】(1)算法原地工作的含义是指不需要任何额外的辅助空间(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低A.(1) B.(1),(2) C.(1),(4) D.(3)7.从逻辑上可以把数据结构分为( C )两大类。
【武汉交通科技大学 1996 一、4(2分)】A.动态结构、静态结构 B.顺序结构、链式结构C.线性结构、非线性结构 D.初等结构、构造型结构8.以下与数据的存储结构无关的术语是(D )。
数据结构(C语言)【经典题库】含答案数据结构(C语言)【经典题库】含答案数据结构是计算机科学中的重要基础,对于程序员和软件工程师来说,熟练掌握数据结构是必不可少的。
在C语言中,有许多经典的数据结构题目,通过解答这些题目,可以深入理解数据结构的原理和应用。
本文将介绍一些经典的数据结构题目,同时附上详细的答案。
一、数组题目1. 给定一个整型数组arr和一个整数target,找出数组中两个数的和为target的所有组合。
```C#include <stdio.h>void findPairs(int arr[], int n, int target) {int i, j;for (i = 0; i < n - 1; i++) {for (j = i + 1; j < n; j++) {if (arr[i] + arr[j] == target) {printf("%d, %d\n", arr[i], arr[j]);}}}}int main() {int arr[] = {2, 4, 6, 8, 10};int target = 14;int n = sizeof(arr) / sizeof(arr[0]);findPairs(arr, n, target);return 0;}```答案解析:使用两层循环遍历数组中的每对元素,判断它们的和是否等于目标值target,如果是则输出。
时间复杂度为O(n^2)。
2. 给定一个整型数组arr和一个整数k,求出数组中连续子数组的最大和。
```C#include <stdio.h>int maxSubArraySum(int arr[], int n) {int maxSum = arr[0];int currentSum = arr[0];for (int i = 1; i < n; i++) {currentSum = (currentSum + arr[i] > arr[i]) ? currentSum + arr[i] : arr[i];if (currentSum > maxSum) {maxSum = currentSum;}}return maxSum;}int main() {int arr[] = {-2, 1, -3, 4, -1, 2, 1, -5, 4};int n = sizeof(arr) / sizeof(arr[0]);int maxSum = maxSubArraySum(arr, n);printf("最大和为:%d\n", maxSum);return 0;}```答案解析:使用动态规划的思想,定义两个变量`maxSum`和`currentSum`,分别表示当前的最大和和累加和。
数据结构习题c语言版答案数据结构习题C语言版答案在学习数据结构的过程中,习题是不可或缺的一部分。
通过习题的练习,我们可以巩固所学的知识,并且提高解决问题的能力。
在本文中,我将为大家提供一些数据结构习题的C语言版答案,希望能对大家的学习有所帮助。
1. 数组反转题目描述:给定一个整型数组,要求将数组中的元素反转。
```c#include <stdio.h>void reverseArray(int arr[], int size) {int start = 0;int end = size - 1;while (start < end) {int temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}}int main() {int arr[] = {1, 2, 3, 4, 5};int size = sizeof(arr) / sizeof(arr[0]);reverseArray(arr, size);for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}return 0;}```2. 链表反转题目描述:给定一个单链表,要求将链表中的元素反转。
```c#include <stdio.h>#include <stdlib.h>struct Node {int data;struct Node* next;};void reverseLinkedList(struct Node** head) { struct Node* prev = NULL;struct Node* current = *head;struct Node* next = NULL;while (current != NULL) {next = current->next;current->next = prev;prev = current;current = next;}*head = prev;}void printLinkedList(struct Node* head) {while (head != NULL) {printf("%d ", head->data);head = head->next;}}int main() {struct Node* head = NULL;struct Node* second = NULL;struct Node* third = NULL;head = (struct Node*)malloc(sizeof(struct Node)); second = (struct Node*)malloc(sizeof(struct Node)); third = (struct Node*)malloc(sizeof(struct Node));head->data = 1;head->next = second;second->data = 2;second->next = third;third->data = 3;third->next = NULL;printf("Original Linked List: ");printLinkedList(head);reverseLinkedList(&head);printf("\nReversed Linked List: ");printLinkedList(head);return 0;}```3. 栈的实现题目描述:使用数组实现一个栈,并实现栈的基本操作。
经典数据结构面试题(含答案)1. 什么是数据结构?数据结构是计算机存储、组织数据的方式,它能够更有效地存储数据,以便于进行数据检索和修改。
2. 什么是线性表?线性表是一种基本的数据结构,由一组数据元素组成,其中每个元素都有一个前驱和一个后继,除了第一个元素没有前驱,一个元素没有后继。
3. 什么是栈?栈是一种后进先出(LIFO)的数据结构,它允许在一端进行插入和删除操作,通常称为栈顶。
4. 什么是队列?队列是一种先进先出(FIFO)的数据结构,它允许在一端进行插入操作,在另一端进行删除操作,通常称为队头和队尾。
5. 什么是链表?链表是一种由节点组成的数据结构,每个节点包含数据和指向下一个节点的指针。
链表可以分为单向链表、双向链表和循环链表。
6. 什么是树?树是一种非线性数据结构,由节点组成,每个节点有零个或多个子节点。
树可以分为二叉树、平衡树、B树等。
7. 什么是图?图是一种由节点和边组成的数据结构,节点称为顶点,边表示顶点之间的关系。
图可以分为有向图和无向图。
8. 什么是排序算法?排序算法是一种对数据进行排序的方法,常见的排序算法有冒泡排序、选择排序、插入排序、快速排序、归并排序等。
9. 什么是哈希表?哈希表是一种基于哈希函数的数据结构,它通过哈希函数将键值映射到表中一个位置来快速检索数据。
10. 什么是动态规划?动态规划是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。
经典数据结构面试题(含答案)11. 什么是二叉搜索树?二叉搜索树是一种特殊的二叉树,其中每个节点的左子树只包含小于该节点的值,右子树只包含大于该节点的值。
12. 什么是平衡二叉树?平衡二叉树是一种自平衡的二叉搜索树,它通过旋转操作来保持树的平衡,使得树的高度保持在对数级别。
13. 什么是B树?B树是一种自平衡的树数据结构,它保持数据的有序性,并允许搜索、顺序访问、插入和删除的操作都在对数时间内完成。
数据结构c 版习题答案数据结构是计算机科学中的重要基础课程,它主要研究数据的组织、存储和管理方式。
C语言是一种常用的编程语言,也是学习数据结构的重要工具。
在学习数据结构的过程中,习题是不可或缺的一部分,通过解答习题可以帮助我们巩固所学的知识。
下面是一些常见的数据结构C版习题的答案,供大家参考。
一、线性表1. 实现一个顺序表的插入操作。
答案:```cvoid insert(SeqList *list, int index, int value) {if (index < 0 || index > list->length) {printf("插入位置不合法\n");return;}if (list->length >= MAX_SIZE) {printf("顺序表已满\n");return;}for (int i = list->length - 1; i >= index; i--) {list->data[i + 1] = list->data[i];}list->data[index] = value;list->length++;}```2. 实现一个顺序表的删除操作。
答案:```cvoid remove(SeqList *list, int index) {if (index < 0 || index >= list->length) {printf("删除位置不合法\n");return;}for (int i = index; i < list->length - 1; i++) { list->data[i] = list->data[i + 1];}list->length--;}```二、栈和队列1. 实现一个栈的入栈操作。
数据结构(C语言版)习题参考答案数据结构(C语言版)习题参考答案1. 数据结构简介数据结构是计算机科学中重要的概念之一,它关注如何组织和存储数据,以便有效地进行访问和操作。
C语言是一种广泛应用于数据结构实现的编程语言。
本文将提供一些常见数据结构习题的参考答案,帮助读者理解和掌握数据结构的基本概念与实现。
2. 数组数组是一种线性结构,存储具有相同数据类型的元素。
以下是一些数组习题的参考答案:2.1 统计数组中某个元素出现的次数```int countOccurrences(int arr[], int n, int x) {int count = 0;for (int i = 0; i < n; i++) {if (arr[i] == x) {count++;}}return count;}```2.2 查找数组中的最大值和最小值```void findMinMax(int arr[], int n, int* min, int* max) { *min = arr[0];*max = arr[0];for (int i = 1; i < n; i++) {if (arr[i] < *min) {*min = arr[i];}if (arr[i] > *max) {*max = arr[i];}}}```3. 链表链表是一种动态数据结构,每个节点包含数据和指向下一个节点的指针。
以下是一些链表习题的参考答案:3.1 反转链表```Node* reverseLinkedList(Node* head) {Node* prev = NULL;Node* curr = head;while (curr != NULL) {Node* next = curr->next;curr->next = prev;prev = curr;curr = next;}return prev;}```3.2 合并两个有序链表```Node* mergeLists(Node* list1, Node* list2) {if (list1 == NULL) {return list2;}if (list2 == NULL) {return list1;}if (list1->data < list2->data) {list1->next = mergeLists(list1->next, list2);return list1;} else {list2->next = mergeLists(list1, list2->next);return list2;}}```4. 栈和队列栈和队列是两种重要的线性数据结构,栈支持后进先出(LIFO),队列支持先进先出(FIFO)。
Test2-4 个人所得税的计算(if-else-if)#include <iostream>using namespace std;//个人所得税的计算int main(){float income,taxable,tax;cout<<"Please input the Monthly Income:";cin>>income;taxable=income-3500;if(taxable<=0) tax=0;else if(taxable<=1500) tax=taxable*0.03;else if(taxable<=4500) tax=taxable*0.1-105;else if(taxable<=9000) tax=taxable*0.2-555;else if(taxable<=35000) tax=taxable*0.25-1005;else if(taxable<=55000) tax=taxable*0.3-2755;else if(taxable<=80000) tax=taxable*0.35-5505;else tax=taxable*0.45-13505;cout<<"Tax libility is "<<tax<<endl;return 0;}Test2-5 今天星期几(switch case)1>算出year这一年元旦星期几2>根据mouth和day,计算该日期是year这一年的第几天#include <iostream>using namespace std;//计算某天是星期几int main(){int year,mouth,day,week,d;cout<<"请按年月日的方式输入一个日期:"<<endl;cin>>year>>mouth>>day;d = year+(year-1)/4-(year-1)/100+(year-1)/400;week=d%7;d=0;switch(mouth-1){case 11:d+=30;case 10:d+=31;case 9:d+=30;case 8:d+=31;case 7:d+=31;case 6:d+=30;case 5:d+=31;case 4:d+=30;case 3:d+=31;case 2:d+=28;if(year%4==0 && year%100!=0 || year%400!=0) d++; //判断是否是闰年case 1:d+=31;}d+=day;week=(week+(d-1)%7)%7;if(week==0)cout<<year<<"年"<<mouth<<"月"<<day<<"日是星期日"<<endl;elsecout<<year<<"年"<<mouth<<"月"<<day<<"日是星期"<<week<<endl;return 0;}Test2-6 找到最小值和最大值(for)#include <iostream>using namespace std;//找最大数和最小数(循环)int main(){int x,max,min;cout<<"请依次输入5个数(空格隔开):"<<endl;cin>>x; //输入一个数max=min=x;for(int i=2;i<=5;i++) //循环从2开始{cin>>x;if(max<x) max=x;if(min>x) min=x;}cout<<"最大值为MAX="<<max<<", 最小值为MIN="<<min<<endl;return 0;}Test2-7 选票统计(switch-case)#include <iostream>using namespace std;int main(){int sele,zhang,li,wang,nosele,other,num;zhang=li=wang=nosele=other=0;cin>>sele;while(sele!=-1){switch(sele){case 1:zhang++;break; //当输入为1时,为zhang投票case 2:li++;break; //当输入为2时,为li投票case 3:wang++;break;case 0:nosele++;break; //弃权为0case 4:other++;break; //无效票(选择人数超过一)default:cout<<"Input Error!"<<endl;}cin>>sele;}num=zhang+li+wang+nosele+other; //请问弃权和无效的票算不算其中float z,l,w;z=zhang/(float)num;l=li/(float)num;w=wang/(float)num;cout<<"zhang:"<<zhang<<",得票率:"<<z<<endl;cout<<"li:"<<li<<",得票率:"<<l<<endl;cout<<"wang:"<<wang<<",得票率:"<<w<<endl;}Test2-8 逆序数(do-while)#include <iostream>using namespace std;//逆序数的输出(第一个do-while判断是否为非负整数,第二个do-while进行逆序数的转换)int main(){int number,digit;do{cout<<"请输入一个非负整数:";cin>>number;}while(number<0);cout<<number<<"的逆序数是:";do{digit=number%10;number/=10;cout<<digit;}while(number>0);cout<<endl;return 0;}Test2-9 求出最小爱因斯坦阶梯数-方式1(do-while)#include <iostream>using namespace std;//判断最小的爱因斯坦阶梯数int main(){int x=1;do{x++;}while(!(x%2==1 && x%3==2 && x%4==3 && x%5==4 && x%6==5 && x%7==0)); //非常综合的式子cout<<"爱因斯坦的阶梯数为:"<<x<<endl;return 0;}Test2-9-1 求出最小爱因斯坦阶梯数-方式2(while、if-else)#include <iostream>using namespace std;//判断最小的爱因斯坦及阶梯数-方式2int main(){int x=7;while(1){if(x%2==1 && x%3==2 && x%4==3 && x%5==4 && x%6==5 && x%7==0) break;else x+=7;}cout<<"爱因斯坦的阶梯数为:"<<x<<endl;return 0;}Test2-10 z字排列的数表,输入一个数,找出改位置的数(for)#include <iostream>using namespace std;//z字排列的数表,输入一个数,找出改位置的数int main(){int i,n,k;cin>>n;for(i=1;i<=n;i++){for(int j=1;j<=n;j++)cout<<i<<"/"<<j<<" ";cout<<endl;}for(i=1;i*(i+1)/2<n;i++);k=n-(i*(i-1)/2);if(i%2!=0)cout<<i+1-k<<"/"<<k<<endl;elsecout<<k<<"/"<<i+1-k<<endl;return 0;}Test2-11 将1元兑换成1分,2分,5分的硬币,共有多少种兑换的方法(for两层)#include <iostream>using namespace std;//人民币兑换(将1元兑换成1分,2分,5分的硬币,共有多少种兑换的方法)int main(){int five,two,count;count=0;for(five=0;five<=100/5;five++){for(two=0;two<=(100-5*five)/2;two++)count++;}cout<<"共有"<<count<<"种兑换方法!"<<endl;return 0;}Test2-12 分解质因数(while、if-else)#include <iostream>using namespace std;//分解质因数int main(){int n,i;cout<<"Please input a number:";cin>>n;cout<<n<<"=";i=2;while(i<n){if(n%i==0){cout<<i<<"*";n=n/i;}else i++;}cout<<n<<endl;return 0;}Test2-13 10000内完全数的枚举(for)#include <iostream>#include <math.h>using namespace std;//求10000以内的完全数(真因子之和为次数本身)int main(){int i,n,s,cnt=0;for(n=2;n<=10000;n++){s=1;for(i=2;i<=sqrt(n);i++)if(n%i==0)if(i!=n%i) s=s+i+n/i;else s+=i;if(s==n){cnt++;cout<<"第"<<cnt<<"个完数";cout<<n<<" =1";for(i=2;i<=sqrt(n);i++)if(n%i==0)cout<<"+"<<i<<"+"<<n/i;cout<<endl;}}return 0;}Test2-14 求[100,200]之间质数#include <iostream>#include <cmath>//求[100,200]之间的质数using namespace std;int main(){int i,k,m,s;for(m=101;m<=200;m=m+2){k=sqrt(m);s=0;for(i=2;i<=k;i++)if(m%i==0){s=1;break;}if(s==0) cout<<m<<" ";}cout<<endl;return 0;}*Test2-15 乘积全是1(do-while)#include <iostream>using namespace std;//键盘输入一个奇数p(末尾不是5),总有一个数t使得p*t=1111 (111)int main(){int p,a,b,r,t,n;while(1) //判断输入的数是否满足要求{cout<<"输入自然数p,最后一位是3或5或7或9:"<<endl;cout<<"p=";cin>>p;if(p%2!=0&&p%5!=0) break;}a=0; n=0;while(a<p) //构造一个刚好>=p的一个全为1的数a{a=a*10+1;n++;}t=0;cout<<"s=";do //此处代码深奥,王细细理解(以p=3为例){b=a/p;cout<<b;t++;if(t%50==0) cout<<endl<<" ";r=a % p;a=r * 10+1;n++;}while(r>0);cout<<endl<<"n="<<--n<<endl;return 0;}*Test2-16 尼科彻斯定理:(for)#include <iostream>using namespace std;//尼科彻斯定理:任何一个整数的立方都可以表示为一连串连续的奇数之和int main(){int n,num,sum,i,j,flag;cout<<"请输入一个待验证的自然数:";cin>>n;num = n*n*n;flag=0;for(i=1;i<num && flag==0;i+=2){sum=0;for(j=i;j<num;j+=2){sum+=j;if(sum == num){cout<<num<<"="<<i<<"+"<<i+2<<"+...+"<<j<<endl;flag=1;break;}else if(sum > num) break;}}return 0;}Test2-17 末尾0的个数:(for-while)#include <iostream>using namespace std;//对任意给定的正整数你,求n!中末尾0的个数int main(){int i,j,k=0,n;cin>>n;for(i=5;i<=n;i=i+5){j=i;while(j%5==0){k++; j=j/5;}}cout<<n<<"!末尾0的个数为"<<k<<endl;return 0;}递推算法:包括顺推(条件-->结果)和逆推(结果-->条件)Test2-18 走楼梯(for)#include <iostream>using namespace std;//走楼梯,按照1,2,3的阶梯数走完n个阶梯的方法有多少种。