用C语言写一下这道题
时间: 2023-08-16 18:06:30 浏览: 47
好的,下面是使用C语言实现的代码:
```c
#include <stdio.h>
int climbStairs(int n) {
if (n == 0 || n == 1) {
return 1;
}
if (n == 2) {
return 2;
}
int dp[n+1];
dp[0] = dp[1] = 1;
dp[2] = 2;
for (int i = 3; i <= n; i++) {
dp[i] = dp[i-1] + dp[i-2] + dp[i-3];
}
return dp[n];
}
int main() {
int n = 10;
int result = climbStairs(n);
printf("上 %d 级台阶的方案数为 %d\n", n, result);
return 0;
}
```
这段代码中,我们通过一个循环计算出了 dp 数组的每个元素,最终返回 dp[n] 即可。
相关问题
用c语言写一个选择题系统
好的,下面是一个简单的选择题系统的C语言代码示例:
```c
#include <stdio.h>
int main() {
char answers[] = {'A', 'B', 'C', 'D', 'A', 'B', 'C', 'D', 'A', 'B'};
char student_answers[10];
int score = 0;
printf("请依次输入10道选择题的答案(A/B/C/D):\n");
for (int i = 0; i < 10; i++) {
scanf(" %c", &student_answers[i]);
if (student_answers[i] == answers[i]) {
score += 10;
}
}
printf("你的得分是:%d\n", score);
return 0;
}
```
这个选择题系统中,正确答案存储在一个字符数组中,学生的答案也存储在一个字符数组中,并且在输入学生的答案时进行比较,如果答案正确,则加10分。最后输出学生的总得分。
建立一个任意类型数据构成的顺序表,根据用户输入的查找值,使用不同的方法实现顺序表的查找。请用c语言写出这道题的完整代码
好的,这是完整的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int *data; // 指向存储数据的数组
int length; // 当前顺序表的长度
int maxsize; // 顺序表的最大容量
} SqList;
// 初始化顺序表
void init(SqList *L, int maxsize) {
L->data = (int *) malloc(maxsize * sizeof(int));
L->length = 0;
L->maxsize = maxsize;
}
// 插入元素
void insert(SqList *L, int value) {
if(L->length == L->maxsize) {
printf("顺序表已满,无法插入!\n");
return;
}
L->data[L->length] = value;
L->length++;
}
// 线性查找
int search(SqList L, int key) {
int i;
for(i = 0; i < L.length; i++) {
if(L.data[i] == key) {
return i;
}
}
return -1; // 如果没找到,返回-1
}
// 二分查找
int binary_search(SqList L, int key) {
int low = 0;
int high = L.length - 1;
while(low <= high) {
int mid = (low + high) / 2;
if(L.data[mid] == key) {
return mid;
} else if(L.data[mid] < key) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1; // 如果没找到,返回-1
}
int main() {
int i, n, value, key, pos;
SqList L;
printf("请输入顺序表的最大容量:");
scanf("%d", &n);
init(&L, n);
printf("请输入%d个元素:\n", n);
for(i = 0; i < n; i++) {
scanf("%d", &value);
insert(&L, value);
}
printf("请输入要查找的值:");
scanf("%d", &key);
pos = search(L, key);
if(pos != -1) {
printf("线性查找:元素%d在顺序表中的位置是%d\n", key, pos + 1);
} else {
printf("线性查找:元素%d不在顺序表中\n", key);
}
pos = binary_search(L, key);
if(pos != -1) {
printf("二分查找:元素%d在顺序表中的位置是%d\n", key, pos + 1);
} else {
printf("二分查找:元素%d不在顺序表中\n", key);
}
return 0;
}
```
代码中,我们先定义了 `SqList` 结构体来表示顺序表,然后实现了初始化、插入、线性查找和二分查找等函数。在 `main()` 函数中,我们通过输入顺序表的元素来初始化顺序表,并输入要查找的值,然后分别使用线性查找和二分查找来查找该值,并输出查找结果。
注意:由于本题要求建立任意类型数据构成的顺序表,因此可以将 `SqList` 结构体中的 `int` 类型改为其他数据类型。另外,二分查找的前提是顺序表必须是有序的。