求教,编程错误在哪?

五、编程题建立数组a[16],元素产生方法:用初值a[0]=26及公式a[i+1]=(25*a[i]+375)%1024,a[0]~a[7]为第一行,a[8]~a[15]... 五、编程题
建立数组a[16],元素产生方法:用初值a[0]=26及公式a[i +1]=(25*a[i]+375)%1024,
a[0]~a[7]为第一行,a[8]~a[15]为第二行,第三行元素取前两行同列元素的最大公约数。
要求:
.1.源程序文件名:MYF62.C;

#include<stdio.h>
#include<math.h>
gcd(int a,int b);
{int c;
while(b!=0)
{c=a%b;a=b;b=c}
return a;
}
void main()
{ int a[23],i,j,m,n;
for(a[0]=26,i=0;i<=17;i++)
a[i+1]=(25*a[i]+375)%1024;
for(j=17;j<=23;j++)
a[i+1]=gcd(a[i],a[i+8]);
for(m=0;m<=1;m++)
{if(m!=2)
for(n=0;n<=7;n++)
printf("%d",a[i]);
else
for(n=0;n<=7;n++)
printf("%d",a[j]);
printf("\n");}}
展开
 我来答
松甜恬0Je4ba
2013-04-21 · TA获得超过2.6万个赞
知道大有可为答主
回答量:7475
采纳率:100%
帮助的人:4130万
展开全部
有很多细节的地方出现错误了,我帮你修改了,也注释了,你看一下吧
#include<stdio.h>
#include<math.h>
int gcd(int a,int b) //这里没有分号
{
//这里要保证a>=b
int c;
if(a<b)
{
c=a;
a=b;
b=c;
}
while(b!=0)
{c=a%b;a=b;b=c;}
return a;
}
int main()
{ int a[24]={0},i,j,m,n; //这里应该为24吧 总共3行,每行8个
for(a[0]=26,i=0;i<15;i++) //这里的i应该小于15,i+1 =15 正好是前两行的元素 0-7 8-15。 这样以后i=15了
a[i+1]=(25*a[i]+375)%1024;
for(j=0;j<=7;j++,i++) //第三行从 16-23 j表示列的位置 i表示元素的下标,所以从0到7 i从16 到23
a[i+1]=gcd(a[j],a[j+8]);
for(m=0;m<=2;m++) //总共三行 0 1 2 所以中间条件为 <=2
{
if(m==2)
{
for(n=0;n<=7;n++)
printf("%4d",a[m*8+n]); //注意理解这里元素下标的确定
}
else
{
for(n=0;n<=7;n++)
printf("%4d",a[m*8+n]);
printf("\n");
}
}
getchar(); //结果页面停留
return 0;
}
q86456378q
2013-04-21 · 超过34用户采纳过TA的回答
知道答主
回答量:102
采纳率:100%
帮助的人:68.4万
展开全部
{ int a[23],总共有24个元素啊,
for(j=17;j<=23;j++)
a[i+1]=gcd(a[i],a[i+8]);
这里没看明白啊
j循环了有作用吗
gcd(int a,int b);后面不应该有分号
(a[i],a[i+8])a[i]一定比a[i+8]大吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式