从右侧(最右侧)切换第二个和第四个数字

时间:2016-10-26 12:49:10

标签: c

我的问题与此处提出的问题几乎相同: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;
}

1 个答案:

答案 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;
}