输入两个正整数m和n,求其最大公约数和最小公倍数 程序编写如下: main() {int p,r,n,m,t; printf("输入两个正整数m,n"); scanf("%d,%d",&n,&m); if(n<m) {t=m;m=n;n=t;} p=n*m; while (m!=0) {r=n%m;n=m;m=r;} printf("最大公约数为:%d\n",n); printf("最小公倍数为:%d\n",p/n); } 对于 if(n<m) {t=m;m=n;n=t;} p=n*m; while (m!=0) {r=n%m;n=m;m=r;} 这段程序,我不是太明白,请各位帮忙详细的解释一下 还有题,求n! main() {float t=1; int n; for (n=1; ;n++) t=t*n; printf("%e",t); } 呵呵,这是我自己写的,估计是个死循环。 唉,C语言才刚开始学,前面这些简单的题目都不会写,到以后比这更难更烦的该怎么办啊, 我都快没信心了,而且我发现,要学好C,数学和外语的底子要好,是吧
----------------解决方案--------------------------------------------------------
if(n<m)
{t=m;m=n;n=t;} 是把大的数放在前面的,一般说是交换2个付值数的位置,n〈m是交换条件。
p=n*m; 这个懂吧!
r=n%m 一 也该知道了吧 是求余数的。
我以为这你清楚了 句没问题了吧 我以前就是那有问题 不知道你清楚不?
----------------解决方案--------------------------------------------------------
当然是个死循环了啊 你的没有结束条件啊 就是说那N值什么时候是个头啊,是吧;是你的循环体出了问题;:
----------------解决方案--------------------------------------------------------
第一个题很显然 首先是楼主什么公约数公倍数没弄清楚 小学学的 我也忘得差不多了 我猜用到了小学奥林匹克的数学“韩信点兵” 一会我去查资料 再学小学数学哈
第二个题 for中间的那个条件控制都是空的 当然是死循环了
最后的问题 现在是竞争的社会 要别人强要竞争过别人就肯定要作出巨大的决心付出巨大的代价 不可否认 对楼主来说学好C很困难 但要什么困难都克服不了最终你只能一事无成了
据小生所知 学C不难 但要用好C需要良好的数学底子 英语底子倒暂时不用考虑
一开始学c有个初中数学底子就可以了 以后会一定程度上地用C了 再补数学也不迟
----------------解决方案--------------------------------------------------------
用辗转法吧
----------------解决方案--------------------------------------------------------
//我也写也个看看把 #include<stdio.h>
int gcd(int x,int y) { int t=1; while(t) { t=x%y; if(t==0) break; x=y; y=t; } return y; }
int gc(int x,int y) { int s; s=x/y; return s; }
void main() { int a,b,k,m,j=0; printf("input two number a>b:\n"); scanf("%d %d",&a,&b); m=a*b; k=gcd(a,b); j=gc(m,k); printf("k=%d\t j=%d\n",k,j); }
----------------解决方案--------------------------------------------------------
我想问个问题,为什么两个数的乘积除以它们的最大公约数,等于它们的最小公倍数???
我想来想去始终都想不明白,只能强行记忆了!
----------------解决方案--------------------------------------------------------
....问问你的小学老师...
----------------解决方案--------------------------------------------------------
晕!你这题目挺刺激人的!
----------------解决方案--------------------------------------------------------