C语言练习作业(四)

题目:输入两个整数,用函数算出两个整数的最大公约数和最小公倍数。


最大公约数的求法用辗转相除法最方便。最小公倍数的求法直接用两数的积除以它们的最大公约数。


上代码:


</pre><p></p><pre class="plain" name="code">#include<stdio.h>

int gcd(int a, int b);//最大公约数
int lcm(int a, int b);//最小公倍数
void change(int d[3][3]);

int main()
{
	int a = 0, b = 0;
	int d[3][3] = { 1,2,3,4,5,6,7,8,9 };
	int gcd_g, lcm_l;
	printf_s("请输入两个整数:\n");
	scanf_s("%d,%d", &a, &b);
	gcd_g = gcd(a, b);
	lcm_l = lcm(a, b);
	printf_s("最大公约数是%d,最小公倍数是%d。", gcd_g, lcm_l);
	change(d);
	return 0;
}

int gcd(int a, int b)
{
	int t = 0;
	int gdc_g = 0;
	while (b != 0)
	{
		t = a%b;
		a = b;
		b = t;
	}
	gdc_g = a;
	return gdc_g;
}

int lcm(int a, int b)
{
	int gdc_g = 0;
	int lcm_l = 0;
	gdc_g = gcd(a, b);
	lcm_l = (a*b) / gdc_g;
	return lcm_l;
}


题目二:用函数使3×3的二维数组行列互换。


不知道是不是因为困了,居然犯了许多低级错误,使得程序总是无法执行,主要还是死循环的问题,以后真的要多注意了。上面的代码包含了本题的一部分,下面就只贴函数部分了。


void change(int a[3][3])
{
	//int a[3][3] = { {1,2,3},{4,5,6},{7,8,9} };
	int t = 0;
	for (int i = 0; i < 2; i++)
	{
		for (int j = 3; j > 1; j--)
		{
			t = a[j - 1][i];
			a[j - 1][i] = a[i][j - 1];
			a[i][j - 1] = t;
		}
	}
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			printf_s("%d ", a[i][j]);
		}
		printf_s("\n");
	}
}

阅读更多
个人分类: 个人练习作业
上一篇C语言练习作业(三)
下一篇C语言练习作业(五)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