当前位置:编程学习 > C/C++ >>

急求c语言详解,关于for语句的嵌套

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);
}
执行后输出结果为
追问:能不能详细点啊?我有答案就是不知道怎么做的
答案:1.最后显示
143
258
769
2.最后显示
58 
补充的
5  0  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个一行

上一个:我用Dev-C++编的程序总被360安全卫士拦截,怎么办啊?
下一个:(C语言)有四个警告warning C4033: 'main' must return a value,不能出运行结果,请帮忙看下

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,