我的问题与此处提出的问题几乎相同:question
不同之处在于我想要从右侧切换第2和第4位,而不是像在另一个问题中那样切换左侧。所以我的情况下最右边的数字是1。 实施例:28 3 9 2 6.67变为28 2 9 3 6.67。 我该如何编码?
#include <stdio.h>
#include <stdlib.h>
int main() {
double number;
printf("Give a number: ");
scanf("%lf", &number);
//printf("%.4f", number);
char arr[sizeof(number)];
snprintf(arr, sizeof(number) + 1, "%f", number);
char ex = arr[1];
arr[1] = arr[3];
arr[3] = ex;
number = atof(arr);
printf("%.4f\n", number);
return 0;
}
答案 0 :(得分:0)
您必须完成与您提供的链接完全相同的事情:
int main() {
double A = 282936.67;
char str[50];
sprintf(str, "%f", A);
int dot = -1, i = 0;
//Finds the dot position
while (i != 50) {
if (str[i] == '.') {
dot = i;
break;
}
i++;
}
if (dot >= 4) {
char tmp = str[dot - 2];//Search from the dot position
str[dot - 2] = str[dot - 4];
str[dot - 4] = tmp;
}
//Convert your string to a float
A = atof(str);
printf("%.2f", A);
while (1);
return 0;
}