2023年12月16日发(作者:初一数学试卷多选题)

数学黑洞(cc++)实现

首先引入这个概念--

//首先第一点 我们需要用到数组的知识点

二点需要用到格式化输出 很重要

我们看提示

然后需要一定算法 (冒泡排序)这里可以看我的

这个是为了帮我们排取最大值和最小值

下面代码当中带有解释

1

2

3

4

5

6

7

8

int arr[4];//设置4个位数

int seperate(int n)

{

int sum1 = 0;

int sum2 = 0;

int tmp = 0;

int sz = 4;

arr[0] = n % 10;8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

arr[0] = n % 10;

arr[1] = n / 10 % 10;

arr[2] = n / 100 % 10;

arr[3] = n / 1000 % 10;

for (int i = 0; i

{

for (int j = 0; j < (sz - 1 - i); j++)

{

if (arr[j] < arr[j + 1])//从大到小的冒泡排序操作

{

tmp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = tmp;

}

}

}

//进行求和操作处理

for (int i = 0; i < sz; i++)

{

sum1 = sum1 + arr[i] * pow(10, sz - 1 - i);//这个是计算不同位的方法

}

for (int i = 0; i < sz - 1; i++)//冒泡排序 从小到大 的排列顺序操作

{

for (int j = 0; j < (sz - 1 - i); j++)

{

if (arr[j] > arr[j + 1])

{

tmp = arr[j + 1];

arr[j + 1] = arr[j];

arr[j] = tmp;

}

}

}

for (int i = 0; i < sz; i++)

{

sum2 = sum2 + arr[i] * pow(10, sz-1-i);//这里次方位数不要搞到了 就是不要颠倒了

}

return sum1 - sum2;//返回两数之差

}

int main()

{

int n;

cin >> n;

printf(\"%04dn\", n);//这个是打印那些数字

while (n != 6174)//这个是那个数学黑洞 我们只要到达这个位置停止就可以

{

n = seperate(n);

printf(\"%04dn\", n);//这个也是属于格式化输出的一种类型

}

}


更多推荐

需要,操作,用到,输出