
求教,编程错误在哪?
五、编程题建立数组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");}} 展开
建立数组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");}} 展开
展开全部
有很多细节的地方出现错误了,我帮你修改了,也注释了,你看一下吧
#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;
}
#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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询