C++实验三源码

发布于 2018-04-12  10 次阅读


#include <iostream>
using namespace std;

void shiyan31();
void shiyan32();
void shiyan33();
void shiyan34();

void shiyan3()
{
	int xuanze;
	cout << "请输入数字以选择你想进行的运算" << endl;
	cout << "1.计算:s=1+12+123+1234+12345。" << endl;
	cout << "2.输入一个整数,求出它的所有因子" << endl;
	cout << "3.编写程序程找出给定值(题目要求1000)之内的所有完数" << endl;
	cout << "4.输出图案" << endl;
	cout << "0.返回上一级" << endl;
	cout << endl;
	cout << "请输入你想进行的运算:";
	cin >> xuanze;
	cout << endl;
	switch (xuanze)
	{
	case (1):shiyan31(); break;//1.计算:s=1+12+123+1234+12345。
	case (2):shiyan32(); break;//2.输入一个整数,求出它的所有因子
	case (3):shiyan33(); break;//3.编写程序程找出1000之内的所有完数
	case (4):shiyan34(); break;//4.输出图案
	case (0):goto exit; break;//退出
	default:
		cout << "请输入1-3之间的数字!" << endl << endl << endl;
		getchar();
		cout << endl << endl << endl;
		break;//输入数值以外的数字
	}
exit:;
}

//【项目1】:计算式本质上是累加式,重点在于寻找各累加项的内在规律,如果存在一定规律,那么可以使用循环结构得以实现;
//【项目1】编写程序,计算:s = 1 + 12 + 123 + 1234 + 12345。

void shiyan31()
{
	int i, j, s, c, a;
	a = 0, s = 0, c = 0, i = 0;
	cout << "你打开的是计算:s = 1 + 12 + 123 + 1234 + 12345……的程序" << endl;
	cout << "请输入你想运行的个位数的最大值(题目要求:5,最大为9):";
	cin >> j;
	cout << "s=";
	while (i<j)
	{
		a = a + pow(10.0, i);//a用来生成1.11.111.11111.111111……等数
		c = c + a;//c为加数
		s = s + c;//s为和
		if (i > 0)
		{
			cout << "+" << c;//除了第一遍,其他时候输出“c”的时候,前面要带有“+”
		}
		else
		{
			cout << c;//在第一遍输出“c”的值的时候,前面不要带有“+”
		}
		i = i++;//循环计次
	}
	cout << "=" << s << endl;
}

//【项目2】理解因子的概念,即一个整数n的因子是能够整除n的数(不包括n);因子计算过程:在[1,n)区间内,逐个判断是否能整除n,将能整除n的数显示在屏幕上。
//【项目2】编写程序,输入一个整数,求出它的所有因子并输出(一个整数n的因子是能够整除n的数(不包括n),如6的因子是1,2和3 )。

void shiyan32()
{
	cout << "你打开的是:输入一个整数,求出它的所有因子  程序" << endl;
	cout << "一个整数n的因子是能够整除n的数(不包括n),如6的因子是1,2和3 " << endl;
	int a, b, i, c;//a:给定的数;b:因子;c:判断是否为完数
	i = 0, c = 0;
	cout << "请输入你想运算的整数n:";
	cin >> a;
	cout << endl << "该整数的因子有:" << endl;
	for (b = 1; b < a; b++)//因为一个数的因子不包含它本身,故为b<a,且每次运算后b都会加1
	{
		if (a%b == 0)//使用除法取余数,如果余数为0,即可以整除,这个数(b)是因子
		{
			cout << b << "     ";//用来输出每个因子
			c = c + b;//累加每次得到的完数b的值,用来判断给定的数是否为完数
			i = i++;//用来计给定的数因子的个数
		}
	}
	cout << endl << "共 " << i << " 个因子" << endl;
	cout << "其中,所有因子的和是:" << c << endl;
	if (c == a)//用定义来判断其是不是完数
	{
		cout << a << "是完数";
	}
	else
	{
		cout << a << "不是完数";
	}
	cout << endl;
}

//【项目3】:在【项目2】基础上,将某个数的所有因子累加起来与该数进行比较,判断是否为完数;将讨论范围扩大到1000,进而求得所有完数。
//【项目3】一个数如果恰好等于它的因子之和,这个数就称为“完数”。编写程序程找出1000之内的所有完数。

void shiyan33()
{
	cout << "你打开的是:编写程序程找出给定值以内的所有完数  程序" << endl;
	int a, b, i, c, n, j;
	i = 0, a = 1, j = 0;
	cout << "请给定值(题目要求是1000):";
	cin >> n;
	cout << n << "之内的所有完数有:" << endl;
	for (a = 1; a <= n; a++)
	{
		c = 0;//每次计算后,用来判断完数的“c”都应该做清零处理
		i = 0;//“i”是用来计统计这个完数的因子的个数
		for (b = 1; b < a; b++)
		{
			if (a%b == 0)
			{
				c = c + b;
				i = i++;
			}
		}
		//以上是计算过程
		//以下是判断输出过程
		if (c == a)
		{
			j++;//用来统计给定区间内。完数的个数
			cout << a << "是完数" << "其有 " << i << " 个因子" << endl;
		}
	}
	cout << n << "以内的所有完数有" << j << "个。" << endl;
	cout << endl;
}

//【项目4】:利用循环嵌套结构输出“X”图形,关键在于寻找该图形中每行的*数和空格数与行的关系。
//【项目4】编程实现,在屏幕上输出如下所示的图案(半个是五行)。
//   a---b---
//7    X  5   X		6	X 4   X
//5     X 3  X		4	 X 2 X
//3      X1 X		2	  XX
// 	      X
//       X X
//      X   X
//     X     X

void shiyan34()
{
	int a, b, h, i, j, d;
	a = 0;//a是左半部分的空格循环,b是中间部分空格的循环,a,b与j配合共同限制循环次数,h,i控制行数。
	cout << "你打开的是:利用循环嵌套结构输出“X”图形  程序" << endl;
	cout << "请输入你想要的“X”的高度(最小为3):";
	cin >> h;//h应该大于2
	cout << endl;
	if (h > 2 && h % 2 == 1)//高应该是一个奇数,
	{
		b = h - 2;//初始化左X与右X中间的空格数量
		d = h / 2;//判断中线用的
		for (i = 0; i < h; i++)
		{
			cout << "   ";//开头空三格
			for (j = 0; j < a; j++)
			{
				cout << " ";//左半部分的空格,数量由a决定
			}
			cout << "X";//输出左面的X(或者是正中间的X)
			for (j = 0; j < b; j++)
			{
				cout << " ";//中间部分的空格,数量由b决定
			}
			if (b >= 0)//当且仅当正中间一行的时候,b<0
			{
				cout << "X";//输出右面的X
			}
			if (i < d)//如果在中线以上
			{
				a++;//左边空格数递增
				b = b - 2;//右边空格数递减,
				//在中线以上,最后一次递减后,b会变成负数,以此来判断中线
			}
			else if (i >= d)//如果在中线以下
			{
				a--;//左边空格数递减
				b = b + 2;//中间空格数递增
			}
			cout << endl;//每一行之后的换行
		}
	}
	else
	{
		cout << "“X”的最小高度是3,并且X必须是奇数!" << endl;
	}
	cout << endl;
}

 


无聊的并不是这段时光,而是与别人相似的自己。