一维数组、二维数组用数学公式初始化以及二维数组的行坐标可省

<span style="font-size:14px;">#include<stdio.h>
#include<stdlib.h>

//二维数组赋值
void show2()
{
    int a[3][4];
    int k=0;
    for(int i=0;i<3;i++)
    {
        for(int j=0;j<4;j++)
        {
            a[i][j]=i*4+(j+1);//数学公式 赋值
        //    a[i][j]= ++k;//与上面效果一致
            printf("%-6d",a[i][j]);
        }
        printf("\n");
    }
}
//一维数组赋值
void show1()
{
    int a[3][4];
    int k=0,count=0;
    for(int i=0;i<12;i++)
    {
        //25/10=2,25%10=5;78/10=7,78%10=8,即除以10得到十位,模10得到个位,相当于一个横坐标x,一个纵坐标y
        //以第二个下标为基准 (即除和取余都是以y为运算)
        a[i/4][i%4]=i;//一维数组初始化
        a[i/4][i%4]=++k;
        count++;

        printf("%-6d",a[i/4][i%4]);
        if(count%4==0)
        {
            printf("\n");
        }
    }
}
int main()
{
    show2();
    show1();

    int a[3][4]={0};//二位数组赋值为0,则全部为0
    //二维数组可以当做 一个一维数组,每一元素又是一个一维数组
    int a[3][4]={{1,2},{5,6,7,8},{9,10,11,12}};

    int a[][4]={{1,2,3,4}};//大括号初始化以后,行坐标可以省略
    printf("%d\n",sizeof(a));

    //列坐标不可以省略,因为二维数组,每一个元素又是一个一维数组,一维数组的长度不能省略
    //int a[3][]={{0},{0},{0}};//错误

    //N维数组,有大括号初始化有确定的因素,只有第一个可以省略
    return 0;
}</span>

二维动态数组

两种模式

第一种整体排序是连续的。与静态二维数组一样使用

第二种整体之间不连续的,一个指针数组,每一个元素都是指针,存放了另外一个数组的地址

时间: 2024-10-06 00:23:02

一维数组、二维数组用数学公式初始化以及二维数组的行坐标可省的相关文章

数组(随机生成一维数组),二维数组的概念和题目设计(利用二维数组 :任意给定分数去计算科目和人均平均分)

1 //数组间的关系arr[]中的数字为几,[]内就有几个数 2 //{ }内的数是从0开始,如需要打印应从0开数 3 如{2,6,9,8,7}打印arr[4]就是7 4 #include <stdio.h> 5 #include <stdlib.h> 6 int main() 7 { 8 int arr[] = { 1,2,3,4,8}; 9 10 printf("%d\n", arr[3]); 11 12 system("pause");

数组属性的习题、Arrays工具、二维数组

一.数组的练习 1.声明一个char类型的数组, 从键盘录入6个字符: [1]遍历输出 [2]排序 [3]把char数组转化成一个逆序的数组. 1 import java.util.Scanner; 2 public class Operation01{ 3 public static void main (String[] args){ 4 char[] zifu = new char[6]; 5 Scanner car = new Scanner(System.in); 6 char tem

java 数据结构 图中使用的一些常用算法 图的存储结构 邻接矩阵:图的邻接矩阵存储方式是用两个数组来标示图。一个一位数组存储图顶点的信息,一个二维数组(称为邻接矩阵)存储图中边或者弧的信息。 设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为: 实例如下,左图是一个无向图。右图是邻接矩阵表示:

以下内容主要来自大话数据结构之中,部分内容参考互联网中其他前辈的博客. 图的定义 图是由顶点的有穷非空集合和顶点之间边的集合组成,通过表示为G(V,E),其中,G标示一个图,V是图G中顶点的集合,E是图G中边的集合. 无边图:若顶点Vi到Vj之间的边没有方向,则称这条边为无项边(Edge),用序偶对(Vi,Vj)标示. 对于下图无向图G1来说,G1=(V1, {E1}),其中顶点集合V1={A,B,C,D}:边集合E1={(A,B),(B,C),(C,D),(D,A),(A,C)}: 有向图:若

【c语言】二维数组中的查找,杨氏矩阵在一个二维数组中,每行都依照从左到右的递增的顺序排序,输入这种一个数组和一个数,推断数组中是否包括这个数

// 二维数组中的查找,杨氏矩阵在一个二维数组中.每行都依照从左到右的递增的顺序排序. // 每列都依照从上到下递增的顺序排序.请完毕一个函数,输入这种一个数组和一个数.推断数组中是否包括这个数 #include <stdio.h> #define col 4 #define rol 4 int yang(int(*p)[col], int num) { int i = 0; int j = col - 1; while (j+1) { int *q = &(p[i][j]); if

程序猿之--C语言细节13(二维数组和指针,&amp;*a[i][0]的理解,数组1[e]和e[1]很可能你没见过)

主要内容:二维数组和指针,&*a[i][0]的理解.数组1[e]和e[1] #include <stdio.h> #define NUM_ROWS 10 #define NUM_COLS 10 int main(int argc, char **argv) {     int a[NUM_ROWS][NUM_COLS], *p, i = 0; // a理解为指向整数指针的指针 即int **     int c, d=2,*test, e[2] = {4,5},f[2][2] = {{

初始化一个多维数组

原文:初始化一个多维数组 <C和指针>第8章编程练习第1题: 1 /* 2 ** 初始化一个数组,其特定位置初始化为特定的值 3 */ 4 5 static unsigned char char_value[3][6][4][5] = { 6 { // 0 7 { // 0,0 8 { 0 } // 0,0,0 9 } 10 }, 11 { // 1 12 { // 1,0 13 { 0 } // 1,0,0 14 }, 15 { // 1,1 16 { 0 }, // 1,1,0 17 {

数组的三种声明方式总结、多维数组的遍历、Arrays类的常用方法总结

1. 数组的三种声明方式 public class WhatEver { public static void main(String[] args) { //第一种 例: String[] test1 = new String[6]; test1[0] = "数组0"; test1[1] = "数组1"; //第二种 例: String[] test2 = {"数组0","数组1","数组2","

Chapter5_初始化与清理_数组初始化与可变参数列表

一.数组初始化 数组是相同类型的,用一个标识符名称封装到一起的一个对象序列或基本类型数据序列.编译器是不允许指定数组的长度的,当使用语句int[] a时,拥有的只是一个符号名,即一个数组的引用,并不拥有这个数组的存储空间.要获取数组的存储空间,必须要写初始化表达式,最朴素的表达式类型如下 1 int[] a = {1,2,3}; 如果在编写程序时,不能确定数组的长度,可以使用如下方式,直接用new在数组里创建元素 1 int[] a = new int[3]; 当创建对象数组时,数组中的元素仅仅

Java数组的定义,声明,初始化和遍历

数组的定义 数组是相同类型数据的有序集合.数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们.数组的三个基本特点: 1. 长度是确定的.数组一旦被创建,它的大小就是不可以改变的. 2. 其元素必须是相同类型,不允许出现混合类型. 3. 数组类型可以是任何数据类型,包括基本类型和引用类型. 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量.数组本身就是对象,Java中对象是在堆中