【PAT B1019】数字黑洞(C语言) 您所在的位置:网站首页 数字黑洞153c语言 【PAT B1019】数字黑洞(C语言)

【PAT B1019】数字黑洞(C语言)

2024-06-02 06:32| 来源: 网络整理| 查看: 265

生亦非生,死亦非死` 思路: (1)用数组a[10]记录所给的四位数有哪几个数; (2)向左扫描,求的大数 (3)向右扫描,求得小数 (4)循环

在这里插入图片描述 注意:第二个数和计算结果可能不够四位数,输出是要记得在前面补零

#include #define MAX 10 int N; /* 输入的正整数数N */ int a[MAX]; /* 将输入的数N按位分解,记录在相应的下表位置 */ int first_num; /* 储存第一个数,重组后,即递减的数 */ int second_num; /* 储存第二个数,重组后,即递增的数 */ void get_fs(); void print_fs(); /********************* 将N分解,装进a[],取的第一个数和第二个数 **************************/ void get_fs(){ int i, j; int count; first_num = second_num = 0; /* 先初始化,也是清空上一次结算的结果 */ for(i = 0; i /* 从数组a[]的后面向前找, 求first_num */ for(count = a[i]; count != 0; --count){ first_num += i*j; j /= 10; } } for(i = 0, j = 1000; i second_num += i*j; j /= 10; } } N = first_num - second_num; } /***************************** 输出第一数和第二个数 **************************************/ void print_fs(){ int i, j; int count; printf("%d - ", first_num); if(second_num for(count = a[i]; count != 0; --count) printf("%d", i); } }else printf("%d", second_num); printf(" = "); if(N 100) /* N可能不足四位 */ printf("0"); printf("%d\n", N); } /******************************* 计算输出,直到6174 **************************************/ int main(){ scanf("%d", &N); get_fs(); /* 取得第一次重新排序后的第一个和第二个数 */ if(N == 0) printf("%d - %d = 0000", first_num, first_num); /* 输出N的四位数字全相同的情况 */ else{ /* 若N的四位数字不相同 */ print_fs(first_num, second_num); /* 输出 */ while(N != 6174){ /* 若还没有到6174 */ get_fs(first_num, second_num); /* 再计算第一个数和第二个数 */ print_fs(first_num, second_num); /* 再输出 */ } } }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有