1023. 组个最小数 (20)

原题: https://www.patest.cn/contests/pat-b-practise/1023

实现思路: 按照程序正常读数, 你将得到类似这样的字符串"0015558", 也就是说如果
有0, 0肯定是在最前面, 只需把最前面这个0, 与第一个不是0的进行交换即可.

完整C语言实现:

#include <stdio.h>

int main () {
    char str[50];
    int len = 0;
    int itimes;
    char temp;
    int i;
    int j;

    for (i=0; i<=9; i++) {
        scanf("%d", &itimes);
        for (j=1; j<=itimes; j++) {
            str[len] = i + '0';
            len++;
        }
    }
    // 如果第一个位置是0, 则需要交换
    if (str[0] == '0') {
        for (i=0; i<len; i++) {
            if (str[i] != '0') {
                // 交换0 和 i, 注意只有第一次需要交换
                temp = str[i];
                str[i] = '0';
                str[0] = temp;
                break;
            }
        }
    }
    // 循环输出
    for (i=0; i<len; i++) {
        putchar(str[i]);
    }
    printf("\n");

    return 0;
}

posted @ 2017-10-22 20:16  阿胜4K  阅读(191)  评论(0编辑  收藏  举报