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

C语言周练二

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

C语言周练二

目录

题目:

代码展示:

        问1(while):

        问2(do-while):

        问3(嵌套for循环):


题目:

目标:100匹马驮100批货;

假设:大马一匹驮3担,中马一匹驮2担,小马两匹驮一担;

组合方法1:大马、中马、小马每种不能少于一匹;

组合方法2:对马匹种类无限制,可以缺少一种或者缺少两种;

问题:

1、采用组合方法1,用while求解,输出所有组合和组合的总数。

2、采用组合方法2,用do-while求解,输出所有组合和组合的总数。

3、采用组合方法2,用三重或二重for循环求解,输出所有组合法和组合的总数。

代码展示:

问1(while):
#include
int main()
{
	int x=1,y=1,z=2,sum1=0,sum2=0;
	int count=0;
	while(x<33)
	{
		sum1=x+y+z;
		sum2=3*x+2*y+(z/2); 
		if(sum1==100&&sum2==100)
		{
			printf("需要%d批大马 %d批的中马 %d批小马n",x,y,z);
			count++;
		}
		z+=2;
		if(sum1>100)
		{
			y++;
			z=2;
		}
		if(y>50)
		{
			x++;
			y=1;
			z=2;
		}		
	}
	printf("一共有%d种组合法",count); 
	return 0;
} 

问2(do-while):
#include
int main()
{
	int x=0,y=0,z=0,sum1=0,sum2=0;
	int count=0;
	do
	{
		sum1=x+y+z;
		sum2=3*x+2*y+(z/2);
		if(sum1==100&&sum2==100)
		{
			printf("需要%d批大马 %d批的中马 %d批小马n",x,y,z);
			count++;
		}
		z+=2;
		if(sum2>100||sum1>100)
		{
			y++;
			z=0;
		}
		if(y>50)
		{
			x++;
			y=0;
			z=0;
		}		
	}while(x<33);
	printf("一共有%d种组合法",count);
	return 0;
}

问3(嵌套for循环):
#include
int main()
{
	int x=0,y=0,z=0,sum1=0,sum2=0;
	int count=0;
	for(;x<33;)
	{
		for(;y<50;)
		{
			sum1=x+y+z;
			sum2=3*x+2*y+(z/2);
			if(sum1==100&&sum2==100)
			{
				printf("需要%d批大马 %d批的中马 %d批小马n",x,y,z);
				count++;
			}
			z+=2;
			if(sum2>100||sum1>100)
		    {
				y++;
				z=0;
			}
			if(y==49)
			{
				x++;
				y=0;
				z=0;
				break;
			}		
		}
	}
	printf("一共有%d种组合法",count);
	return 0;
}

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

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

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