1、main()inta[]={2,4,6,8,10},y=10,x,*p;p=&a[1];for(x=1,x<3;x++)y+=p[x];printf("%d\n",y);结果是14
2、main(){inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a...
2、main(){int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for( j=0;j<=i;j++)s+=a[i][j];printf("%d\n",s)
结果是18
第一个程序里 第一次经过for(x=1,x<3;x++) 后y+=p[x] 是 y=y+p[2]
第二个程序第一次经过for( j=0;j<=i;j++)后s=s+a[1][0],为啥不是a[1][1]或a[2][1],
对于这类问题很乱,到底怎么回事 展开
结果是18
第一个程序里 第一次经过for(x=1,x<3;x++) 后y+=p[x] 是 y=y+p[2]
第二个程序第一次经过for( j=0;j<=i;j++)后s=s+a[1][0],为啥不是a[1][1]或a[2][1],
对于这类问题很乱,到底怎么回事 展开
2个回答
展开全部
程序最好排一下版。
首先解释一下for循环
for(i = 0; i<n;++i}
{
doSomeThing(i);
}
i = 0为初始化语句,只有第一次循环时会执行。
i < n为循环条件,每一次循环前都会进行检查。
++i为附属操作,每一次循环后都会执行
第一题:
main()
{
int a[]={2,4,6,8,10};
int y=10,x,*p;
p=&a[1];
for(x=1,x<3;x++)
{
y+=p[x];
}
printf("%d\n",y);
}
第一次经过for(x=1,x<3;x++) 后y+=p[x] 应该是 y=y+a[2]而不是y=y+p[2]
第一次执行循环, x 为1,因此下面一句为 y = y + p[1]
p的初值为&a[1],即p[0] = a[1], p[1] = a[2]
第二题
main()
{
int a[3][3]={{1,2},{3,4},{5,6}};
int i,j,s=0;
for(i=1;i<3;i++)
{
for( j=0;j<=i;j++)
{
s+=a[i][j];
}
printf("%d\n",s);
}
}
第一次进入循环i = 1; j = 0; s = s + a[1][0];
首先解释一下for循环
for(i = 0; i<n;++i}
{
doSomeThing(i);
}
i = 0为初始化语句,只有第一次循环时会执行。
i < n为循环条件,每一次循环前都会进行检查。
++i为附属操作,每一次循环后都会执行
第一题:
main()
{
int a[]={2,4,6,8,10};
int y=10,x,*p;
p=&a[1];
for(x=1,x<3;x++)
{
y+=p[x];
}
printf("%d\n",y);
}
第一次经过for(x=1,x<3;x++) 后y+=p[x] 应该是 y=y+a[2]而不是y=y+p[2]
第一次执行循环, x 为1,因此下面一句为 y = y + p[1]
p的初值为&a[1],即p[0] = a[1], p[1] = a[2]
第二题
main()
{
int a[3][3]={{1,2},{3,4},{5,6}};
int i,j,s=0;
for(i=1;i<3;i++)
{
for( j=0;j<=i;j++)
{
s+=a[i][j];
}
printf("%d\n",s);
}
}
第一次进入循环i = 1; j = 0; s = s + a[1][0];
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询