作业帮 > 综合 > 作业

C语言程序设:输入两个正整数m和n,求它们所有的公约数,从大到小排列

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 07:47:55
C语言程序设:输入两个正整数m和n,求它们所有的公约数,从大到小排列
加一个要求 输出时5个数一行 老师说用什么计数器,求教
#include
int main()
{
int n,m,count,min,i;
int a[100];
while(scanf("%d %d",&n,&m)!=EOF)
{
count=0;
if(n>m)
min=m;
else
min=n;
for(i=min;i>0;i--)
{
if(n%i==0 && m%i==0)
{
a[count++]=i;//这里的count就是所谓的计数器思想,所谓的计数器是一种思想,用来计数或者标记其他的作用
}
}
for(i=0;i
再问: 能不能不用数组做一下,加一个要求 输出时5个数一行
再答: #include int main() { int min,n,m,i,count; while(scanf("%d %d",&n,&m)!=EOF) { count=0; if(n>m) min=m; else min=n;//确定n,m中小的那一个 for(i=min;i>0;i--)//因为从大到小,所以你就直接从大往小搜,这样就不用排了 { if(m%i==0 && n%i==0) { count++;//这样这里的计数器就是为输出格式准备了,好好理解,其实也算是一种标记,记住他是一种思想,并不是具体的规定格式方法 if(count==5) { printf("%d\n",i); count=0;//注意哦,五个到的时候,计数器得清0,这里容易犯错 } else printf("%d ",i); } } } return 0; } 也要注意理解for循环的意思,
再问: 我按照老师的思路写了一个,输出换行有问题,都连在一起,不能5个一行 #include main() {int min,n,m,i,count; printf("请输入两个正整数:\n"); scanf("%d %d",&n,&m); printf("%d和%d的公约数是:\n", m, n); if(n>m) min=m;else min=n; for(i=min;i>0;i--) {if(m%i==0 && n%i==0) { printf("%-4d",i); count++; if(count%5==0) printf("\n"); } } system("pause");}
再答: 你的count 没有初始化为0,所以 你后面的count++,根本不可能让count的值为一个整数,count的值只会是乱码,所以 count%5==0这根本不可能发生