一些练习题

本文包含一系列编程题目,涉及计算走台阶的不同方式(斐波那契数列)、从整数序列中删除特定数字、找出一组成绩的最高分与最低分之差、实现字母大小写转换、判断字符是否为字母以及找到特定范围内的变种水仙花数。这些题目涵盖了基础算法和数据处理的常见问题。
摘要由CSDN通过智能技术生成

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小丁孤孤单单

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值