【多重循环】习题

沈阳航空航天大学习题的整理,仅供参考。

1.九九乘法表

【问题描述】输出乘法表。

【输入形式】输入要输出的乘法表行数。

【输出形式】输出相应的乘法表。

【样例输入】3

【样例输出】

1*1=1

1*2=2 2*2=4

1*3=3 2*3=6 3*3=9

【样例说明】

1、输入的整数应在1-9之间;

2、输出同一行的两个算式之间用两个空格隔开。

#include<stdio.h>
int main()
{
	int i, h, l;
	scanf("%d", &h);
	for (i = 1; i <= h; i++)
	{
		for (l = 1; l <= i; l++)
			printf("%d*%d=%d  ", l, i, i * l);
		printf("\n");
	}
	return 0;
}

2.判断强数

【问题描述】强数(strong number)的意思就是,一个正整数的各位阶乘之和等于它自身。输入任一个正整数,判断它是否是强数,是则输出'y',否则'n'。

【输入形式】一个正整数

【输出形式】y||n

【样例1输入】145

【样例1输出】y

【样例2输入】200

【样例2输出】n

#include <iostream>
#include <stdio.h>
int main()
{
	int n, i, p, sum, t;
	scanf("%d", &n);
	t = n;
	while (t != 0)
	{
		p = t % 10;
		for (i = p - 1; i > 1; i--)
			p = p * i;
		sum += p;
		t /= 10;
	}
	if (n == sum)
		printf("y");
	else printf("n");
	return 0;
}

3.取任意个红白黑球,共有多少种解决方案?

【问题描述】从3个红球、5个白球和6个黑球中任意取出M个球,其中必须至少有1个红球,输出共有多少种可能方案。

【输入形式】输入整数M

【输出形式】解决方案的数目sum或错误信息”The value of M is wrong!"

【样例输入】8

【样例输出】sum=17

【样例输入】1

【样例输出】sum=1

【样例输入】-2

【样例输出】The value of -2 is wrong!

【样例输入】0

【样例输出】The value of 0 is wrong!

【样例输入】15

【样例输出】The value of 15 is wrong!

#include<stdio.h>
int main()
{
	int M, h, b, e, sum = 0;
	scanf("%d", &M);
	if (M < 1 || M > 14)
		printf("The value of %d is wrong!", M);
	else
	{
		for (h = 1; h <= 3; h++)
			for (b = 0; b <= 5; b++)
				for (e = 0; e <= 6; e++)
					if (h + b + e == M)
						sum++;
		printf("sum=%d", sum);
	}
	return 0;
}

4.求 [2,n] 区间所有素数之和

【问题描述】输入不小于2的正整数n,求 [2,n] 区间所有素数之和。其中n不大于100。

【输入形式】1个整数

【输出形式】1个整数

【样例输入】5

【样例输出】10

(1)使用sqrt

#include <iostream>
#include <stdio.h>
#include <math.h>
int main()
{
    int m, i, k, n, sum = 0;
    scanf("%d", &n);
    for (m = 2; m <= n; m++)//1
    {
        k = sqrt((double)m);
        for (i = 2; i <= k; i++)
            if (m % i == 0)
                break;//2
        if (i >= k + 1)
            sum = sum + m;
    }
    printf("和是%d", sum);
	return 0;
}

(2)不使用sqrt

#include<stdio.h>
int main()
{
	int n, i, k, sum = 0;
	scanf("%d", &n);
	for (i = 2; i <= n; i++)
	{
		for (k = 2; k < i; k++)
		{
			if (i % k == 0)//不是素数
				break;
		}
		if (k == i)//是素数
			sum += i;
	}
	printf("%d", sum);
	return 0;
}

5.百钱百鸡问题

【问题描述】原始题目:一只公鸡 5 文钱,一只母鸡 3 文钱,三只小鸡 1 文钱,用 100 文钱买 100 只鸡,请问公鸡,母鸡,小鸡各多少只?现要求钱数和要买的鸡的数量由键盘输入,列举出所有可能的购买情况。

【输入形式】输入两个正整数 m 和 c,分别表示准备的钱数和要买的鸡的总量。

【输出形式】输出所有可能的购买情况(每种购买情况占一行,按照公鸡数量递增显示;每行显示顺序为公鸡数量、母鸡数量、小鸡数量;不考虑无解情况)。

【样例输入】100 100

【样例输出】备注:输出时行与行之间无空行。

cock=4 hen=18 chicken=78

cock=8 hen=11 chicken=81

cock=12 hen=4 chicken=84

【样例说明】友情提示:购买方案不会出现 0 只,小鸡数量一定是 3 的倍数。可以用三重循环,但也完全可以用二重循环!

#include<stdio.h>
int main()
{
	int m, c, cock, hen, chicken;
	scanf("%d%d", &m, &c);
	for (cock = 1; cock <= m / 5; cock++)
	{
		for (hen = 1; hen <= m / 3; hen++)
		{
			chicken = c - cock - hen;
			if (5 * cock + 3 * hen + chicken / 3 == m && chicken % 3 == 0)
				printf("cock=%d hen=%d chicken=%d\n", cock, hen, chicken);
		}
	}
	return 0;
}

6.组成三位数问题

【问题描述】1、2、3、4、5组成互不相同且无重复数字的三位数。

【输出形式】输出的三位数按由小到大排序,数据之间用两个空格隔开。

#include<stdio.h>
int main()
{
	int g, s, b;
	for (b = 1; b <= 5; b++)
		for (s = 1; s <= 5; s++)
			for (g = 1; g <= 5; g++)
				if (b != s && s != g && b != g)
					printf("%d  ", b * 100 + s * 10 + g);
	return 0;
}
  • 14
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lnk_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值