zoukankan      html  css  js  c++  java
  • C博客作业04-数组

    这个作业属于哪个班级 C语言--网络2011/2012
    这个作业的地址 C博客作业04--数组
    这个作业的目标 学习如何设计函数、C语言基本数据类型
    姓名 胡旻轩

    0. 展示PTA总分

    1. 本章学习总结

    1.1 学习内容总结

    数组:就是只能存放一种数据类型,比如int类型的数组、float类型的数组,里面存放的数据称为“元素”

    数组的定义:

    首先声明数组的类型,然后声明数组元素的个数(也就是需要多少存储空间)

    格式: 元素类型 数组名[元素个数];

    比如: int[3];

    数组元素有顺序之分,每个元素都有一个唯一的下标(索引),而且都是从0开始

    数组元素的访问: a[i]

    数组元素的初始化:

    • int a[3] = {10, 9, 6};

    • int a[3] = {10,9};

    • int a[] = {11, 7, 6};

    • int a[4] = {[1]=11,[0] = 7};

    #include<stdio.h>
     
    int main()
    {
        //数组的定义格式: 类型 变量名[元素个数];
        //int ages[5];
        
        //数组的赋值方式:
        /*
        ages[0] = 12;
        ages[1] = 19;
        ages[2] = 14;
        ages[3] = 26;
        ages[4] = 18;
         */
        
        //int ages[5] = {[2] = 14,[3] = 26};
        //int ages[5] = {12,19};
        int ages[5] = {12,19,14,26,18};
        
        //错误写法:
        //int ages[];
        //错误写法
        //int ages[5];     只能在定义数组的时候进行初始化
        //ages = {12,19,14,26,18};
        //错误写法,如果想在定义数组的同时进行初始化,数组元素个数必须是常量或者不写
        //int ages[count] = {12,19,14,26,18};
        
        /*数组的遍历,按顺序查看数组的每一个元素*/
        
        //1.for循环遍历
        for (int i = 0; i <5; i++)
        {
            printf("ages[%d] = %d
    ",i ,ages[i]);
        }
        
        
        
        return 0;
    }
    

    [ ]里面的个数必须是一个固定值,可以是常量(比如6、8)、常量表达式(比如3+4、5*7)。绝对不能使用变量或者变量表达式来表示元素个数,大多数情况下不要省略元素个数
    (当数组作为函数的形参和数组初始化时除外)

    C语言中编译器是不会对数组下标越界进行检查的,所以自己访问数组元素时要注意。<

    一维数组与函数参数:

    一维数组的元素作为函数实参,与同类型的简单变量作为实参一样,是单向的值传递,即数组元素的值传给形参,从而形参是改变不影响实参

    数组名代表着整个数组的地址,如果一维数组的名字作为函数实参,传递的是整个数组,即形参数组和实参数组完全相同,是存放在同一存储空间的同一个数组。这样形参数组

    修改时,实参数组也同时被修改了。形参数组的元素个数可以省略。

    二维数组的定义:

    一个数组能表示一个班人的年龄,如果想表示很多班呢?

    什么是二维数组?int ages[3][10]; 三个班,每个班10个人,相当于3行10列,相当于装着3个一维数组

    二维数组是一个特殊的一维数组:它的元素是一维数组。例如int a[2][3]可以看作由一维数组a[0]和一维数组a[1]组成,这两个一维数组都包含了3个int类型的元素

    定义形式: 类型 数组名[ 行数] [列数]

    int  a[2][3];   //2行3列的二维数组
    

    二维数组的存放顺序是按行存放的,先存放第一行的元素,再存放第2行的元素。例如int a[2][3]的存放顺序是:a[0][0] → a[0][1] → a[0][2] → a[1][0] → a[1][1] → a[1][2]

    2. PTA实验作业

    2.1 7-7 数组循环左移

    2.1.1 伪代码

    分别输2个整数代表数组中数字个数和左移位置

    for 循环输入数组的值

    for 重复每次向左移动

    嵌套for 将数组右移一位

    输出数组第一个数

    for 循环输出剩下的数

    2.1.2 代码截图

    2.1.3 找一份同学代码比较

    和陈宇航同学进行代码比较:

    #include <stdio.h>
    #define MAXN 100
    
    int ArrayShift( int a[], int n, int m );
    
    int main()
    {
        int a[MAXN], n, m;
        int i;
    
        scanf("%d %d", &n, &m);
        for ( i = 0; i < n; i++ ) scanf("%d", &a[i]);
    
        ArrayShift(a, n, m);
    
        for ( i = 0; i < n; i++ ) {
            if (i != 0) printf(" ");
            printf("%d", a[i]);
        }
        printf("
    ");
    
        return 0;
    }
    
    int ArrayShift(int a[], int n, int m)
    {
    	for (int i = 0; i < m; i++)
    	{
    		int temp = a[n - 1];
    		a[n - 1] = a[0];
    		for (int A = 0; A < n - 2; A++)
    		{
    			a[A] = a[A + 1];
    		}
    		a[n - 2] = temp;
    	}
        return 1;
    }
    

    总结:虽然主题的思路都差不多,但是宇航同学进行了更为系统的代码封装,动用函数的思维,让整个代码更加标准化和专业化,这份思维值得我们的学习。

    2.2 7-14 找鞍点

    2.2.1 伪代码

    定义a[] 定义函数GetPoint(int a[][N], int n)
    for 读入数据 end for
    在函数中
    定义maxindex
    for
    index=0
    判断每一行中的最大值
    并把下标给maxindex
    end for
    for
    让列等于index
    判段该数是否是该列最小的
    end for
    若内循环执行一遍输出结果
    若外循环执行一遍则输出NONE

    2.2.2 代码截图

    2.2.3 请说明和超星视频做法区别,各自优缺点

    这题在自己开始着手的时候,并没有什么思路,自己每次尝试也是以失败告终,没有一个测试点可以过得去,因此就利用超星视频进行了学习,所以总体思路就是利用超星视频内的思路。

    2.3 7-6 切分表达式——写个tokenizer吧

    2.3.1 伪代码

    定义字符串str[50]
    定义变量i 控制循环
    定义flag

    输入字符串fgets
    加入循环for (i = 0; str[i] != ' '; i++)

    判断:if(第一个地方就是第一个字符是正负号时)

    判断:if(如果是数字或者小数点的话判断下一位是否是小数点或者数字)

    else if(负数的判断 前一位是数字还是其他符号)

    else if(正数的判断 数字前一位是不是‘(’)

    2.3.2 代码截图

  • 相关阅读:
    Python爬虫 | re正则表达式解析html页面
    Python爬虫 | lxml解析html页面
    Python爬虫 | Beautifulsoup解析html页面
    Python爬虫 | requests模拟浏览器发送请求
    http和https协议
    Python爬虫 | 简介
    对于python 作用域新的理解
    这是我的第一篇博客
    No module named HTMLTestRunner
    ImportError: No module named MySQLdb问题的解决
  • 原文地址:https://www.cnblogs.com/Inevitable/p/14130379.html
Copyright © 2011-2022 走看看