搜尋此網誌

2024年7月1日 星期一

有2、3、4、5、6個數字,能組成多少種互不相等且並無重複這幾個數字的四位數數字,共有多少個?

 #include <stdio.h>


int main()
{
    int i, total;

    total = 0;
    for (i = 0; i < 10000; i++)
    {
        if (
            (((i / 1000) >= 2) && ((i / 1000) <= 6)) &&
            (((i % 1000 / 100) >= 2) && ((i % 1000 / 100) <= 6)) &&
            (((i % 100 / 10) >= 2) && ((i % 100 / 10) <= 6)) &&
            (((i % 10) >= 2) && ((i % 10) <= 6)) &&
            (
                ((i / 1000) != (i % 1000 / 100)) &&
                ((i / 1000) != (i % 100 / 10)) &&
                ((i / 1000) != (i % 10)) &&
                ((i % 1000 / 100) != (i % 100 / 10)) &&
                ((i % 1000 / 100) != (i % 10)) &&
                ((i % 100 / 10) != (i % 10)) &&
                (1)
            )
        )
        {
            // printf("i=%d\n", i);
            total++;
        }
    }
    printf("total=%d\n", total);

    return 0;
}

[output] : total = 120

將字串反向列印, 並做位置對調

 #include <stdio.h>


char *swap_str(char *str)
{
    int i, tmp, max;

    i = 0;
    while (str[i] != '\0')
        i++;
    max = i;

    for (i = 0; i < (max >> 1); i++)
    {
        tmp = str[i];
        str[i] = str[max - i - 1];
        str[max - i - 1] = tmp;
    }
    return str;
}

int main()
{
    char str1[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    char str2[] = "9876543210";

    printf(">>%s\n", str1);
    printf("=>%s\n", swap_str(str1));
    printf(">>%s\n", str2);
    printf("=>%s\n", swap_str(str2));
    return 0;
}

[output]:
>>ABCDEFGHIJKLMNOPQRSTUVWXYZ
=>ZYXWVUTSRQPONMLKJIHGFEDCBA
>>9876543210
=>0123456789

簡單的將字串反向列印, 不做位置對調

 #include <stdio.h>


int main()
{
    char *str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    // char *str = "9876543210";
    int i, max;

    i = 0;
    while (str[i] != '\0')
        i++;
    max = i;

    printf(">>%s\n", str);

    printf("=>");
    for (i = max - 1; i > 0; i--)
    {
        if (str[i] != '\0')
            printf("%c", str[i]);
    }
    if ((i == 0) && (str[i] != '\0'))
        printf("%c", str[i]);

    return 0;
}

[output]:
>>ABCDEFGHIJKLMNOPQRSTUVWXYZ
=>ZYXWVUTSRQPONMLKJIHGFEDCBA

[output]:
>>9876543210
=>0123456789


Function pointer and type define

#include <stdio.h>

void test_fun1(int input, int tmp)
{
    printf("%s(%d)...%d\n", __FUNCTION__, input, tmp);
}

void test_fun2(int input, int tmp)
{
    printf("%s(%d)***%d\n", __FUNCTION__, input, tmp);
}

typedef void (*function_ptr)(int, int);

int main()
{
    function_ptr op_fun;
    void (*fun_ptr)(int, int);

    fun_ptr = test_fun1;
    fun_ptr(2, 3);

    fun_ptr = test_fun2;
    fun_ptr(7, 6);

    printf("-------\n");
    op_fun = test_fun1;
    op_fun(77, 11);
    printf("-------\n");

    return 0;
}

[Output]:
test_fun1(2)...3
test_fun2(7)***6
-------
test_fun1(77)...11
-------

用數字劃出菱形由小(邊)至大(中心)

 #include <stdio.h>


void draw_triangle_fun(unsigned int length, unsigned int width)
{
    unsigned int t_w, t_l;
    char space = ' ', ch;

    for (t_w = 0; t_w <= width; t_w++)
    {
        for (t_l = 0; t_l < length - t_w; t_l++)
        {
            printf("%c", space);
        }
        for (t_l = 0; t_l <= t_w; t_l++)
        {
            ch = t_l + '0';
            printf("%c", ch);
        }
        // for (t_l = 0; t_l <= t_w; t_l++)
        for (t_l = length - t_w; t_l <= length; t_l++)
        {
            if (t_l > (length - t_w))
            {
                ch = length - t_l + '0';
                printf("%c", ch);
            }
        }
        printf("\n");
    }
    for (t_w = 0; t_w < width; t_w++)
    {
        for (t_l = 0; t_l <= t_w; t_l++)
        {
            printf("%c", space);
        }
        for (t_l = 0; t_l < (length - t_w); t_l++)
        {
            ch = t_l + '0';
            printf("%c", ch);
        }
        // for (t_l = 0; t_l < (length - t_w); t_l++)
        for (t_l = (length - t_w); t_l > 0; t_l--)
        {
            // ch = (length - t_l) + '0';
            if (((length - t_w) > t_l) && (t_l > 0))
            {
                ch = t_l - 1 + '0';
                printf("%c", ch);
            }
        }
        printf("\n");
    }
}

int main()
{
    unsigned int length, width;

    printf("\nPlease enter length/width(1 ~ 9):");
    scanf("%d", &width);
    if (width > 9)
        width = 9;
    length = width;

    printf("\n=============================================\n");
    draw_triangle_fun(length, width);
    printf("\n=============================================\n");

    return 0;
}

Please enter length/width(1 ~ 9):9 ============================================= 0 010 01210 0123210 012343210 01234543210 0123456543210 012345676543210 01234567876543210 0123456789876543210 01234567876543210 012345676543210 0123456543210 01234543210 012343210 0123210 01210 010 0 =============================================