0
点赞
收藏
分享

微信扫一扫

浅谈二维数组行列置换

诗尚凝寒 2022-04-14 阅读 55
c语言

先甩两个源代码:

/*===============================================
*   文件名称:five.c
*   创 建 者:     
*   创建日期:2022年03月27日
*   描    述:
================================================*/
#include <stdio.h>

int main(int argc, char *argv[])
{
    int a[2][3]={0};
    printf("please input six number:\n");
    for(int i=0;i<2;i++)
        for(int j=0;j<3;j++)
            scanf("%d ",&a[i][j]);
    printf("the six number is:\n");
    for(int j=0;j<3;j++)
        for(int i=0;i<2;i++){
            printf("%d ",a[i][j]);
            if(i==1)
                printf("\n");
        }


} 
root@ubuntu:/C# ./a.out
please input six number:
1 2 3
4 5 6
1             
//多出来的 1 是因为scanf("%d ");即 %d 后面有个空格,当然,这里也可以写出%nd,不打空格
the six number is:
1 4 
2 5 
3 6 

 

①理解局部变量,全局变量

for循环里的 'i' 是局部变量,循环结束便销毁。

②理解二维数组行列互换与 'i' 和 'j' 无关,'i','j'只是控制数组内部元素进行行列的输出

③二维数组本质上还是一个含有两个一维数组的一维数组,想象成围棋盘,其数组元素还是依次存放的,因此无论两个for括号内的条件怎么办,printf()还是打印a[i][j].

反例:

 

root@ubuntu:/C# cat five.c
/*===============================================
*   文件名称:five.c
*   创 建 者:     
*   创建日期:2022年03月27日
*   描    述:
================================================*/
#include <stdio.h>

int main(int argc, char *argv[])
{
    int a[2][3]={0};
    printf("please input six number:\n");
    for(int i=0;i<2;i++)
        for(int j=0;j<3;j++)
            scanf("%d ",&a[i][j]);
    printf("the six number is:\n");
    for(int j=0;j<3;j++)
        for(int i=0;i<2;i++){
            printf("%d ",a[j][i]);
            if(i==1)
                printf("\n");
        }


}
please input six number:
1 2 3
4 5 6
1
the six number is:
1 2 
4 5 
700364032 775990375 

不知道你们理解了没,再甩一个代码

     1	/*===============================================
     2	 *   文件名称:l32.c
     3	 *   创 建 者:     
     4	 *   创建日期:2022年04月13日
     5	 *   描    述:
     6	 求4名同学的3门学科,单科成绩的平均分,所有科目的平均分
     7	 ================================================*/
     8	#include <stdio.h>
     9	
    10	int main(int argc, char *argv[])
    11	{
    12	    int i,j,k=0;
    13	    float sum=0;
    14	    float avg_score[3]={0};     //存单科成绩的平均分
    15	    float avg[4]={0};           //存考生所得成绩的平均分
    16	    float score[4][3]={0};      //存全部成绩 
    17	    printf("请依次输入四名同学的语文、数学、英语成绩:\n");
    18	    for(i=0;i<4;i++)
    19	    {
    20	        for(j=0;j<3;j++)
    21	        {
    22	            scanf("%f",&score[i][j]);
    23	        }
    24	        printf("==============\n");
    25	    }
    26	    for(i=0;i<4;i++)
    27	    {
    28	        for(;k<4;)
    29	        {
    30	            for(j=0;j<3;j++)
    31	            {
    32	                sum += score[i][j];
    33	            }
    34	            avg[k] = sum/3;
    35	            sum = 0;
    36	            printf("第%d位同学所得成绩的平均分为:%f\n",k+1,avg[k]);
    37	            k++;
    38	            break;  //跳出内层循环
    39	        }
    40	    }
    41	    k=0;
    42	    sum=0;
    43	    printf("=====行列互换=====\n");
    44	    for(j=0;j<3;j++)
    45	        for(i=0;i<4;i++)
    46	        {
    47	            printf("%f ",score[i][j]);
    48	            if(i==3)
    49	                printf("\n");
    50	        }
    51	    printf("学科依次是语文,数学,英语\n");
    52	    for(j=0;j<3;j++)
    53	    {
    54	        for(;k<3;)
    55	        {
    56	            for(i=0;i<4;i++)
    57	            {
    58	                sum += score[i][j];//四人同科
    59	            }
    60	            avg_score[k] = sum/4;
    61	            printf("第%d学科成绩的平均分为:%f\n",k+1,avg_score[k]);
    62	            sum=0;
    63	            k++;
    64	            break;
    65	        }
    66	    }
    67	    return 0;
    68	} 

最后,一起加油!

举报

相关推荐

0 条评论