1. 程式人生 > >幾個小程式練習C語言程式設計基礎

幾個小程式練習C語言程式設計基礎

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;
}