7个题

  1. 求三个数中的最大值
  2. 闰年判断
  3. 简单数数小木块
  4. 统计偶数个数
  5. 回文数判断
  6. 找数
  7. 斐波那契数列

1.求三个数中的最大值

*试题描述*

由键盘上输入三个整数,请输出其中的最大值。

*输入*

输入三个整数,邻近两数之间用一个空格隔开。且保证整数属于int范围。

*输出*

输出三个整数中最大的一个。

*输入示例*

1 35 -47

*输出示例*

35

*数据范围*

输入和输出均为int范围的整数

#include <stdio.h>
int main()
{
	int a, b, c;
	scanf("%d%d%d", &a, &b, &c);

	printf("%d\n", a>b ? (a>c?a:c) : (b>c?b:c));

	return 0;
}

2.闰年判断

*试题描述*

通常说:“四年一闰,百年不闰,四百年再闰”。请你判断一个年份是否为闰年?

*输入*

输入一个正整数n,且0 < n <= 30000。

*输出*

如果为闰年则输出“TRUE”,否则输出“FALSE”(不输出引号)。

*输入示例*

2000

*输出示例*

TRUE

*数据范围*

对于100%的数据,0 < n <= 30000

#include <stdio.h>
int main()
{
	int n;
	scanf("%d", &n);

	puts(n % 4 == 0 && n % 100 != 0 || n % 400 == 0 ? "TRUE" : "FALSE");

	return 0;
}

3.简单数数小木块

*试题描述*

在墙角堆放着一堆完全相同的正方体小木块,如下图所示:
image

因为木块堆得实在是太有规律了,你只要知道某一层的层号(从上向下编号,层号从1开始),就可以计算该层木块的数量了。由键盘输入正整数n表示层号,请你计算该层木块的数量。

*输入*

输入一个正整数n,表示这堆小木块中某一层的层号,已知1 <= n <= 100。

*输出*

输出一个整数,表示这层小木块的数量,值在int范围内。

*输入示例*

5

*输出示例*

15

*数据范围*

对于100%的数据,1 <= n <= 100

#include <stdio.h>
int main()
{
	int n;
	scanf("%d", &n);

	int sum = 0;
	for(int i = 1; i <= n; i++)
		sum += i;

	printf("%d\n", sum);

	return 0;
}

4.统计偶数个数

*试题描述*

请统计输入的n个整数中,偶数的个数!

*输入*

输入包含两行:
第一行为一个正整数n(0 < n < 10000)。
第二行为n个整数,邻近两数之间用一个空格隔开。

*输出*

输出一个整数,代表偶数的个数。

*输入示例*

3
3 1 2

*输出示例*

1

*数据范围*

对于100%的数据,0 < n < 10000,所有整数均在int范围

#include <stdio.h>
int main()
{
	int n;
	scanf("%d", &n);

	int a, count = 0;
	for(int i = 0; i < n; i++)
	{
		scanf("%d", &a);
		if((a % 2) == 0)
			count++;
	}

	printf("%d\n", count);

	return 0;
}

5.回文数判断

*试题描述*

“回文数”是一种数字。如:98789,这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字就是回文数。
由键盘输入正整数n,请你判断该数是否为回文数,是输出“TRUE”,否则输出“FALSE”。

*输入*

输入一个正整数n,且10 <= n <= 2000000。

*输出*

根据题意输出“TRUE”或“FALSE”(不输出引号)。

*输入示例1*

11

*输出示例1*

TRUE

*输入示例2*

1234321

*输出示例2*

TRUE

*输入示例3*

173

*输出示例3*

FALSE

*数据范围*

对于100%的数据,10 <= n <= 2000000

#include <stdio.h>
int main()
{
	char str[200];
	gets(str);

	int len = 0;
	while(str[len] != 0)
		len++;

	for(int i = 0; i < len / 2; i++)
	{
		if(str[i] != str[len-i-1])
		{
			puts("FALSE");

			return 0;
		}
	}

	puts("TRUE");

	return 0;
}

6.找数

*试题描述*

数512具有这样的性质,它各位数字之和的三次方正好是原数512,即512 =(5 + 1 + 2)3。
由键盘输入两个正整数m和n,请你输出m和n之间所有符合条件的数。其中m和n是两位至四位的自然数(10 <= m <= n <= 9999)。

*输入*

输入两个正整数m和n,用一个空格隔开(10 <= m <= n <= 9999)。

*输出*

输出若干行,每个符合条件的数占一行。请按照从小到大的顺序输出。

*输入示例*

500 520

*输出示例*

512

*数据范围*

对于100%的数据,10 <= m <= n <= 9999

#include <stdio.h>
int main()
{
	int m, n;
	scanf("%d%d", &m, &n);

	for(int i = m; i <= n; i++)
	{
		int j = i, sum = 0;
		for(; j > 0;)
		{
			sum += j % 10;
			j /= 10;
		}

		if(sum * sum * sum == i)
			printf("%d\n", i);
	}

	return 0;
}

7.斐波那契数列

*试题描述*

斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、34……
这个数列从第三项开始,每一项都等于前两项之和。请你输出斐波那契数列的前N项(0 < N < 30)。

*输入*

输入一个整数N。

*输出*

输出斐波那契数列的前N项,相邻两项用一个空格隔开。

*输入示例*

8

*输出示例*

1 1 2 3 5 8 13 21

*数据范围*

对于100%的数据,0 < N < 30

#include <stdio.h>
int main()
{
	int N;
	scanf("%d", &N);

	if(N <= 1)
		puts("1");
	else if(N == 2)
		puts("1 1");
	else
	{
		printf("1 1 ");
		int a = 1, b = 1;
		for(int i = 2; i < N; i++)
		{
			int c = a + b;
			printf("%d ", c);
			a = b;
			b = c;
		}
	}

	return 0;
}
posted @ 2022-01-19 16:10  早晨9点  阅读(148)  评论(0)    收藏  举报