关闭

C语言练习作业(四)

180人阅读 评论(0) 收藏 举报
分类:

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


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


上代码:


</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");
	}
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1174次
    • 积分:79
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档