#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
//---------------------------------------------------------------------------- 编程题 1:小乐乐走台阶
小乐乐上课需要走n阶台阶,因为她腿比较长,所以每次可以选择走1阶或者2阶,那么一共有多少种走法
输入 整数 1<=n<=30
输出 整数 走法数
// fib(10)=fib(9)+fib(8)
// =fib(8)+fib(7) + fib(7)+fib(6)
// =fib(7)+fib(6) + fib(6)+fib(5) + fib(6)+fib(5) + fib(5)+fib(4)
int fib(int n)
{
if (n <= 2)
return n;
else
return fib(n - 1) + fib(n - 2);
}
int main()
{
int n = 0;
scanf("%d", &n);
//计算(递归)
int ret = fib(n); //调用函数
//输出
printf("%d\n", ret);
return 0;
}
//-------------------------------------------------------------------------------- 编程题 2:序列中删除指定数字
有一个整数序列(可能有重复的整数), 现删除指定的某一个整数, 输出删除指定数字之后的序列, 序列中未被删除数字的前后位置没有发生改变。
数据范围 : 序列长度和序列中的值都满足1≤n≤50
输入描述 : 第一行输入一个整数(0≤N≤50)。
第二行输入N个整数, 输入用空格分隔的N个整数。
第三行输入想要进行删除的一个整数。
输出描述 :输出为一行, 删除指定数字之后的序列。
例如
输入:6
1 2 3 4 5 9
4
输出:1 2 3 5 9
int main()
{
int n = 0;
scanf("%d", &n);
//接收n 个数字
int arr[50] = { 0 }; //不超过50个
int i = 0;
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
//要删除的值
int dele = 0;
scanf("%d", &dele);
//删除
int j = 0;
for (i = 0; i < n; i++)
{
if (arr[i] != dele)
{
arr[j] = arr[i];
j++;
//arr[j++] = arr[i]; // j++ j先使用,后++,与上述两行代码意思一样
}
}
//输出删除指定数字之后的序列
for (i = 0; i < j; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
//--------------------------------------------------------------------- 编程题 3:最高分与最低分之差
输入n个成绩,换行输出最高分和最低分之差
输入两行 第一行 n 表示n个成绩,不大于10000
第二行 n 个成绩 整数表示(0~100),以空格隔开
输出 一行,最高分与最低分之差//---------------------------------------------方法1
int main()
{
int n = 0;
scanf("%d", &n);
//接收n 个数字
int arr[10000] = { 0 }; //不超过50个
int i = 0;
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
//找出最大值
int max = arr[0];
for (i = 1; i < n; i++)
{
if (arr[i] > max)
{
max = arr[i];
}
}
//找出最小值
int min = arr[0];
for (i = 1; i < n; i++)
{
if (arr[i] < min)
{
min = arr[i];
}
}
//输出
printf("%d\n", max - min);
return 0;
}
//---------------------------------------------方法2:优化
int main()
{
int n = 0;
scanf("%d", &n);
int arr[10000] = { 0 };
int i = 0;
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
int max = arr[0];
int min = arr[0];
for (i = 1; i < n; i++)
{
if (arr[i] > max)
max = arr[i];
if (arr[i] < min)
min = arr[i];
}
printf("%d\n", max - min);
return 0;
}
//---------------------------------------------方法3:优化plus
int main()
{
int n = 0;
scanf("%d", &n);
int arr[10000] = { 0 };
int i = 0;
int max = 0;
int min = 100;
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
if (arr[i] > max)
max = arr[i];
if (arr[i] < min)
min = arr[i];
}
printf("%d\n", max - min);
return 0;
}