1.小乐乐走台阶
小乐乐上课需要走n阶台阶,因为他腿比较长,所以每次可以选择走一阶或者走两阶,那么他一共有多少种走法?
-
输入描述:
输入包含一个整数n (1 ≤ n ≤ 30) -
输出描述:
输出一个整数,即小乐乐可以走的方法数。
假设
n=1 有1种走法
n=2 有2种走法
n>2时(具体走法可以自己试一下)
n=3 有3种走法 -> (1)+(2)
n=4 有5种走法 -> (2)+(3)
以此类推当有n阶台阶时,有(n-1)+(n-2)种方法,可以看出是个斐波那契数列问题
#include <stdio.h>
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 m = fib(n);
printf("%d\n", m);
return 0;
}
2.序列中删除指定的数字
题目描述
有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。
输入描述:
第一行输入一个整数(0≤N≤50)。
第二行输入N个整数,输入用空格分隔的N个整数。
第三行输入想要进行删除的一个整数。
输出描述:
输出为一行,删除指定数字之后的序列。
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int arr[50];
int i = 0;
for (i = 0; i < n; i++)
{
scanf("%d ", &arr[i]);
}
int del = 0;
int j = 0;
scanf("%d", &del);
for (i = 0; i < n; i++)
{
if (arr[i] != del)
{
arr[j] = arr[i];
j++;
}
}
for (i = 0; i < j; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
3.最高分与最低分之差
输入n个成绩,换行输出n个成绩中最高分数和最低分数的差。
输入描述:
两行,第一行为n,表示n个成绩,不会大于10000。
第二行为n个成绩(整数表示,范围0~100),以空格隔开。
输出描述:
一行,输出n个成绩中最高分数和最低分数的差。
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int arr[100];
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", max - min);
return 0;
}
4.字母大小写转换
#include <stdio.h>
int main()
{
char ch = 0;
while (scanf("%c", &ch) == 1)
{
if (ch >= 'a' && ch <= 'z')
{
printf("%c\n", ch - 32);
}
else if (ch >= 'A' && ch <= 'Z')
{
printf("%c\n", ch + 32);
}
}
return 0;
}
5.判断是否为字母
#include <stdio.h>
int main()
{
char ch = 0;
while (scanf("%c", &ch) == 1)
{
if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))
{
printf("%c is an alphabet.\n", ch);
}
else
{
printf("%c is not an alphabet.\n", ch);
}
getchar();
}
return 0;
}
6.最高分数
#include <stdio.h>
int main()
{
int i = 0;
int score = 0;
int max = 0;
for (i = 0; i < 3; i++)
{
scanf("%d", &score);
if (score > max)
{
max = score;
}
}
printf("%d", max);
return 0;
}
7.变种水仙花数
#include <stdio.h>
#include <math.h>
int main()
{
int i = 0;
for (i =10000; i <= 99999; i++)
{
int sum = 0;
int j = 0;
for (j = 1; j <= 4; j++)
{
int k = (int)pow(10, j);
sum = sum+((i / k) * (i % k));
}
if (sum == i)
{
printf("%d ", i);
}
}
return 0;
}