栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言程序设计(第二版)余贞侠课后习题解析-第五章(循环结构程序设计)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言程序设计(第二版)余贞侠课后习题解析-第五章(循环结构程序设计)

1.计算并输出1!+2!+…+n!(其中n<16)。
#define  _CRT_SECURE_NO_WARNINGS 
#include


int main()
{
	int i, j, n;
	long long  sum = 0, m;
	printf("请输入需要计算的数据个数n:    ");
	scanf("%d", &n);
	while (n < 1 || n >= 16)
	{
		printf("n应该大于1小于16,请重新输入n:    ");
		scanf("%d", &n);
	}

	//计算阶乘和
	for (i = 1; i <= n; i++)	        	//控制个数
	{
		m = 1;
		for (j = 1; j <= i; j++)			//控制阶乘数
		{
			m *= j;
		}
		sum += m;
	}
	printf("1!+......%d! = %lldn", n, sum);
	return 0;
}

2.输出1000以内的所有完数。“完数”是指一个数的因子之和等于自身。
#define  _CRT_SECURE_NO_WARNINGS 
#include
#define NUM 1000

int main()
{
	int i, j, sum;
	printf("%d以内的完数信息如下:n", NUM);
	for (i = 2; i <= NUM; i++)
	{
		sum = 1;
		//任何一个自然数n的因子对不可能大于n/2,只需将j枚举到i/2即可
		for (j = 2; j <= i / 2; j++)
		{
			//判断j是否是i的因子
			if (i % j == 0)
			{
				sum += j;
			}
		}
		//输出完数信息
		if (sum == i)
		{
			printf("%dt ", i);
			printf("%d的因子为:", i);
			for (j = 1; j <= i / 2; j++)
			{
				//判断j是否是i的因子
				if (i % j == 0)
				{
					printf("%d ", j);
				}
			}
			printf("n");
		}
	}
	printf("n");
	return 0;
}

3.输入两个正整数m和n,计算并输出其最大公约数。
#define  _CRT_SECURE_NO_WARNINGS 
#include
#include 

int main()
{
	
	int m, n, r;			//n代表最大公约数,r代表余数
	printf("请输入两个整数m,n:  ");
	scanf("%d,%d", &m, &n);
	if (m < 1 || n < 1)
	{
		printf("输入的m或n的值不合法!n");
		exit(0);
	}

	printf("%d与%d的最大公约数 = ", m, n);

	r = m % n;
	while (r!=0)
	{
		m = n;
		n = r;
		r = m % n;
	}
	printf("%dn",n);
	printf("n");
	return 0;
}
#define  _CRT_SECURE_NO_WARNINGS 
#include
#include 

int main()
{
	
	int m, n, i;
	printf("请输入两个整数m,n:  ");
	scanf("%d,%d", &m, &n);
	if (m < 1 || n < 1)
	{
		printf("输入的m或n的值不合法!n");
		exit(0);
	}

	printf("%d与%d的最大公约数 = ", m, n);
	for (i = m < n ? m : n; i >= 1; i--)
	{
		if (m % i == 0 && n % i == 0)
		{
			printf("%dn", i);
			break;
		}
	}
	printf("n");
	return 0;
}

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

int main()
{
	float high, h = 100;
	int i;
	high = h / 2;			//已经计算了第一次落地的数据

	for (i = 2; i <= 8; i++)
	{
		h = h + 2 * high;		//第n次落地时经过的总路程
		high = high / 2;
	}

	printf("第8次落地时共经过:%.2fmn", h);
	printf("第8次落地时反弹:%.2fmn", high);
	return 0;
}

5.输入一行字符,分别统计其中英文字母、数字和其他字符的个数。
#define  _CRT_SECURE_NO_WARNINGS 
#include
#define LEN  150

int main()
{
	char string[LEN];
	printf("请输入一行字符: ");
	gets_s(string);
	int i;
	int letters = 0, digit = 0, others = 0;			//英文字母,数字,其他字符
	for (i = 0; string[i] != ''; i++)
	{
		if (string[i] >= 'a' && string[i] <= 'z' || string[i] >= 'A' && string[i] <= 'Z')
			letters++;
		else if (string[i] >= '0' && string[i] <= '9')
			digit++;
		else
			others++;
	}
	printf("n字母个数:%dn数字个数:%dn其他字符个数:%dn",letters,digit,others);

	return 0;
}		

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

对于这道题目,我是真的不太理解。
如何设置初始的最值?如何将输入的数据存储比较?

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

int main()
{
	int value_1, value_5, value_10, count = 0;

	printf("所有可能的换法如下:nn");
	//保持每种面额的钱为5的倍数,每次加5
	for (value_1 = 5; value_1 * 1 <= 100; value_1 += 5)
	{
		for (value_5 = 5; value_5 * 5 <= 100; value_5 += 5)
		{
			for (value_10 = 5; value_10 * 10 <= 100; value_10 += 5)
			{
				if (100 == 1 * value_1 + 5 * value_5 + 10 * value_10)
				{
					count++;
					printf("¥1:%dtt¥5:%dtt¥10:%dn", value_1, value_5, value_10);
				}
			}
		}
	}
	printf("总计%d种情况.n",count);
	return 0;
}

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

int main()
{
	int cock, hen, chick;		//公鸡,母鸡,小鸡
	int count = 0;

	printf("所有可能的买法如下:nn");
	for (cock = 1; cock * 5 <= 100; cock++)
	{
		for (hen = 1; hen * 3 <= 100; hen++)
		{
			for (chick = 1; chick *1/ 3 <= 100; chick++)
			{
				

				if ((cock + hen + chick == 100) && (15 * cock + 9 * hen + 1 * chick == 300))
				{
					count++;
					printf("cock:%dtthen:%dttchick:%dn", cock, hen, chick);
				}
			}
		}
	}
	printf("n总计%d种情况.n", count);
	return 0;
}

不对方程中的1/3处理的结果:

正确结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/429917.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号