某农业大学c/c++第二次实验

1. 完数(循环)

【问题描述】一个数如果恰好等于它的因子之和,这个数就成为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。编程序打印出1000之内(包括1000)所有的完数,并按如下格式输出其所有因子: 

6 its factors are 1,2,3.

【输入形式】无输入

【输出形式】输出1000以内所有的完数及其因子,每行输出一个完数及其因子。 

6 its factors are 1,2,3.

【提示】完数不止一个哦!而且最后一个数后面的结束标点符号是英文状态的句号。

#include
using namespace std;

int main()
{
	for(int i=2;i<=1000;i++)
	{
		int sum=0;
		for(int j=1;j<=i-1;j++)
		{
			if(i%j==0)
				sum+=j;
		}
		if(i==sum)
		{
			printf("%d its factors are ",i);
			int num=0;
			for(int k=1;k<=i-1;k++)
			{
				if(i%k==0)
				{
					num++;
					if(num==1) 
						printf("%d",k);
					else
						printf(",%d",k);
				}
			}
			printf(".\n");
		}
	} 
}

 

2. 简单计算器(while循环-switch语句)

【问题描述】编写一个根据用户键入的两个操作数和一个运算符,由计算机输出运算结果的程序。当键入的两个操作数为0时,结束运算。

【输入形式】两个操作数和一个运算符(运算符只包括五个:+-*/%)。当键入的两个操作数为0时,结束运算。若出现其他非法运算符号,输出Error。若运算符为‘/’,除数为0时,输出Error。 

【输出形式】每输入一组数据,则显示一个计算结果并换行等待键入下一组测试数据。

【样例输入】

3 5 *

3 5 -

12 12 #

12 12 *

5 0 /

0 0 +

【样例输出】

15

-2

Error

144

Error

【提示】最外层用while(1)的循环,内层用switch(ch)判断运算符号来进行计算。

#include
using namespace std;

int main()
{
	int a,b;
	char x;
	cin >> a>>b;
	cin >> x;
	while(a!=0 || b!=0)
	{
		switch(x)
		{
			case '+':
				cout << a+b<> a >> b;
		cin >> x;
	}
}

 

3. 数字菱形图案(双重循环)

【问题描述】编程打印用数字构成的菱形图案,菱形上半部分的行数n( 1

【输入形式】从键盘输入包括中间一行在内的菱形上半部分的行数n ( 1

【输出形式】输出用数字构成的菱形图案,样式按下面的样例,其中各数字间用1个空格间隔,最中间最长的一行的起始数字1位于第1列。

【样例输入】4

【样例输出】

      1
    1 2 1
  1 2 3 2 1
1 2 3 4 3 2 1
  1 2 3 2 1
    1 2 1
      1

#include
using namespace std;

int main()
{
	int n;
	cin >> n;
	//图案的前n行
	for(int i=0;i=1;j--)
			cout << j<< " ";
		for(int j=0;j=1;j--)
			cout << j << " ";
		for(int j=1;j<=i;j++)
			cout << " ";
		cout << endl;
	}
}

 

4. 水仙花数

【问题描述】输入两个正整数m和n(m

【输入形式】从键盘输入两个正整数m和n。

【输入输出样例1】(下划线部分表示输入)

Input m: 100

Input n: 400

153

370

371

【样例说明】输入提示符后要加一个空格。其中冒号:后要加一个且只能一个空格。

每行输出一个水仙花数。英文字母区分大小写。必须严格按样例输入输出。

#include
using namespace std;

int main()
{
	int m,n;
	cout << "Input m: ";
	cin >> m ;
	cout << "Input n: ";
	cin >> n ;
	
	int a,b,c;
	for(int i=m;i<=n;i++)
	{
		a=i/100;//个位 
		b=(i/10)%10;//十位
		c=i%10;
		if(a*a*a+b*b*b+c*c*c==i)
		{
			cout << i<

 

5. 满足条件的整数(循环和函数)

【问题描述】假设a、b、c均为整数,且满足a,b,c 大于1,并且小于等于100,找出所有符合条件:“a的平方 + b的平方 = c的平方”的整数组。 

【要求】

1、编写函数void Fun(int a, int b)寻找符合条件的三个数,其中ab分别表示数据起止范围1~100。 

2、编写函数void Print(int a, int b ,int c)按照规定的输出格式打印等式,由fun函数调用print函数执行输出功能。

3、主函数不允许出现循环语句,所有功能均在子函数中实现。

【输入形式】无输入
【输出形式】

按a从小到大的顺序输出所有满足条件的整数组(若a相同,则按b从小到大的顺序输出),每行一组,每一组数据的输出样式为: 

3*3 + 4*4 = 5*5  

注意: 

1、3*3 + 4*4 = 5*5 和 4*4 + 3*3 = 5*5虽然是同一组数据,后者不需要输出; 

2、加号和等号左右各有一个空格 

3、9*9 + 12*12 = 15*15 (在前) 

  9*9 + 40*40 = 41*41 (在后)

【输出】

3*3 + 4*4 = 5*5

5*5 + 12*12 = 13*13

6*6 + 8*8 = 10*10

7*7 + 24*24 = 25*25

8*8 + 15*15 = 17*17

9*9 + 12*12 = 15*15

9*9 + 40*40 = 41*41

10*10 + 24*24 = 26*26

11*11 + 60*60 = 61*61

12*12 + 16*16 = 20*20

12*12 + 35*35 = 37*37

13*13 + 84*84 = 85*85

14*14 + 48*48 = 50*50

15*15 + 20*20 = 25*25

15*15 + 36*36 = 39*39

16*16 + 30*30 = 34*34

16*16 + 63*63 = 65*65

18*18 + 24*24 = 30*30

18*18 + 80*80 = 82*82

20*20 + 21*21 = 29*29

20*20 + 48*48 = 52*52

21*21 + 28*28 = 35*35

21*21 + 72*72 = 75*75

24*24 + 32*32 = 40*40

24*24 + 45*45 = 51*51

24*24 + 70*70 = 74*74

25*25 + 60*60 = 65*65

27*27 + 36*36 = 45*45

28*28 + 45*45 = 53*53

28*28 + 96*96 = 100*100

30*30 + 40*40 = 50*50

30*30 + 72*72 = 78*78

32*32 + 60*60 = 68*68

33*33 + 44*44 = 55*55

33*33 + 56*56 = 65*65

35*35 + 84*84 = 91*91

36*36 + 48*48 = 60*60

36*36 + 77*77 = 85*85

39*39 + 52*52 = 65*65

39*39 + 80*80 = 89*89

40*40 + 42*42 = 58*58

40*40 + 75*75 = 85*85

42*42 + 56*56 = 70*70

45*45 + 60*60 = 75*75

48*48 + 55*55 = 73*73

48*48 + 64*64 = 80*80

51*51 + 68*68 = 85*85

54*54 + 72*72 = 90*90

57*57 + 76*76 = 95*95

60*60 + 63*63 = 87*87

60*60 + 80*80 = 100*100

65*65 + 72*72 = 97*97

【提示】主函数就仅仅一条调用Fun函数的语句;Fun函数中设计三重循环,判断a*a+b*b==c*c时,且a

#include
using namespace std;

void Print(int a,int b,int c)
{
	cout << a <<"*"<

你可能感兴趣的:(c语言,c++,数学建模)