当前位置: 首页 > wzjs >正文

公司网站建设设计如何收费广州正规的网站建设

公司网站建设设计如何收费,广州正规的网站建设,中小型企业网站建设企业,做数学题的网站c语言基础07 数组 数组的概念 数组是相同类型,有序数据的集合。 数组的特征 数组里的数据被称为数组的元素数组中的元素存放在内存空间 衍生概念:下标(索引) 下标或者索引代表了数组中元素距离第一个元素的偏移量。数组中元…

c语言基础07

数组

数组的概念

数组是相同类型有序数据的集合。

在这里插入图片描述

数组的特征
  • 数组里的数据被称为数组的元素
  • 数组中的元素存放在内存空间
衍生概念:下标(索引)
  • 下标或者索引代表了数组中元素距离第一个元素的偏移量。
  • 数组中元素的地址值,下标越大,地址值越大。(每一块内存空间都有一个独有的内存地址,内存中每8个bit编一个号,也就是内存地址)
  • 数组的下标是从0开始的。

一维数组

数组的定义
类型说明符/数据类型  数组名[数组容量]

说明:

  • 数组的类型说明符由数组中的元素来决定,类型说明符也就是数据类型。元素是什么类型,数组就是什么类型。同一个数组中,所有元素的类型都是一致的。
  • 数组名也是标识符,数组名,可以理解为数据类型是数组的变量。
  • 数组容量也可以叫做常量表达式或者元素个数,其值必须为整型,可以包含常量和符号常量,但不能是变量

类型:

​ 代表了数组中元素的类型

容量:

​ 数组中能存储多少个元素,数组容量可以是一个常量、常量表达式、还可以是符号常量,但必须是整型。

数组的最大下标 = 数组元素个数 - 1
数组元素的访问

原则:数组中的元素不能一次性访问所有,只能一个一个的访问。

访问方式:

数组名[下标]

注意:数组元素的访问一定不能越界

案例:

  • 利用循环结构给数组元素a[0]~a[9]赋值0~9,并且逆序输出。
#include <stdio.h>
int main(int argc,char *argv[])
{
// 创建一个数组,用来存放0~9的数字
int a[10];
// 使用for循环给数组元素赋值(一般数组配套的都是for循环)
// C语言中,没有提供数组的大小,需要我们自己计算,数组大小 = 数组总字节数 / 1个元素的字节数
int len = sizeof(a) / sizeof(a[0]); // 等价与 int len = sizeof(a) / sizeof(int)
for(int i = 0;i < len; i++)
{
a[i] = i;
}
// 逆序输出
// 遍历:通过循环将数组中的元素一个一个取出来
for(int j = len -1; j>= 0; j--)
{
printf("%4d",a[j]);
}
printf("\n");// 纯粹换行return 0;
}
数组初始化

定义数组的同时,用指定数据来给对应的元素赋值。

简化数组定义后,需要对元素一一赋值。

语法:

数据类型 数组名[数组容量] = {常量1,常量2,常量3...};

注意事项:

  • 数组可以部分初始化,也就是可以给数组中前几个元素初始化,未被初始化的元素将自动初始化,大概率是0;
int arr[10] = {11,12,13,14,15};
int arr[10] = {11,12,13,14,15,0,0,0,0,0};int arr[] = {11,12,13,14,15};
int arr[5] = {11,12,13,14,15};
  • 柔性数组

​ 在C99标准,针对结构体的最后一个成员可以是一个未指定大小的数组;

广义理解:数组容量待定或者待确定的数组,举例: int arr[] = {1,2,3,4,5}

面试题:

  • 在不知道数组类型的情况下,如何确定数组元素的个数
int length = sizeof(arr) / sizeof(arr[0])

说明:

​ 1.arr就是我们计算的数组本身, sizeof(arr) 用来计算该数组中总的字节大小。

​ 2.sizeof(arr[0]) 用来计算数组中一个元素所占的字节大小,因为数组中的元素类型相同,

所以计算哪一个都行。

​ 3.sizeof(arr)/sizeof(arr[0]) 就是用数组中总的字节数除以每一个元素所占的字节数,从

而得到元素的个数。

一维数组的案例

案例:

  • 斐波拉契数列
  • 代码:
#include <stdio.h>
int main(int argc,char *argv[])
{
int i;// 循环变量
// 定义一个数组,用来存储数列,默认存储的第1和第2的值是1
int f[20] = {1,1};
// 计算数组的大小
int len = sizeof(f) / sizeof(f[0]);
// 使用for循环,将生成的数据存入数组
for(i = 2;i < len; i++)// i=3
{
f[i] = f[i-2]+f[i-1];// 给数组元素赋值,从数组的第3个元素开始 1,1,2,3,5..
}
// 遍历数组
for(i = 0; i < len; i++)
{
// 遍历的时候,要求每5个换一行,也就是1行显示5个
if(i % 5 == 0)
{
printf("\n");
}
printf("%8d",f[i]);
}
printf("\n");
return 0;
}

案例:

  • 从键盘输入年、月、日,计算并输出该日是该年的第几天
  • 分析:
    • 首先创建一个数组,用来存放每一个月的天数,因为二月比较特殊,初始化的时候设置为0,int t[] = {31,0,31…}
    • 从控制台输入年、月、日
    • 闰年判断,修改数组中二月对应的天数(闰年:29,平年:28)
    • 定义一个变量,用来记录天数,默认值是我们输入的天数:int sum = 14
    • 将当前月之前所有的天数,从数组中取出来进行相加 sum += t[0]+t[1]…
    • 最后打印输出sum
  • 代码:
