51Testing软件测试论坛

标题: 2,3,4测试点无法通过 [打印本页]

作者: 测试积点老人    时间: 2020-9-7 11:28
标题: 2,3,4测试点无法通过
我想用char数组解决输出时三位数之前的“0”,于是用了很多的循环,我自己改了几次,但2,3,4测试点就是无法通过,很苦恼。请问一下代码还有什么地方欠考虑。
  1. #include<iostream>
  2. #include<string>
  3. #include<algorithm>
  4. using namespace std;

  5. bool cmp(char a, char b)
  6. {
  7.    return a > b;
  8. }
  9. int main()
  10. {
  11.    char number1[4], number2[4];
  12.    int n = 0;
  13.    for (int i = 0; i < 4; i++)
  14.    {
  15.        cin>>number1[i];
  16.    }
  17.    if (number1[0] == number1[1]&& number1[1]== number1[2]&& number1[2]== number1[3])//4位数字相同时的输出
  18.    {
  19.        for (int i = 0; i < 4; i++)
  20.        {
  21.            cout << number1[i];
  22.        }
  23.        printf(" - ");
  24.        for (int i = 0; i < 4; i++)
  25.        {
  26.            cout << number1[i];
  27.        }
  28.        printf(" = 0000");
  29.    }
  30.    else//其他情况
  31.    {

  32.        while (n != 6174)
  33.        {
  34.            for (int i = 0; i < 4; i++)
  35.            {
  36.                number2[i] = number1[i];
  37.            }
  38.            sort(number1, number1 + 4, cmp);//较大的数
  39.            sort(number2, number2 + 4);//较小的数
  40.            for (int i = 0; i < 4; i++)//输出相减的两个数
  41.            {
  42.                cout << number1[i];
  43.            }
  44.            printf(" - ");
  45.            for (int i = 0; i < 4; i++)
  46.            {
  47.                cout << number2[i];
  48.            }



  49.            int n1 = 0, n2 = 0,t=1;
  50.            for (int i = 3; i >=0; i--)//输出相减结果
  51.            {
  52.                n1 += ((int)number1[i]-48) * t;
  53.                t *= 10;
  54.            }
  55.            t = 1;
  56.            for (int i = 3; i >= 0; i--)
  57.            {
  58.                n2 += ((int)number2[i]-48) * t;
  59.                t *= 10;
  60.            }
  61.            n = n1 - n2;
  62.            printf(" = %04d\n", n);

  63.            int temp = n;
  64.            int i = 0;
  65.            while(i<4)//记录相减的结果
  66.            {
  67.                number1[i++] = (char)(temp % 10+48);
  68.                temp /= 10;
  69.            }
  70.        }

  71.    }
  72.    return 0;
  73. }
复制代码



作者: 海海豚    时间: 2020-9-8 09:41
https://ask.csdn.net/questions/1055005  参考下这个
作者: 郭小贱    时间: 2020-9-8 10:35
参考1楼的链接~~
作者: bellas    时间: 2020-9-8 10:35
参考下这个链接https://blog.csdn.net/qq_40930559/article/details/104094592
作者: qqq911    时间: 2020-9-8 10:39
测试点在哪里??
作者: jingzizx    时间: 2020-9-8 14:28
,没头啊




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2