用函式實現模組化程式設計習題

EricsT發表於2024-11-18

寫兩個函式,分別求兩個整數的最大公約數和最小公倍數,用主函式呼叫這兩個函式,並輸出結果。兩個整數由鍵盤輸入


//寫兩個函式,分別求兩個整數的最大公約數和最小公倍數,用主函式呼叫這兩個函式,並輸出結果。兩個整數由鍵盤輸入
#include <stdio.h>

int getGCD(int a, int b)
{
	int iMax = 0, iMin = 0;//定義最大最小值並初始化
    
	if (a > b)//分別獲取最大最小值
	{
		iMax = a;
		iMin = b;
	}
	else
	{
		iMax = b;
		iMin = a;
	}

	int iRet = iMax % iMin;//取餘

	while (iRet)
	{
		iMax = iMin;//餘數不為0時,用最小值去對餘數取餘
		iMin = iRet;
		iRet = iMax % iMin;
	}

	return iMin;//餘數為0則輸出最小值
}

int getLCM(int a, int b)
{
	return a * b / getGCD(a, b);//LCM = num1 * num2 / GCD
}

int main(void)
{
	int a = 0, b = 0;//定義並初始化

	scanf("%d%d", &a, &b);//輸入
	printf("GCD:%d\nLCM:%d\n", getGCD(a, b), getLCM(a, b));//呼叫求取GCD和LCM並輸出

	return 0;
}

在VS編譯器內會報C4996錯誤,解決見下文:(下同)

C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. - EricsT - 部落格園 (cnblogs.com)

執行結果:

用函式實現模組化程式設計習題

求方程 ax^2+bx+c=0 的根,用三個函式分別求當:b^2-4ac大於0,等於0和小於0時的根並輸出結果。從主函式輸入 a,b,c 的值


//求方程 ax ^ 2 + bx + c = 0 的根,用三個函式分別求當:
//b ^ 2 - 4ac大於0,等於0和小於0時的根並輸出結果。從主函式輸入 a, b, c 的值
#include <stdio.h>
#include <math.h>

void Dmin(int a, int b, int iDera)//兩個不等的複數根
{
	double x1 = (0 - b) / (2.0 * a);
	double x2 = pow(-iDera, 0.5) / (2.0 * a);
    
	printf("\nx1 = %lf+%lfi\nx2 = %lf-%lfi\n", x1, x2, x1, x2);
}

void Dmax(int a, int b, int iDera)//兩個不等的實數根
{
	double x1 = ((0 - b) + pow(iDera, 0.5)) / (2.0 * a);
	double x2 = ((0 - b) - pow(iDera, 0.5)) / (2.0 * a);

	printf("\nx1 = %lf\nx2 = %lf\n", x1, x2);
}

void Dequal(int a, int b)//兩個相等的實數根
{
	double x = (0 - b) / (2.0 * a);
    
	printf("\nx = %lf\n", x);
}

int main(void)
{
	int a = 0, b = 0, c = 0;//定義並初始化

	scanf("%d%d%d", &a, &b, &c);//輸入

	int iDera = b * b - 4 * a * c;//求取△

	if (0 == iDera)
		Dequal(a, b);
	else if (iDera > 0)
		Dmax(a, b, iDera);
	else
		Dmin(a, b, iDera);

	return 0;
}

執行結果:

兩個不等的實數根:用函式實現模組化程式設計習題

兩個相等根:用函式實現模組化程式設計習題

兩個不等的複數根:用函式實現模組化程式設計習題

寫一個判斷素數的函式,在主函式輸入一個整數時,輸出是否為素數的資訊


//寫一個判斷素數的函式,在主函式輸入一個整數時,輸出是否為素數的資訊
#include <stdio.h>

bool isPrimeNumber(int num)
{
	for (int i = 2; i < num; i++)
	{
		if (0 == num % i)//能整除則不為素數
			return false;
	}

	return true;//都不能整除則為素數
}

int main(void)
{
	int num = 0;//定義並初始化

	scanf("%d", &num);//輸入
    
	if (isPrimeNumber(num))
		printf("yes\n");
	else
		printf("no\n");

	return 0;
}

執行結果:

用函式實現模組化程式設計習題

寫一個函式,使給定的一個3*3的二維整型陣列轉置,即行列互換


