• 15周作业(二维数组)


    本周学习内容总结

      1.二维数组

      1).二维数组的定义和引用

    • 定义 类型名 数组名[行长度][列长度]

      int a[3][2];
      定义1个二维数组 a,3 行 2 列,6 个元素

      int b[5][10];
      定义1个二维数组 b,5 行 10 列, 50 个元素

    • 引用
      先定义,后使用
      数组元素的引用:
      数组名[行下标] [列下标]
      行下标和列下标:整型表达式
      行下标的取值范围是[0,行长度-1]
      列下标的取值范围是[0,列长度-1]

      int a[3][2]; 3 行 2 列, 6个元素
      a[0][0] a[0][1]
      a[1][0] a[1][1]
      a[2][0] a[2][1]

      2). 二维数组的初始化

    • 分行赋初值 int a[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; static int b[4][3] = { {1, 2, 3}, { }, {4, 5} };

      数组a
      1 2 3
      4 5 6
      7 8 9

      数组b
      1 2 3
      0 0 0
      4 5 0
      0 0 0

    • 顺序赋初值
      int a[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
      static int b[4][3] = { 1, 2, 3, 0, 0, 0, 4, 5 };

    • 在对数组全部元素赋初值时,不可以省略行数,但能省略列数
      省略行长度
      对全部元素都赋了初值
      int a[ ][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
      或分行赋初值时,在初值表中列出了全部行
      static int b[ ][3] = { {1, 2, 3}, { }, {4, 5}, { } }

      3).使用二维数组编程
      <1>.方阵转置
      输入一个正整数n (1<n≤6),根据下式生成1个n*n的方阵,然后将该方阵转置(行列互换)后输出。
      a[i][j] = i * n + j + 1 (0 ≤ i ≤ n-1,0 ≤ j ≤ n-1)
      分析:int a[6][6]; n=3时

      代码为:

      #include <stdio.h>
      int main(void)
      {   int i, j, n, temp;
          int a[6][6];
       
          printf ( "Enter n: “ );   scanf ( "%d", &n ); 
          /* 给二维数组赋值  略…… */
      
         /* 行列互换 */
        for ( i = 0; i < n; i++ )
              for ( j = 0; j < n; j++ )
                  if ( i <= j ){             /* 只遍历上三角阵 */
              temp = a[i][j]; a[i][j] = a[j][i]; a[j][i] = temp;
                  }
      
          /* 按矩阵的形式输出a  略…… */
          return 0;
      } 
      

      <2>.计算日期 ![](https://images2018.cnblogs.com/blog/1238300/201712/1238300-20171203103716413-570143660.png)

      代码:

      <font size=5 color="black">int year,  month,  day;
          int k, leap;
          int tab[2][13] = {					
              {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, 
              {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} 
          };
      	scanf("%d %d %d", &year, &month, &day);
          leap = (year % 4 == 0 && year%100!=0 || year%400==0); 
          for(k = 1; k < month; k++)
          {    	day = day + tab[leap][k];	}       
          printf("day = %d
      ", day) ; 
          return 0;
      } 
      

      2.一维字符数组

    • 字符串的存储和运算可以用一维字符数组实现
    • 一维字符数组的定义、引用、初始化与其他类型的一维数组一样。
      char str[80];
      定义一个含有80个字符型元素的数组str
      char t[5]={'H', 'a', 'p', 'p', 'y'};
      初始化数组 t

      1).字符串

    • 字符串的存储-数组初始化
      字符串可以存放在一维字符数组中
      static char s[6] = { 'H', 'a', 'p', 'p', 'y', '' };
      字符数组初始化:用字符串常量
      static char s[6] = { "Happy" };
      static char s[6] = "Happy";
      数组长度 ≥ 字符串的有效长度 + 1
      char t[5]; "Happy" 能存入 t 吗?

    • 字符串的存储

    • 对字符串的操作

    • 字符串的存储-赋值和输入

    • 使用字符串编程

      本周学习进程

    热爱每一天
  • 相关阅读:
    MVC的布局页,视图布局页和分布页的使用
    C#程序的编译过程
    页面跳转到Area区域连接
    c#静态变量和非静态变量的区别
    C#设计模式:适配器模式(Adapter Pattern)
    依赖注入
    打印随机数到字符串中
    printf/scanf格式
    用fread和fwrite实现文件复制操作
    用fseek和ftell获取文件的大小
  • 原文地址:https://www.cnblogs.com/blueblog6/p/7965497.html
Copyright © 2020-2023  润新知