C语言任务,关于函数,帮看一下,谢谢

来源:百度知道 编辑:UC知道 时间:2024/07/16 12:14:10
按以下要求编写程序:
(1) 编写函数int gcd_max(int a[], int b[], int n),求长度为n的数组a中所有相邻两元素的最大公约数(共n-1个),并将之依次保存到
数组b中,函数返回b数组中最大数的下标。
(2) 编写main()函数,声明一个数组并用以下测试数据对其初始化;调用函数gcd_max(),将求得的所有公约数、最大的公约数及其下标打
印在屏幕上。
测试数据为:3,6,4,16,8,5,15,10,12,18
相应的输出应该是:3,2,4,8,1,5,5,2,6
max=8,max_index=3
(实习目的:掌握数值型数组作为函数参数,最大公约数算法的巩固,数组中的查找操作。)

#include<stdio.h>

int gcd_max(int a[], int b[], int n)
{
int tmp,i,ia,ib;

for(i=0;i<n-1;i++)
{
ia=a[i];ib=a[i+1];

if(ia>ib)
{
tmp=ia;
ia=ib;
ib=tmp;
}
while(ib!=0)
{
tmp=ia%ib;
ia=ib;
ib=tmp;
}

b[i]=ia;
}

tmp=b[0];
for(i=0;i<n-1;i++)
{
if(b[i]<b[i+1])
tmp=b[i+1];
}
for(i=0;i<n-1;i++)
printf("%4d",b[i]);
printf("\n");
return tmp;
}

int main(void)
{
int a[10]={3,6,4,16,8,5,15,10,12,18};
int b[9];
int n=10;
int index_max;
index_max=gcd_max(a,b,n);
printf("max=%d,max_index=%d\