51Testing软件测试论坛
标题:
2,3,4测试点无法通过
[打印本页]
作者:
测试积点老人
时间:
2020-9-7 11:28
标题:
2,3,4测试点无法通过
我想用char数组解决输出时三位数之前的“0”,于是用了很多的循环,我自己改了几次,但2,3,4测试点就是无法通过,很苦恼。请问一下代码还有什么地方欠考虑。
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
bool cmp(char a, char b)
{
return a > b;
}
int main()
{
char number1[4], number2[4];
int n = 0;
for (int i = 0; i < 4; i++)
{
cin>>number1[i];
}
if (number1[0] == number1[1]&& number1[1]== number1[2]&& number1[2]== number1[3])//4位数字相同时的输出
{
for (int i = 0; i < 4; i++)
{
cout << number1[i];
}
printf(" - ");
for (int i = 0; i < 4; i++)
{
cout << number1[i];
}
printf(" = 0000");
}
else//其他情况
{
while (n != 6174)
{
for (int i = 0; i < 4; i++)
{
number2[i] = number1[i];
}
sort(number1, number1 + 4, cmp);//较大的数
sort(number2, number2 + 4);//较小的数
for (int i = 0; i < 4; i++)//输出相减的两个数
{
cout << number1[i];
}
printf(" - ");
for (int i = 0; i < 4; i++)
{
cout << number2[i];
}
int n1 = 0, n2 = 0,t=1;
for (int i = 3; i >=0; i--)//输出相减结果
{
n1 += ((int)number1[i]-48) * t;
t *= 10;
}
t = 1;
for (int i = 3; i >= 0; i--)
{
n2 += ((int)number2[i]-48) * t;
t *= 10;
}
n = n1 - n2;
printf(" = %04d\n", n);
int temp = n;
int i = 0;
while(i<4)//记录相减的结果
{
number1[i++] = (char)(temp % 10+48);
temp /= 10;
}
}
}
return 0;
}
复制代码
作者:
海海豚
时间:
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