精华内容
下载资源
问答
  • Python中创建二维数组

    2020-12-25 10:38:18
    二维数组 二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 ...一般Python中创建二维数组的方法是使用列表解析的方法 列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素 创建
  • C语言C 072二维数组.ppt

    2020-04-19 10:11:13
    * (2)若定义int a[3][4],则a的正确引用是 A) a [ 2 ][ 4 ] B) a [ 1,3] C) a (2(1) D) a [1+1][ 0 ] (1)以下二维数组说明方式中正确的是 A) int a[3][ ]; B) float a(3,4; C) double a[1][4]; D) float a(3(4; ...
  • 为编写将二维数组作为参数函数,必须牢记,数组名被视为地址,因此相应形参是一个指针,比较难处理是如何正确声明指针。在被调用函数中形参数组定义时可以可以指定所有维数大小,也可以省略第一维大小...

    为编写将二维数组作为参数的函数,必须牢记,数组名被视为地址,因此相应的形参是一个指针,比较难处理的是如何正确声明指针。

    在被调用函数中对形参数组定义时可以可以指定所有维数的大小,也可以省略第一维的大小说明。如:

    void Func(int array[3][10]);
    void Func(int array[][10]);
    

    二者都是合法而且等价,但是不能把第二维或者更高维的大小省略,如下面的定义是不合法的:
    void Func(int array[][]);

    将二维数组当作参数的时候,必须指明所有维数大小或者省略第一维的,但是不能省略第二维或者更高维的大小,这是由编译器原理限制的。编译器是这样处理数组的:对于数组 int p[m][n];

    如果要取p[i][j]的值(i>=0 && i< m && 0<=j && j < n),编译器是这样寻址的,它的地址为: p + i*n + j;

    从以上可以看出,如果我们省略了第二维或者更高维的大小,编译器将不知道如何正确的寻址。

    下面我们提供三种方式对二维数组进行传参:

    一、在声明的时候,给入第二维维数大小

    void printArray(int (*arr)[9], int w, int h) {
        for (int i = 0; i < h; i++) {
            for (int j = 0; j < w; j++) {
                cout << arr[i][j] << " ";
            }
            cout << endl;
        }
    }

    二、在声明的时候,用一维指针去指向二维数组, 模拟编译器寻址

    由一知道,如果要把这个数组进行封装,是不适用的,因为你直接函数中

    写死了二维数组的第二维维数大小
    void printArray2(int * arr, int w, int h) {
    
        for (int i = 0; i < h; i++) {
            for (int j = 0; j < w; j++) {
                cout << arr[i*w+j] << " ";
            }
            cout << endl;
        }
    
    }

    三、建立一个指针数组,进行指向原二维数组,同时在函数中传入二维指针

    void printArray3(int ** arr, int w, int h) {
    
        for (int i = 0; i < h; i++) {
            for (int j = 0; j < w; j++) {
                cout << arr[i][j] << " ";
            }
            cout << endl;
        }
    
    }

    测试:

    int main(void) {
    
        int arr[][9] = { { 0,0,0,0,0,0,0,0,0 },
                        { 0,1,1,0,1,1,1,1,0 },
                        { 0,1,1,1,1,0,0,1,0 },
                        { 0,1,1,0,1,0,0,0,0 },
                        { 0,0,0,0,1,1,1,0,0 },
                        { 0,0,0,0,1,1,1,0,0 },
                        { 0,0,0,0,0,0,0,0,0 } };
    
        cout << "=============== method 1 ===============" << endl;
        printArray(arr, 9 ,7);
    
        cout << "=============== method 2 ===============" << endl;
        printArray2(*arr, 9, 7);
    
        cout << "=============== method 3 ===============" << endl; 
        int *p[7]; // define array of pointers (指针数组)
        for (int i = 0; i < 7; i++)
            p[i] = arr[i];
        printArray3(p, 9, 7);
    
        system("pause");
        return 0;
    }
    展开全文
  • 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。   ...

    题目:

    在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

     

    思路:

    对输入的条件进行判断,没有正确输入的话做出提示。

    • 矩阵是有序的,从右上角开始看起
    • 如果目标数大于当前数,说明目标数在当前数下方,行数++;
    • 如果目标数小于当前数,说明目标数在当前数的左侧,列数--;
    • 这样每一次查找都可以排除一行或者一列。

     

    代码:

    public class Main {
    
        public static void Find(int target, int [][] array) {
            //输入条件判断
            if( array == null || array.length < 1 || array[0].length < 1) {
                System.out.println("请输入正确条件");
            }
    
            int rows = array.length;        //数组行数
            int columns = array[0].length;  //数组列数
            int row = 0,coulmn = columns - 1;
    
            System.out.println(rows);
            while (row < rows && coulmn >= 0){
                if (array[row][coulmn] == target) {     //与查找的数相等
                    System.out.println("该数在第" + row +"行第" + coulmn + "列");
                    break;
                }else if (target > array[row][coulmn]) {    //目标数大于当前数组的数,说明目标数在下方,行数++
                    row ++;
                }else {
                    coulmn --;                              //目标数小于当前数组的数,说明目标数在左方,列数--
                }
            }
        }
    
        public static void main(String[] args) {    //测试
            int[][] arr = {
                    {1, 2, 8, 9},
                    {2, 4, 9, 12},
                    {4, 7, 10, 13},
                    {6, 8, 11, 15}
            };
    
            Find(7,arr);
        }
    }
    
    

     

    展开全文
  • 正确写法: void Func(int array[3][10]);...用二维数组名作为实参或者形参,在被调用函数中形参数组定义时可以指定所有维数大小,也可以省略第一维大小说明。 二者都是合法而且等价,但是不...

    正确写法:

    void Func(int array[3][10]);
    void Func(int array[][10]);

    错误写法:

    void Func(int array[][]);
    void Func(int array[3][]);
    • 二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明。
    • 二者都是合法而且等价,但是不能把第二维或者更高维的大小省略
    • 对于数组 

                                        int p[m][n];

            如果要取p[i][j]的值(i>=0 && i<m && 0<=j && j < n),编译器是这样寻址的,它的地址为:p + i*n + j;

    展开全文
  • 二二维数组元素的使用 二维数组中元素相当于一个变量,我们可以象使用一个变量那样使用二维数组元素...a[1,3] C) a(5) D) a [10-10] 三二维数组的初始化 采用以下两种方法之一进行 1.类型说明符 数组名[行数][列数]={{数
  • 1. 引用数组元素时, 其数组下标数据类型允许是 整型常量或...3. 以下能对二维数组a 进行正确初始化语句是: A) int a[2][]={{1,0,1},{5,2,3}}; B) int a[][3]={{1,2,3},{4,5,6}}; C) int a[2][4]={{1...

    1. 引用数组元素时, 其数组下标的数据类型允许是 整型常量或整型表达式


    2. 一维数组的定义方式为: 类型说明符 数组名 [整型常量表达式]    


    3. 以下能对二维数组a 进行正确初始化的语句是:

       A) int a[2][]={{1,0,1},{5,2,3}};

       B) int a[][3]={{1,2,3},{4,5,6}};

       C) int a[2][4]={{1,2,3},{4,5},{6}};

       D) int a[][3]={{1,0,1},{},{1,1}};

    答案:B;A选项列标不可省略;C选项超出了范围;D选项赋初值不可有{}


    4. 以下不能对二维数组a 进行正确初始化的语句是

    A) int a[2][3]={0};

    B) int a[][3]={{1,2},{0}};

    C) int a[2][3]={{1,2},{3,4},{5,6}};

    D) int a[][3]={1,2,3,4,5,6};

    答案:C;超出了范围


    5. 若有说明:int a[3][4]; 则全局数组a 中各元素         

    A) 可在程序的运行阶段得到初值0

    B) 可在程序的编译阶段得到初值0

    C) 不能得到确定的初值

    D) 可在程序的编译或运行阶段得到初值0
     答案:B


    6. 下面程序如果只有一个错误, 那么是(每行程序前面的数字表示行号)         

    1 main()
    2 { 
    3     float a[3]={3*0}; 
    4     int i; 
    5     for(i=0;i<3;i++) scanf(“%d”,&a[i]); 
    6         for(i=1;i<3;i++) a[0]=a[0]+a[i]; 
    7     printf(“%d\n”,a[0]); 
    8 }

    答案:第3行;


    7. 若二维数组a 有m 列,则计算任一元素a[i][j]在数组中位置的公 式为 (假设a[0][0]位于数组的第一个位置上。)

    A)i*m+j        

    B)j*m+i        

    C)i*m+j-1        

    D)i*m+j+1

    答案:D


    8.  以下对一维数组的定义中不正确的是(    )

    A. double x[5]={2.0,4.0,6.0,8.0,10.0};   

    B. int  y[5]={0,1,3,5,7,9};

    C. char ch1[ ]={'1', '2', '3', '4', '5'};     

    D. char  ch2[ ]={'\x10', '\xa', '\x8'};

    答案:解析:可以对一维数组的全部元素或部分元素赋初值。在对全部数组元素初始化时,数组长度可以省略。若数组长度没有省略,则初始化列表中值的个数不能超过数组的长度。

    答案:B


    9. 以下对二维数组的定义中正确的是(    )。

    A.int a[4][]={1,2,3,4,5,6};    B. int  a[][3];

    C.int a[][3]= {1,2,3,4,5,6};   D. int a[][]={{1,2,3},{4,5,6}};

    解析定义二维数组时,若按一维格式初始化,则第一维的长度可以省略,此时,系统可根据初始化列表中值的个数及第二维的长度计算出省略的第一维长度,但无论如何,第二维的长度不能省略。没有初始化时,每一维的长度都不能省略。

    答案C


    10. 若有定义:int aa[8];,则不能代表数组元素aa[1]地址的是(   ) 。

    A. &aa[0]+1     B. &aa[1]      C. &aa[0]++      D. aa+1

    解析: &aa[1]、&aa[0]+1和aa+1都是数组元素aa[1]的地址。由于&aa[0]是地址值常量,不能进行自加、自减运算,所以选项C不能代表aa[1]地址。

    答案:C


    11. 若有如下定义,则b的值是(    )。

    int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b=p[5];

    A. 5                   B. 6                C. 8             D. 9

    解析p指向a[3],即p=a+3;b=p[5],即b=*(p+5)。因此,b=*(a+8)=a[8]=9。

    答案:D


    12. 若二维数组y有m列,则排在y[i][j]前的元素个数为(    )

    A.j*m+i    B.i*m+j       C.i*m+j-1    D.i*m+j+1

    解析:C语言中的二维数组按行存储。行标为i的元素前共有i行元素,元素个数为i*m,每行列标为j的元素前共有j个元素。因此,y[i][j]前的元素个数为i*m+j。

    答案:B


    13. 若有定义:char a[10],*b=a;,则不能给数组a输入字符串”This is a book”的语句是(    )。

    A. gets(a)      B. scanf("%s",a)     C. gets(&a[0]);    D. gets(b) ;

    解析: gets为字符串输入函数,调用该函数时需给出字符串的存储地址,以回车作为字符串输入的结束,并将回车符转换成为’\0’。而scanf函数则以回车、空格或跳格作为串输入结束,因此scanf不能输入有空格的字符串。

    答案:B


    14. 有以下程序, 执行后输出结果是(     )

    main() 

    { int x[8]={8,7,6,5,0},*s; 

      s=x+3; 

      printf("%d ",s[2]);

    A. 随机值           B. 0           C. 5            D. 6

    答案:B


    15. 下列描述中不正确的是 (     )。
     

    A. 字符型数组中可以存放字符串              

    B. 可以对字符型串进行整体输入、输出

    C. 可以对整型数组进行整体输入、输出         

    D. 不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值

    答案:C;C语言规定只能逐个引用数组元素而不合下次引用整个数组。字符数组的输入、输出可以将整个字符串一次输入或输出。所以,选项C的说法是不正确的。


    16. 以下语句或语句组中,能正确进行字符串赋值的是(     )。

    A. char *sp; *sp="right!";    B. char s[10]; s="right!";

    C. char s[10]; *s="right!";    D. char *sp="right!";

    答案:D;A char *sp;*sp="right!";不对sp是一个字符指针,然后再*sp就是一个字符的意思,它不可以赋值一个字符串;B char s[10];s="right!";s是一个数组名,数组名不可以赋值.;C char s[10];*s="right!";s是一个数组的首地址,它指向第一个元素.所以*s就是s[0]它也是一个字符,不可以赋值为字符串.其实赋值中,就是字符串赋值比较难;主要注意下字符串的初始化的两种形式char *sp="right!";另外char sp[]="right!";也可以.其他的如果不是初始化,纯赋值,主要是观察左右类型是否一致.不能左边是一个字符或者一个指针,而右边是一个字符串常量.

      

    展开全文
  • 以下维数组a的正确说明是 A) int n; scanf%d&n; int a[n]; B)int n=10,a[n]; C) int a(10; D#define SIZE 10 int a[SIZE]; 参考答案D 2.若有说明int a[10];则数组元素的正确引用是 A)a[10] B)a[3,5] C)a(5) D)...
  • 【阅读理解】【单选题】已知字母AASCII码为十进制数65,且c2为字符型...则值为5 表达式是()【单选题】以下能对二维数组a进行正确初始化语句是()。【单选题】若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*...
  • (6.0分)【单选题】紫外-可见分光光度计的组成不包括【单选题】以下对二维数组 a 的正确说明是( )。 (7.0分)【判断题】仪器分析方法中的样品处理部分都涉及到化学分析方法。【单选题】若有以下函数调用语句 : func...
  • C) 因为二维数组a中第二维大小值除以初值个数商为1,故数组a行数为1 D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0 【题6. 11】 若有说明:int a[3][4];则数组a中各元素(B)。 A) 可在程序...
  • C++每日十题10.19

    2018-10-19 16:40:45
    1.以下对二维数组 a 的正确说明是()。 正确答案: C 你的答案: C (正确) A int a[3][] B float a(3,4) C double a[1][4] D float a(3)(4) 2.基类中的成员在派生类中都是可以直接访问的.说法是否正确? 正确答案: B ...
  • C语言小练习11

    2018-01-05 22:51:14
    1、以下对二维数组 a 的正确说明是(C.double a[1][4])。 int a[3][]   float a(3,4)   double a[1][4]   float a(3)(4) 2、判断字符串a是否大于b,应当使用(C.if (strcmp(b,a)>0) )   if (a...
  • 元旦c语言练习

    2018-01-03 15:20:33
    1、以下对二维数组 a的正确说明是( double a[1][4] )。 int a[3][]   float a(3,4)   double a[1][4]   float a(3)(4) 2、判断字符串a是否大于b,应当使用( if (strcmp(a,b)>0) ) if ...
  • c语言第十次练习题

    2018-01-02 20:28:35
    1、以下对二维数组 a 的正确说明是(double a[1][4])。 int a[3][] float a(3,4) double a[1][4] float a(3)(4) 2、判断字符串a是否大于b,应当使用( if (strcmp(b,a)>0)) if (a>b) if (strcmp(a,b)) ...
  • C语言作业题(6)

    2018-01-17 17:17:13
    1、以下对二维数组 a 的正确说明是(C)。 int a[3][] float a(3,4) double a[1][4] float a(3)(4)2、判断字符串a是否大于b,应当使用(D) if (a>b) if (strcmp(a,b)) if (strcmp(b,a)>0) if (strcmp(a,b)>0...
  • C语言作业(6)

    2018-01-04 00:23:31
    1、以下对二维数组 a 的正确说明是(C)。 A,int a[3][] B,float a(3,4) C,double a[1][4] D,float a(3)(4) 2、判断字符串a是否大于b,应当使用(D) A,if (a>b) B,if (strcmp(a,b)) C,if (strcmp(b,a)>0) D,if ...
  • c语言作业(六)

    2018-01-04 12:20:35
    1、以下对二维数组 a 的正确说明是(c)。 A.int a[3][] B.float a(3,4) C.double a[1][4] D.float a(3)(4) 2、判断字符串a是否大于b,应当使用(D ) A.if (a>b) B.if (strcmp(a,b)) C.if (strcmp(b,a)...
  • c作业7

    2018-01-04 13:21:12
    1、以下对二维数组 a 的正确说明是(c)。 int a[3][]float a(3,4) double a[1][4] float a(3)(4)2、判断字符串a是否大于b,应当使用(d)if (a>b)if (strcmp(a,b))if (strcmp(b,a)>0)if (strcmp(a,b)>0)3...
  • 第11次C练习

    2018-01-03 21:29:37
    1、以下对二维数组 a 的正确说明是(double a[1][4])。int a[3][] float a(3,4) double a[1][4] float a(3)(4)2、判断字符串a是否大于b,应当使用( if (strcmp(b,a)>0))if (a>b) if (strcmp(a,b)) if (strcmp(b,a...
  • 从一般形式可以看出指向数组的指针变量和指向普通变量的指针变量的说明是相同的。 引入指针变量后,就可以用两种方法来访问数组元素了。  第一种方法为下标法,即用a[i]形式访问数组元素。 在第四章中介绍数组时都...
  • 2018/1/4C语言作业

    2018-01-04 09:19:28
    1、以下对二维数组 a 的正确说明是(C。 int a[3][] A.  float a(3,4) B. double a[1][4] C. floata(3)(4) D. 2、判断字符串a是否大于b,应当使用( D)  if (a>b)A.  if (strcmp(a,b))B.  if ...
  • 开个1000的二维vector提交后最后一组测试显示运行错误,其他测试用例都,就是数组太小了,改为1e4就提交就超时了。正确的做法:我们要求是该无向图两个点之间路径最长是多少,求出最长路程。题目也说了根...
  • LinuxC语言小题目题目部分答案分析题1题2题3题4题7题8题9 题目 整型变量x和y的值相等,且为非0值,则以下选项中,结果为0的表达式是 。 A、x||y B、x|y C、x&...以下对二维数组a的正确说明是
  • php高级开发教程说明

    2008-11-27 11:39:22
    出重要部分,然后把这些部分译成正确的代码。这个分析过程分两步执行:形式分析和逻辑 分析。首先通过检查文章可视结构来执行形式分析,例如:检查段落、行、列甚至词之间 空隙。这一过程打破了文章整体...
  • 你必须知道495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    6.18 当我向一个接受指针的指针的函数传入二维数组的时候,编译器报错了。 6.19 我怎样编写接受编译时宽度未知的二维数组的函数? 6.20 我怎样在函数参数传递时混用静态和动态多维数组? 数组的大小 6.21 当...
  •  2.18 既然数组名可以用作数组的基地址,为什么结构不能这样?  2.19 程序运行正确,但退出时却“core dump ”(核心转储)了,怎么回事?  联合  2.20 结构和联合有什么区别?  2.21 有办法初始化联合吗? ...
  • 2.18 既然数组名可以用作数组的基地址,为什么结构不能这样? 2.19 程序运行正确,但退出时却“core dump ”(核心转储)了,怎么回事? 联合 2.20 结构和联合有什么区别? 2.21 有办法初始化联合吗? 2.22 有没有一...
  • 2.18 既然数组名可以用作数组的基地址,为什么结构不能这样? 58 2.19 程序运行正确,但退出时却“core dump ”(核心转储)了,怎么回事? 58 联合 59 2.20 结构和联合有什么区别? 59 2.21 有办法初始化联合...
  • 2.18 既然数组名可以用作数组的基地址,为什么结构不能这样? 58 2.19 程序运行正确,但退出时却“core dump ”(核心转储)了,怎么回事? 58 联合 59 2.20 结构和联合有什么区别? 59 2.21 有办法初始化联合...

空空如也

空空如也

1 2 3 4 5
收藏数 95
精华内容 38
关键字:

对二维数组的正确说明是