C语言 编程题

C语言学习!

1.小明上课需要走n阶台阶,他每次可以选择走一阶或者走两阶,他一共有多少种走法?

**输入描述:**输入包含一个整数n(1 ≤ n ≤30)

**输出描述:**输出一个整数,即小明可以走的方法数。

代码示例:

cpp 复制代码
#include <stdio.h>

int fig(int n)
{
	if (n <= 2)
	{
		return n;
	}
	else
	{
		return fig(n - 1) + fig(n - 2);
	}
}

int main()
{
	int n = 0;
	scanf("%d", &n);//输入
	int ret = fig(n);//计算
	printf("%d\n", ret);//输出
	return 0;
}

运行结果:

cpp 复制代码
2
2
cpp 复制代码
10
89

2.有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。

**数据范围:**序列长度和序列中的值都满足 1 ≤ n ≤ 50

输入描述:

  • 第一行输入一个整数(1 ≤ n ≤ 50)。
  • 第二行输入N个整数,输入用空格分隔的N个整数。
  • 第三行输入想要进行删除的一个整数。

**输出描述:**输出为一行,删除指定数字之后的序列。

代码示例:

cpp 复制代码
#include <stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);//接收n个数字
	int arr[50] = { 0 };
	int i = 0;
	for (i = 0; i < n; i++)
	{
		scanf("%d", &arr[i]);
	}
	int del = 0;
	scanf("%d", &del);//接收删除的数据
	int j = 0;//j作为下标锁定的位置,用来存放不删除的数据
	for (i = 0; i < n; i++)
	{
		if (arr[i] != del)
		{
			arr[j++] = arr[i];
		}
	}
	for (i = 0; i < j; i++)//输出
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

运行结果:

cpp 复制代码
6
5 7 6 9 5 8
5
7 6 9 8

3.输出n个成绩,换行输出n个成绩中最高分和最低分的差。

输入描述:

  • 两行。第一行为n,表示n个成绩,不会大于10000.
  • 第二行为n个成绩(整数表示,范围0~100),以空格隔开。

**输出描述:**一行,输出n个成绩中最高分数和最低分数的差。

代码示例:

cpp 复制代码
#include <stdio.h>
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 = 0;
	int mix = 100;
	for (i = 0; i < n; i++)//比较出最大值和最小值
	{
		if (arr[i] < mix)
		{
			mix = arr[i];
		}
		if (arr[i] > max)
		{
			max = arr[i];
		}

	}
	printf("%d", max - mix);//输出

	return 0;
}

运行结果:

cpp 复制代码
6
66 88 60 87 99 80
39

4.字母大小写转换,有一个字符,判断它是否为大写字母,如果是,将它转换成小写字母;反之则转换为大写字母。

**输入描述:**多组输入,每一行输入一个字母。

**输出描述:**针对每组输入,输出单独占一行,输出字母的对应形式。

代码示例1:

cpp 复制代码
#include <stdio.h>
int main()
{
	char n = 0;
	while(scanf("%c", &n)==1)
	{
		if (n >= 'a' && n <= 'z')
		{
			printf("%c\n", n - 32);
		}
		else if (n >= 'A' && n <= 'Z')
		{
			printf("%c\n", n + 32);
		}
	}
	return 0;
}

运行结果:

a
A
G
g
f
F
H
h

代码示例2:

cpp 复制代码
#include <ctype.h>
#include <stdio.h>
int main()
{
	char n = 0;
	while(scanf("%c", &n)!=EOF)
	{
		if (islower(n))//islower函数判断是否是小写字母,是返回1
		{
			printf("%c\n", toupper(n));//toupper函数可将小写字母转大写
		}
		else if (isupper(n))//isupper函数判断是否是大写字母,是返回1
		{
			printf("%c\n", tolower(n));//tolower函数可将大写字母转小写
		}
	}
	return 0;
}

运行结果:

cpp 复制代码
a
A
b
B
G
g
T
t

分析:scanf函数读取成功时,返回读取的数据个数;读取失败时,返回EOF。


5.判断输入的字符是不是字母。

**输入描述:**多组输入,每一行输入一个字符。

**输出描述:**针对每组输入,输出但独占一行,判断输入字符是否为字母,输出内容详见输出样例。

输出样例:

cpp 复制代码
a
a is an alphabet.
*
* is not an alphabet.

代码示例1:

cpp 复制代码
#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( );//用于处理输入字符末尾的\n
	}
	return 0;
}

运行结果:

cpp 复制代码
5
5 is not an alphabet.
D
D is an alphabet.
a
a is an alphabet.
*
* is not an alphabet.

分析:

getchar( );用于处理输入字符末尾的\n

代码示例2:

cpp 复制代码
#include <stdio.h>
int main()
{
	char ch = 0;
	while (scanf(" %c", &ch) == 1)//%c前面加空格,是为了跳过下一个字符之前的所有空白字符\n
	{
		if (isalpha(ch))// isalpha函数用于判断是否为字母,是输出1.
		{
			printf("%c is an alphabet.\n", ch);
		}
		else
		{
			printf("%c is not an alphabet.\n", ch);
		}
	}
	return 0;
}

运行结果:

cpp 复制代码
#
# is not an alphabet.
G
G is an alphabet.
c
c is an alphabet.
9
9 is not an alphabet.

分析:

scanf中%c前面加空格,是为了跳过下一个字符之前的所有空白字符\n

isalpha函数用于判断是否为字母,是输出1.


6.变种水仙花数:把任意的数字从中间拆分成两个数字,如1461可拆分为1和461;14和61;146和1,若所有拆分后的乘积之和等于自身则是一个水仙花数。

1461=1*461 + 14*61 + 146*1

求出5位数中的所有水仙花数。

代码示例:

cpp 复制代码
#include <stdio.h>
#include <math.h>

int main()
{
	int i = 0;
	for (i = 10000; i < 99999; i++)
	{
		int j = 0;
		int sum = 0;
		for (j = 1; j <= 4; j++)
		{
			int k = (int)pow(10, j);
			sum += (i / k) * (i % k);
		}
		if (sum == i)
		{
			printf("%d ", i);
		}
		
	}
	return 0;
}

运行结果:

cpp 复制代码
14610 16420 23610 34420 65500
相关推荐
yannan201903137 分钟前
【算法】(Python)动态规划
python·算法·动态规划
埃菲尔铁塔_CV算法9 分钟前
人工智能图像算法:开启视觉新时代的钥匙
人工智能·算法
EasyCVR9 分钟前
EHOME视频平台EasyCVR视频融合平台使用OBS进行RTMP推流,WebRTC播放出现抖动、卡顿如何解决?
人工智能·算法·ffmpeg·音视频·webrtc·监控视频接入
linsa_pursuer10 分钟前
快乐数算法
算法·leetcode·职场和发展
小芒果_0112 分钟前
P11229 [CSP-J 2024] 小木棍
c++·算法·信息学奥赛
qq_4340859013 分钟前
Day 52 || 739. 每日温度 、 496.下一个更大元素 I 、503.下一个更大元素II
算法
Beau_Will13 分钟前
ZISUOJ 2024算法基础公选课练习一(2)
算法
XuanRanDev16 分钟前
【每日一题】LeetCode - 三数之和
数据结构·算法·leetcode·1024程序员节
gkdpjj17 分钟前
C++优选算法十 哈希表
c++·算法·散列表
代码猪猪傻瓜coding18 分钟前
力扣1 两数之和
数据结构·算法·leetcode