20201215-经典基础C语言题01-三个数排大小

经典基础C语言题-三个数排大小

题干

C语言三个数从小到大排序/输出

实现思路

总体

  1. 输入
  2. 处理
  3. 输出

详细

  1. 定义数据类型,本实例中 a、b、c、t 均为基本整型。
  2. 使用输入函数获得任意 3 个值赋给 a、b、c。
  3. 使用 if 语句进行条件判断,如果 a 大于 b,则借助于中间变量 t 互换 a 与 b 值
  4. 依此类推比较 a 与 c、b 与 c,最终结果即为 a、b、c 的升序排列。
  5. 使用输出函数将 a、b、c 的值依次输出。

示例代码

#include <stdio.h>

int main(void)
{
    
    
    int dataA, dataB, dataC, tmp;

    printf("Please input a,b,c:\n");
    scanf("%d,%d,%d", &dataA, &dataB, &dataC);
    // 两次比较,让dataA里保证是最小的数
    if (dataA > dataB)
    {
    
    
        tmp = dataA;
        dataA = dataB;
        dataB = tmp;
    }
    if (dataA > dataC)
    {
    
    
        tmp = dataA;
        dataA = dataC;
        dataC = tmp;
    }
    // 一次比较,让dataB比dataC小
    if (dataB > dataC)
    {
    
    
        tmp = dataB;
        dataB = dataC;
        dataC = tmp;
    }
    // 按dataA,dataB,dataC输出,即从小到大
    printf("The order of the number is:\n");
    printf("%d,%d,%d", dataA, dataB, dataC);

    return 0;
}

测试数据组

    测试数据
    11,22,33
    11,33,22
    33,22,11
    33,11,22
    22,11,33
    22,33,11

部分测试结果

PS E:\clangstudy\class07> cd "e:\clangstudy\class07\" ; if ($?) { gcc 'fileoperation.c' -o 'fileoperation.exe' -Wall -g -O2 -static-libgcc -std=c11 -fexec-charset=utf-8 } ; if ($?) { &'.\fileoperation' }
PS E:\clangstudy\class07> cd "e:\clangstudy\class08\" ; if ($?) { gcc 'c1三个数求大小.c' -o 'c1三个数求大小.exe' -Wall -g -O2 -static-libgcc -std=c11 -fexec-charset=utf-8 } ; if ($?) { &'.\c1三个数求大小' }
Please input a,b,c:
11,22,33
The order of the number is:
11,22,33
PS E:\clangstudy\class08> cd "e:\clangstudy\class08\" ; if ($?) { gcc 'c1三个数求大小.c' -o 'c1三个数求大小.exe' -Wall -g -O2 -static-libgcc -std=c11 -fexec-charset=utf-8 } ; if ($?) { &'.\c1三个数求大小' }
Please input a,b,c:
22,33,11
The order of the number is:
11,22,33
PS E:\clangstudy\class08> cd "e:\clangstudy\class08\" ; if ($?) {
    
     gcc 'c1三个数求大小.c' -o 'c1三个数求大小.exe' -Wall -g -O2 -static-libgcc -std=c11 -fexec-charset=utf-8 } ; if ($?) {
    
     &'.\c1三个数求大小' }
Please input a,b,c:
33,22,11
The order of the number is:
11,22,33

重构代码,抽出功能函数

#include <stdio.h>

// 三个数排小大的功能函数
void sort3data(int *dataA, int *dataB, int *dataC);
// 测试函数
void test(void);

int main(void)
{
    
    
    test();	// 驱动测试

    return 0;
}

// 功能函数实现
void sort3data(int *dataA, int *dataB, int *dataC)
{
    
    
    int tmp;
    if (*dataA > *dataB)
    {
    
    
        tmp = *dataA;
        *dataA = *dataB;
        *dataB = tmp;
    }
    if (*dataA > *dataC)
    {
    
    
        tmp = *dataA;
        *dataA = *dataC;
        *dataC = tmp;
    }
    if (*dataB > *dataC)
    {
    
    
        tmp = *dataB;
        *dataB = *dataC;
        *dataC = tmp;
    }
}

// 测试函数实现 
void test(void)
{
    
    
    // 测试数据组织
    int a[6][3] = {
    
    
        {
    
    11, 22, 33},
        {
    
    11, 33, 22},
        {
    
    22, 11, 33},
        {
    
    22, 33, 11},
        {
    
    33, 11, 22},
        {
    
    33, 22, 11}};
    int i;
    for (i = 0; i < 6;i++)
    {
    
    
        sort3data(&a[i][0], &a[i][1], &a[i][2]);
        printf("%d,%d,%d \n", a[i][0], a[i][1], a[i][2]);
    }
}

测试结果

PS E:\clangstudy\class08> cd "e:\clangstudy\class08\" ; if ($?) {
    
     gcc 'c1三个数求大小2.c' -o 'c1三个数求大小2.exe' -Wall -g -O2 -static-libgcc -std=c11 -fexec-charset=utf-8 } ; if ($?) {
    
     &'.\c1三个数求大小2' }
11,22,33
11,22,33
11,22,33
11,22,33
11,22,33
11,22,33

猜你喜欢

转载自blog.csdn.net/matrixbbs/article/details/111244980