急求c语言详解,关于for语句的嵌套
1.main(){inta[3][3]={1,2,3,4,5,6,7,8,9},m,k,t;for(m=0;m<3;m++)for(k=0;k<=m;k++)if((m+...
1.main()
{ int a[3][3]={1,2,3,4,5,6,7,8,9}, m, k, t;
for (m=0;m<3;m++)
for (k=0;k<=m;k++)
if ((m+k)%2)
t=a[m][k], a[m][k]=a[k][m], a[k][m]=t;
for (m=0;m<3;m++)
{for (k=0;k<3;k++)
printf("%d",a[m][k]);
printf("\n");
}
}第一行和第二行分别输出的数是多少?详解!
2.
main()
{ int a[4][4]={{1,2,-3,-4},{0,-12,-13,14} ,{-21,23,0,-24},{-31,32,-33,0}};
int i,j,s=0;
for(i=0;i<4;i++)
{ for(j=0;j<4;j++)
{ if(a[i][j]<0) continue;
if(a[i][j]==0) break;
s+=a[i][j];
}
}
printf("%d\n",s);
}
执行后输出结果是多少?详解!
main()
{ int a=4,b=3,c=5,t=0;
if(a<b)t=a;a=b;b=t;
if(a<c)t=a;a=c;c=t;
printf("%d %d %d\n",a,b,c);
}
执行后输出结果为 展开
{ int a[3][3]={1,2,3,4,5,6,7,8,9}, m, k, t;
for (m=0;m<3;m++)
for (k=0;k<=m;k++)
if ((m+k)%2)
t=a[m][k], a[m][k]=a[k][m], a[k][m]=t;
for (m=0;m<3;m++)
{for (k=0;k<3;k++)
printf("%d",a[m][k]);
printf("\n");
}
}第一行和第二行分别输出的数是多少?详解!
2.
main()
{ int a[4][4]={{1,2,-3,-4},{0,-12,-13,14} ,{-21,23,0,-24},{-31,32,-33,0}};
int i,j,s=0;
for(i=0;i<4;i++)
{ for(j=0;j<4;j++)
{ if(a[i][j]<0) continue;
if(a[i][j]==0) break;
s+=a[i][j];
}
}
printf("%d\n",s);
}
执行后输出结果是多少?详解!
main()
{ int a=4,b=3,c=5,t=0;
if(a<b)t=a;a=b;b=t;
if(a<c)t=a;a=c;c=t;
printf("%d %d %d\n",a,b,c);
}
执行后输出结果为 展开
2个回答
展开全部
你的代码写的真乱,看着好累,有些分号都没有
main()
{ int a[3][3]={1,2,3,4,5,6,7,8,9}, m, k, t; //定义一个二维数组a[3][3],声明了3个变量m,k,t
for (m=0;m<3;m++) //第一个for循环
for (k=0;k<=m;k++) //第二个for循环镶嵌在第一个中
if ((m+k)%2) //求(m+k)除以2的余数是0还是1,其实就是看是不是一个奇数,1是true执行下面一行代码,0是false,跳过下面一行,继续上面的for循环
t=a[m][k], a[m][k]=a[k][m], a[k][m]=t; //这里和上面有关,如果上面是true则交换a[m][k]和a[k][m]的值
for (m=0;m<3;m++) // 这是第三个for循环
{for (k=0;k<3;k++) //这是第四个for循环,镶嵌第三个里面
printf("%d",a[m][k]); //打印 a[m][k]的值
printf("\n"); //打第四个for循环没完成一次打一个回车
}
总的来说,第一个for循环和第二个for循环一起工作,
比如第一轮是m=0是,k分别是0,然后比较0+0是不是奇数,不是的话不管,是的话交换a[0][0]和a[0][0]的值,第一个你可能不懂,看第二就明白了
第二轮是m=1,k分别是0和1,先看0的情况,1+0=1,奇数,所以交换a[1][0]和a[0][1]的值
第三轮是m=2,k分别为0,1,2......
**************************这样,2个for循环就结束了,改换的数字都被换了
第三第四轮for循环没什么特殊意义,只是为了把从a[0][0]到a[2][2]的所有数字答应出来而已,而且每3个一行
main()
{ int a[3][3]={1,2,3,4,5,6,7,8,9}, m, k, t; //定义一个二维数组a[3][3],声明了3个变量m,k,t
for (m=0;m<3;m++) //第一个for循环
for (k=0;k<=m;k++) //第二个for循环镶嵌在第一个中
if ((m+k)%2) //求(m+k)除以2的余数是0还是1,其实就是看是不是一个奇数,1是true执行下面一行代码,0是false,跳过下面一行,继续上面的for循环
t=a[m][k], a[m][k]=a[k][m], a[k][m]=t; //这里和上面有关,如果上面是true则交换a[m][k]和a[k][m]的值
for (m=0;m<3;m++) // 这是第三个for循环
{for (k=0;k<3;k++) //这是第四个for循环,镶嵌第三个里面
printf("%d",a[m][k]); //打印 a[m][k]的值
printf("\n"); //打第四个for循环没完成一次打一个回车
}
总的来说,第一个for循环和第二个for循环一起工作,
比如第一轮是m=0是,k分别是0,然后比较0+0是不是奇数,不是的话不管,是的话交换a[0][0]和a[0][0]的值,第一个你可能不懂,看第二就明白了
第二轮是m=1,k分别是0和1,先看0的情况,1+0=1,奇数,所以交换a[1][0]和a[0][1]的值
第三轮是m=2,k分别为0,1,2......
**************************这样,2个for循环就结束了,改换的数字都被换了
第三第四轮for循环没什么特殊意义,只是为了把从a[0][0]到a[2][2]的所有数字答应出来而已,而且每3个一行
展开全部
1.最后显示
143
258
769
2.最后显示
58
补充的
5 0 3
143
258
769
2.最后显示
58
补充的
5 0 3
追问
能不能详细点啊?我有答案就是不知道怎么做的
追答
1.第一个里其他的没什么好解释的
for (k=0;k<=m;k++)
if ((m+k)%2) //取余,若是1执行下面的
t=a[m][k], a[m][k]=a[k][m], a[k][m]=t; //就是a[m][k]和a[k][m]交换
2.for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(a[i][j]<0) continue; //如果a[i][j]<0成立,结束本次循环进入下一个循环,不执行下面的语句
if(a[i][j]==0) break; //如果a[i][j]==0成立,跳出循环语句执行下一句
s+=a[i][j];
}
补充的那个没什么好解释的,按步骤来就有答案了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询