//寫一個函式,使給定的一個3*3的二維整型陣列轉置,即行列互換
#include <stdio.h>

void Trans(int arr[3][3])
{
	printf("\n\n");
	for (int j = 0; j < 3; j++)//倒置輸出
	{
		for (int i = 0; i < 3; i++)
			printf("%d ", arr[i][j]);
		printf("\n");
	}
}

int main(void)
{
	int arr[3][3] = { 0 };//定義並初始化

	for (int i = 0; i < 3; i++)//輸入
		for (int j = 0; j < 3; j++)
			scanf("%d", &arr[i][j]);

	Trans(arr);

	return 0;
}

執行結果:

用函式實現模組化程式設計習題

寫一個函式,使輸入的一個字串按反序存放,在主函式中輸入和輸出字串


//寫一個函式,使輸入的一個字串按反序存放,在主函式中輸入和輸出字串
#include <stdio.h>

void reverseFunc(char charBuff[1024])
{
	char ch[1024];
	int i = 0;

	for (; i < 1024; i++)//備份
	{
		ch[i] = charBuff[i];

		if ('\0' == charBuff[i])
			break;
	}

	for (int j = 0; j <= i - 1; j++)//反轉
		charBuff[j] = ch[i - j - 1];
}

int main(void)
{
	char chBuff[1024];

	scanf("%s", chBuff);//輸入
	reverseFunc(chBuff);//反轉
	printf("%s\n", chBuff);//輸出

	return 0;
}

執行結果:

用函式實現模組化程式設計習題

寫一個函式,將兩個字串連線


//寫一個函式,將兩個字串連線
#include <stdio.h>

void addFunc(char charBuff1[1024], char charBuff2[1024], char charBuff3[2048])
{
	int i = 0;
	for ( ; i < 1024; i++)
	{
		if ('\0' == charBuff1[i])//到達末尾退出,結束符不新增
			break;

		charBuff3[i] = charBuff1[i];
	}

	for (int j = 0; j < 1024; j++)
	{
		charBuff3[i + j] = charBuff2[j];
		if ('\0' == charBuff2[j])//到達末尾退出,結束符新增
			break;
	}
}

int main(void)
{
	char chBuff1[1024], chBuff2[1024], chBuff3[2048];//定義

	scanf("%s%s", chBuff1, chBuff2);//輸入
	addFunc(chBuff1, chBuff2, chBuff3);//拼接
	printf("%s\n", chBuff3);//輸出

	return 0;
}

執行結果:

用函式實現模組化程式設計習題

寫一個函式,將一個字串中的母音字母複製到另一個字串,然後輸出


//寫一個函式,將一個字串中的母音字母複製到另一個字串,然後輸出
#include <stdio.h>

void copyFunc(char charBuff1[1024], char charBuff2[1024])
{
	int iCount = 0;
	for (int i = 0; i < 1024; i++)
	{
		if ('\0' == charBuff1[i])//遇到結束符則退出迴圈
			break;

		if (('a' == charBuff1[i]) ||
			('e' == charBuff1[i]) ||
			('i' == charBuff1[i]) ||
			('o' == charBuff1[i]) ||
			('u' == charBuff1[i]))
		{
			charBuff2[iCount] = charBuff1[i];//母音字母複製
			iCount++;
		}
	}

	charBuff2[iCount] = '\0';//新增結束符
}

int main(void)
{
	char chBuff1[1024], chBuff2[1024];//定義

	scanf("%s", chBuff1);//輸入
	copyFunc(chBuff1, chBuff2);//尋找母音字母
	printf("%s\n", chBuff2);//輸出

	return 0;
}

執行結果:

用函式實現模組化程式設計習題

寫一個函式,輸入一個4位數字,要求輸出這4個數字字元,但每個數字間空一個空格


//寫一個函式,輸入一個4位數字,要求輸出這4個數字字元,但每個數字間空一個空格
#include <stdio.h>

void Func(int arr[4])
{
	for (int i = 0; i < 4; i++)//輸出
		printf("%d ", arr[i]);

	printf("\n");
}

int main(void)
{
	int arr[4];//定義

	for (int i = 0; i < 4; i++)//輸入
		scanf("%d", &arr[i]);

	Func(arr);

	return 0;
}

執行結果:

用函式實現模組化程式設計習題

相關文章