#include <stdio.h>
int main(int argc,char *argv[])
{
// 定义一个数组,用来存放1~12月的天数,二月比较特殊,暂时不初始化
int t[] = {31,0,31,30,31,30,31,31,30,31,30,31};
// 定义三个变量,用来接收控制台输入的年,月,日
int year,month,day;
printf("请输入年份、月份、天:\n");
scanf("%d-%d-%d",&year,&month,&day);
// 润年的判断,给数组中的二月份赋值天数
if((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
t[1] = 29;// 润年
else
t[1] = 28;// 平年
// 创建一个变量,用来记录当前是第几天,默认位当前输入的天数
int sum = day;
// 将对应月份之前的所有月份天数加起来
for(int k = 0; k < month - 1; k++)
{
sum += t[k]; // 叠加前几个月的天数
}
printf("%d月%d日是%d年第%d天。\n",month,day,year,sum);return 0;
}
数组的典型应用:冒泡排序
向后冒泡
  • 思想:

    1.一次只排好一个数,针对n个数,最差情况需要n-1次排好

    2.每次排序将相邻数据两两比较,将较大或较小的数据向后交换,等所有数据都比较完成,较大或较小的数就会出现在最后。

    3.在余下的数中再次应用第二步的操作,直到只剩下1个数。

向前冒泡
  • 思想:

​ 1… 一次只排好一个数,针对n个数,最差情况需要n-1次就可以排好

​ 2.每次排序假定第一个元素是最大或者最小的,用第一个元素的后面的元素一一与第一个元素比较,遇到较大或者较小的和第一个元素交换,访问完数组的最后一个元素,就排好了一个数。

​ 3… 在余下的数中,再次应用第2步的操作,直到只剩下1个数。

  • 代码:
#include <stdio.h>
int main(int argc,char *argv[])
{
// 创建一个数组,用来存储排序的序列int arr[10];
// 定义三个变量 i:比较的轮数(0~len-1)j:每一轮比较的次数(0~len-1-i)temp:临时变量,用来实现两个变量值的交换int i,j,temp;printf("请输入10个整数:\n");
// 计算数组的大小int len = sizeof(arr) / sizeof(arr[0]);
// 通过循环录入数据for(i = 0; i < len; i++){scanf("%d",&arr[i]);}printf("\n");// 冒泡排序
// 第一次循环:控制比较的轮数:轮数 = len -1;for(i = 0; i < len - 1; i++){	
// 第二层循环:控制每一轮的比较次数:次数 = len - 1 - ifor(j = 0; j < len - 1 - i; j++){
// 相邻两个数进行比较,满足条件交换位置if(arr[j] > arr[j+1]) // 1 2{temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}
}
printf("冒泡排序后的数列:\n");
for(i = 0; i < len; i++)
{printf("%4d",arr[i]);
}printf("\n");return 0;
}

二维数组

定义

二维数组本质上是一个行列式的组合,也就是说二维数组由行和列两部分组成。属于多维数组。二维数组数据是通过行列进行解读。

语法
数据类型 数组名[行数][列数]; // 二维数组外层表示行数,内层表示列数
特殊写法
  • 下标可以是整型表达式,如: a[2-1] [2*2-1]
  • 下标可以是已经有值的变量或数组元素,如:a[2*x-1] [b[3] [1]]
  • 数组元素可以出现在表达式中,如:b[1][2] = a[2][3]/2
http://www.dtcms.com/wzjs/582241.html

相关文章:

  • 潘嘉严个人网站如何建设公司网络营销网站
  • 百度权重3的网站值多少律师网站建设公司
  • 东莞有什么做网站的公司佳世达电子 苏州 有限公司
  • 网站实现用户登录做网站赚钱吗?
  • 网页与网站设计说明搜狐财经峰会直播
  • 精品建设课程网站免费技能培训在哪里报名
  • 怎样让google收录网站wordpress下载页插件
  • 网站哪里有做的惠州做网站建设
  • 上海礼品定制网站一个空间可以放几个网站
  • 网站中怎么做视频直播天涯社区和海南在线不能正常访问
  • 为一个网站设计一个推广方案移动应用开发与服务
  • wordpress网站注册不了jsp网站开发中英文页面切换
  • 通过网站如何做海外贸易网页设计与制作长江职业学院
  • 网站模板源码平台渠道推广策略
  • 镇江网站设计制作wordpress自媒体模版
  • 长沙口碑好网站建设企业天津搜索引擎优化
  • 洛阳网站推广公司电话深圳光明
  • 网站被k申诉网站优化案例分析
  • 邯郸当地招聘网站怎么做国际网站
  • 茌平县建设局网站自己免费制作app
  • 视频网站推广互联网网站怎么做
  • 中国传统色彩网站建设方案m3型虚拟主机 wordpress
  • wordpress 又拍云 缓存西安网站seo报价
  • 2021免费网站大全群晖wordpress打开慢
  • 安全的网站建设推广兰州官网seo诊断
  • 网站建设全视频教程下载网络平台的推广方法
  • 拜师做网站个人如何缴纳社保
  • 公司网站后如何更新cms建站平台
  • 企业建立网站需要什么条件怎么使自己的网站
  • 我想建个网站外贸拓客软件