20201215-經典基礎C語言題01-三個數排大小
經典基礎C語言題-三個數排大小
題幹
C語言三個數從小到大排序/輸出
實現思路
總體
- 輸入
- 處理
- 輸出
詳細
- 定義資料型別,本例項中 a、b、c、t 均為基本整型。
- 使用輸入函式獲得任意 3 個值賦給 a、b、c。
- 使用 if 語句進行條件判斷,如果 a 大於 b,則藉助於中間變數 t 互換 a 與 b 值
- 依此類推比較 a 與 c、b 與 c,最終結果即為 a、b、c 的升序排列。
- 使用輸出函式將 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
相關文章
- 10個經典C語言演算法—零基礎小白必學C語言演算法
- c 語言指標操作經典問題指標
- 2019年c語言經典面試題目C語言面試題
- C語言基礎 求出兩個數的公約數C語言
- Go語言基礎知識01-用Go打個招呼Go
- C語言基礎C語言
- C語言 習題2(3)有三個數a,b,c,要求按大小順序把它們輸出C語言
- 每日一題:C語言經典例題之雞兔同籠每日一題C語言
- c語言的基礎C語言
- 【01】C語言基礎C語言
- C語言入門經典(第5版)C語言
- C語言基礎-C簡介C語言
- C語言基礎函式C語言函式
- C語言基礎-指標C語言指標
- c語言基礎學習C語言
- C語言入門基礎C語言
- c語言基礎知識C語言
- C語言基礎-1、指標C語言指標
- C語言基礎-1、陣列C語言陣列
- c語言基礎知識3C語言
- C語言必須要記住的經典程式C語言
- C語言基礎-2、字元型別C語言字元型別
- 經典排序演算法的 C語言 | Java 實現排序演算法C語言Java
- JavaScript函數語言程式設計入門經典JavaScript函數程式設計
- c++基礎三(變數)C++變數
- 五種C語言非數值計算的常用經典排序演算法C語言排序演算法
- C語言結構體大小分析C語言結構體
- C語言基礎例項—3句解決數字出現頻率問題C語言
- 15. 三數之和_(c語言版)C語言
- Java基礎經典案例Java
- 2019 JS經典面試題(基礎+高階)JS面試題
- R語言經典統計分析R語言
- c語言基礎的一些小技巧C語言
- c語言程式基礎學習筆記C語言筆記
- 【C/C++】C語言基礎知識【第二版】C++C語言
- Android 音視訊入門:C語言基礎AndroidC語言
- C語言相關的基礎字串函式C語言字串函式
- dart語言基礎Dart