第五章.循环结构程序设计

第五章.循环结构程序设计

(1)计算并输出1!+2!+…+n!(其中n<16)。

int main() {
	int i, n = 16, sum = 0;
	for (i = 1; i < n; i++) {
		sum = sum + (i * i);
	}
	printf("和:%d", sum);
	return 0;
}

在这里插入图片描述

(2)输入1000以内的所有完数。“完数”是指一个数的因子之和等于自身。

int main() {
	int i, j, sum;
	printf("1000以内的完数有:");
	for (i = 1; i <= 1000; i++) {
		sum = 0;
		for (j = 1; j <= i; j++) {
			if (i % j == 0 && i != j)
				sum += j;
		}
		if (i == sum)
			printf("%d ", i);
	}
	return 0;
}

在这里插入图片描述

(3)输入两个正整数m和n,计算并输出其最大公约数。

int min(int x, int y) {
	if (x < y)
		return x;
	else
		return y;

}

int main() {
	int m, n, k = 1, o;
	printf("输入两数:");
	scanf("%d %d", &m, &n);
	o = min(m, n);
	for (int i=2;i<=o; i++) {
		if (m % i == 0 && n % i == 0) {
			k = i;
			continue;
		}
	}
	printf("最大公约数:%d", k);
	return 0;
}

在这里插入图片描述

(4)一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下,再反跳。求它再第8次落地时共经过多少米,第8次反弹多高。

int main() {
	int m = 0;
	float n = 100, count = 100;
	printf("第几次:");
	scanf("%d", &m);
	for (int i = m; i > 1; i--) {
		n = n / 2;
		count += n * 2;
	}
	n = n / 2;
	printf("第%d次落地共经过:%fm\n第%d次反弹:%fm", m, count, m, n);
	return 0;
}

在这里插入图片描述

(5)输入一行字符,分别统计其中英文字母、数字和其他字符的个数。

他人:while实现

(6)从键盘输入任意个整数,以-888结束(不计入),计算并输出其中的最大数和最小数。

int main() {
	printf("输入任意个整数:\n");
	int n = 0, M = 0, m = 0;
	do
	{
		scanf("%d", &n);
		if (n != -888) {
			M = n > M ? n : M;
			m = n < m ? n : m;
		}
	} while (n != -888);
	printf("最大数:%d\n最小数:%d", M, m);
	return 0;
}

在这里插入图片描述

(7)要将100元钱换成1元、5元和10元的零钱,每种零钱的张数大于0,且为5的倍数,编程输出所可能的换法。

int main() {
	int a = 5, b = 5, c = 5;
	for (; a < 10; a += 5) {
		for (b = 5; b < 20; b += 5) {
			c = (100 - 10 * a - 5 * b);
			if (c % 5 == 0 && c>1) {
				if (10 * a + 5 * b + c == 100)
					printf("%d张1元、%d张5元、%d张10元\n", c, b, a);
			}
		}
	}
}

在这里插入图片描述

(8)百钱百鸡问题。用100钱买100只鸡,公鸡一只五钱,母鸡一只三钱,小鸡三只一钱,编程输出所有可能的买法(每种鸡至少一只)。

int main() {
	int a = 1, b = 1, c = 1;//只数
	//for (; a <= 20; a++) {
	//	for (b=1; b <= 33; b++) {
	//		c = (100 - 5 * a - 3 * b) * 3;
	//		if (a + b + c == 100)
	//			printf("公鸡%d只,母鸡%d只,小鸡%d只\n", a, b, c);
	//	}
	//}
	for (; a < 20; a++) {
		for (b=1; b < 34; b++) {
			c = 100 - a - b;
			if (c % 3 == 0) {
				if (5 * a + 3 * b + c / 3 == 100)
					printf("公鸡%d只,母鸡%d只,小鸡%d只\n", a, b, c);
			}
		}
	}
	return 0;
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值