c语言 最大公约数 编译通过 为什么运行总错误啊

来源:百度知道 编辑:UC知道 时间:2024/06/07 22:36:11
#include<stdio.h>
void main()
{
int a[10],min,i;
for(i=0;i<10;i++)
{scanf("%d",a[i]);
if(i==0) min=a[0];
if(a[i]<min) min=a[i];
}/*用min存放十个数中最小的*/
do{
for(i=0;i<10;i++)
{
if(a[i]%min!=0)
{min--;
break;}
}
}while(i<10);/*循环让每个数都除以min到1 都能除尽时的min 就是所要求的*/
printf("%d\n",min);
}

不需要你们重写别的算法的代码 只要指出我这个哪里错了就行了谢谢

#include<stdio.h>
int main()
{
int a[10],min,i,j=0;
for(i=0;i<10;i++)
{scanf("%d",&a[i]); //输入没取地址 &
if(i==0) min=a[0];
if(a[i]<min) min=a[i];
}/*用min存放十个数中最小的*/
do{
for(i=0;i<10;i++)
{
if(a[i]%min!=0)
{min--;
break;
}
}
}while(i<10);/*循环让每个数都除以min到1 都能除尽时的min 就是所要求的*/
printf("%d\n",min);
}

错误再这里:scanf("%d",&a[i]); 少了一个取地址符
下面是我优化过的。。。你的循环太复杂了

#include<stdio.h>
void main()
{
int a[10],min,i;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
if(i==0) min=a[0];
if(a[i]<min) min=a[i];
}/*用min存放十个数中最小的*/
i=0;
for(;i<10;i++)
{
if(a[i]%min!=0)
{
min--;
i=0;
}
};
printf("%d\n",min);
}

楼上 jeanhonk - 高级经理 六级
指出的错误就是你会运行时通不过的原因

而且,