C语言练习作业(四)

来源:互联网 发布:sql select if 用法 编辑:程序博客网 时间:2024/06/10 08:46

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


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


上代码:


</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