幾個小程式練習C語言程式設計基礎
阿新 • • 發佈:2018-12-13
1,給兩個整形變數的值,將兩個值的內容交換:
(1)通過定義臨時變數:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a = 1;
int b = 2;
int tmp = a;//定義臨時變數tmp
a = b;
b = tmp;
printf("%d %d\n", a, b);
system("pause");
return 0;
}
(2)不建立臨時變數,通過加減運算:
(存在溢位的問題)
#include<stdio.h> #include<stdlib.h> int main() { int a = 1; int b = 2; a = a + b;//將a,b通過加減運算交換值,存在溢位的問題; b = a - b; a = a - b; printf("%d %d\n", a, b); system("pause"); return 0; }
(3)通過按位異或的方法:
(不容易理解,不利於閱讀程式碼)
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a = 1;
int b = 2;
a = a^b;//通過按位異或運算將a,b交換值,問題:不容易理解,不利於閱讀程式碼
b = a^b;
a = a^b;
printf("%d %d\n", a, b);
system("pause");
return 0;
}
2,求十個整數中最大的值:
#include<stdio.h> #include<stdlib.h> int main() { int a[] = { 12, 34, 55, 6, 3, 2, 12, 67, 98, 67 }; int max = a[0]; for (int i = 0; i < sizeof(a) / sizeof(a[0]); ++i) { if (max < a[i])//將陣列中第一個數定義為最大值,將陣列遍歷一遍,如果陣列中的值比定義的最大值大,就交換他兩的值, { max = a[i]; } } printf("%d\n", max); system("pause"); return 0; }
3,將三個數按從大到小的順序輸出:
#include<stdio.h> #include<stdlib.h> int main() { int a[] = { 23, 43, 12 }; int max = a[0]; int min = a[1]; if (max > min) { if (max < a[2]) { printf("%d %d %d\n", a[2], max, min); } if (min>a[2]) { printf("%d %d %d\n", max, min, a[2]); } } else if (max<min) { if (max>a[2]) { printf("%d %d %d\n", min, max, a[2]); } if (min < a[2]) { printf("%d %d %d\n", a[2], min, max); } } system("pause"); return 0; }
4,求兩個數的最大公約數:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void Function(int a, int b)//用遞迴思想將兩數進行求模運算,直到求模的值等於0時
{
if (a < b)
{
Function(b, a);
}
else if (b == 0)
{
printf("%d\n", a);
}
else
{
int tmp = a;
a = b;
b = tmp % a;
Function(a, b);
}
}
int main()
{
int a = 0;
int b = 0;
printf("請輸入兩個數,求這兩數的最大公約數:");
scanf("%d %d", &a, &b);
Function(a,b);
system("pause");
return 0;
}