这个编程题怎么做 谢谢解答 5

任务:随机给出三个整数分别存放在变量【A】、【B】、【C】中,如果将它们连成一排,将会得到一个多位整数。请你找出各种连接方法得到的最大的多位整数,将它存放到变量【结果】中... 任务:随机给出三个整数分别存放在变量【A】、【B】、【C】中,如果将它们连成一排,将会得到一个多位整数。请你找出各种连接方法得到的最大的多位整数,将它存放到变量【结果】中;

*注意:【A】、【B】、【C】的值已经帮你存好了,你不需要再修改它们,直接使用即可;

举例:【A】为13,【B】为312,【C】为343,连接成的最大整数应该为34331213,要将它存到变量【结果】里;

编程对象:禾木;

特殊规则:不能删除给出的变量、列表和角色,可以新建变量、列表辅助解题。会进行多次检验,你编写的代码不能永远不停地执行,不能使用【停止全部】代码块。
展开
 我来答
澈丶233
2019-10-16 · TA获得超过169个赞
知道小有建树答主
回答量:446
采纳率:94%
帮助的人:106万
展开全部

因为限制了只有三个数字,所以我的思路为:列出所有组合情况,冒泡排序后找到最大值即可。

我使用的是java:


public class T {
public static void main(String[] args) {
int A = 13;
int B = 312;
int C = 343;
//求出所有组合结果,根据排列组合,结果应有以下6种:
//ABC、ACB、BAC、BCA、CAB、CBA
//怕你用的不是java,这里采用通用一些的方法来获得结果集
int[] results = new int[6];
results[0] = getResult(A, B, C);
results[1] = getResult(A, C, B);
results[2] = getResult(B, A, C);
results[3] = getResult(B, C, A);
results[4] = getResult(C, A, B);
results[5] = getResult(C, B, A);
System.out.println("所有组合结果为:");
for (int result : results) {
System.out.println(result);
}
//使用冒泡排序获取最大值
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5 - i; j++) {
if (results[j] > results[j++]) {
int temp = results[j];
results[j] = results[j + 1];
results[j + 1] = temp;
}
}
}
System.out.println("========");
System.out.println("冒泡排序结果为:");
for (int result : results) {
System.out.println(result);
}
System.out.println("========");
System.out.println("所以这些组合中数字最大的为:[" + results[5] + "]");
}
//计算每种组合的结果,计算规则为:
//1、先将y和z组合起来,如果z有n位,组合结果为 yz = y*10的n次方 + z
//2、再将x和yz组合起来,如果yz有n位,组合结果为 xyz = yz*10的n次方 + yz
private static int getResult(int x, int y, int z) {
int yz = (int) (y * Math.pow(10, countNumber(z))) + z;
int xyz = (int) (x * Math.pow(10, countNumber(yz))) + yz;
return xyz;
}
//数一下n有多少位
private static int countNumber(int n) {
int count = 0;
while (n != 0) {
n /= 10;
count++;
}
return count;
}
}


后续还能优化的地方就在于三个数字的排列组合部分,现在用比较傻的写死的方式,未来如果加到4个数字或者其他那就得改代码了


代码就是会挤到一起,我截图给你看下:

3-31行

31-57行完


运行结果:

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式