• C 二维数组


    1. 二维数组不部分初始化问题

    char data[][10] = {"hello","world"}; // 二维数组初始化时,列信息可以不给定,行信息必须给定
    

    列信息可以根据实际的字符串个数确定,但是行信息中每个字符串的长度是不确定的,所以不完全初始化时必须给定

    2. 求数组占空间大小(sizeof()关键字求变量或类型占空间的大小)

     二维数组占空间:sizeof(数据类型) * 行数 * 列数    ==  sizeof(数组名);

    #define N 10
    char a[][N] = {"hello","world!"};
     
    int len = 0;
    len = sizeof(a); //数组占空间大小
    int row = 0;
    row = sizeof(a) / sizeof(char) / N;  //有多少行数
    char b[3][4] = {{''}}; //数组初始化
    /*  b 表示这个二维数组的指针
    b[0][0]  b[0][1]   b[0][2]  b[0][3]   ----  b[0] 表示第 0 行数据的指针 , &b[0][0] 是第一行第一列元素的指针
    
    b[1][0]  b[1][1]   b[1][2]  b[1][3]  ----  b[1] 表示第 1 行元素的指针
    
    b[2][0]  b[2][1]   b[2][2]  b[2][3]  ----  b[2] 表示第 2 行元素的指针
    
    */
    

    3.打印杨辉三角的前十行
    1  
    1   1  
    1   2   1 
    1   3   3    1   
    1   4   6    4    1     
    1   5  10   10    5    1

    分析:(1)首先是第一列全部为 1     

    (2)下标相等的为 1 ;   i  = j;   a[i][j] = 1;   

    (3)下面的数是这个数上方的加上左上方的和 , a[i][j] = a[i-1][j-1]+a[i-1][j];

    .......第一种方法:

    #include <stdio.h>
    #define M 10
    #define N 10
    int main(int argc, const char *argv[])
    {
        int i, j;
        int data[M][N]={{0}};
        //给数组填数,按照杨辉三角格式
        for(i = 0; i < M; i++)   
        {
            data[i][0] = 1;
            for(j = 1; j <= i; j++) //i=j时,是对角线         
            {
                data[i][j] = data[i-1][j-1]+data[i-1][j];
            }
        }
          //把二维数组中的内容打印出来(杨辉三角) 下三角打印内容
        for(i = 0; i < M; i++)<br>     
            for(j = 0; j <= i; j++) //打印对角线      
            {
                printf("%4d", data[i][j]);
            }
            putchar(10);
        }
        return 0;
    }

    另一种方法:比较笨

    #include <stdio.h>
    #define M 10 
    #define N 10
    
    int main(int argc, const char *argv[])
    {
    	int i=0,j=0;
    	int a[N][M] = {{0}};
    	
    	a[0][0] = 1; //数组从第二行开始
    	for(i=1;i<N;i++)
    	{
      		a[i][0] = 1;
    		for(j=1;j<M;j++)
    		{
    			if(i==j) //下标相等,直接赋值,并结束循环
    			{
    				a[i][j] = 1;
    				break;
    			}
    			a[i][j] = a[i-1][j-1] + a[i-1][j];
    
    		}
    	}
    
    	for(i=0;i<N;i++)
    	{
    		for(j=0;j<M;j++)
    		{ 
    			if(i==j) //遇到相等下标
    			{
    			    printf("%d ",a[i][j]); //下标相等的数据也要打印出来
    			       break;
    			}
    			printf("%d ",a[i][j]);
    		}
    		putchar(10);
    	}
    
    
    	return 0;
    }
    
  • 相关阅读:
    搭建JavaWeb服务器
    Python网络爬虫相关基础概念
    Python网络爬虫 《http和https协议》
    jupyter环境安装
    js 解密,混淆,逆向
    selenium
    2、JNI说明
    1、Java快速入门
    4、基于JZ2440之编写测试代码处理(处理图片识别人脸)
    3、在编译过程中出现no space left on device
  • 原文地址:https://www.cnblogs.com/electronic/p/10792264.html
Copyright © 2020-2023  润新知