我正在尝试切换,例如:输入 54321.987,然后 4 和 2 应该切换,因此输出将为 52341.987。 54321.777 应变为 52341.777。如果是 2345.777,则应为 4325.777。除此之外的任何事情我都不关心。但如果像 888886543.777 那样,则只需从逗号之前最右边的部分切换第二个和第四个数字即可。所以它会变成888884563.777
因此,正如 LearningC 所建议的,我尝试仅将 1000 位数与 10 位数交换。
但无论我尝试什么,我都会遇到错误。我无法传递错误。我该怎么做?
到目前为止,我真正有效的只是这样:
int main(int argc, char** argv) {
double x;
scanf("%lf", &x);
double tens = ((int) (x / 10)) % 10;
double thousands = ((int) (x / 1000)) % 10;
printf("%09.3f", x += (tens - thousands) * 990.0);
return 0;
}
上面的代码现在可以工作了。
首先,您必须确定这些数字。
你可以这样做
double tens = ((int)(x / 10)) % 10;
double thousands = ((int)(x / 1000)) % 10;
这使您能够做到
x = x - (tens * 10.0) - (thousands * 1000.0) + (tens * 1000.0) + (thousands * 10.0);
它在原来的位置减去它们并以交换的方式重新添加它们。
您可以将其优化为
x = x + tens * (1000.0 - 10.0) - thousands * (1000.0 - 10.0);
再说一次,这是为了
x += (tens - thousands) * 990.0;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)