C语言-----数组
Posted 小鹿可可乐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言-----数组相关的知识,希望对你有一定的参考价值。
C语言--数组
1.一维数组
1.1定义与初始化
定义:数组是包含给定类型的一组数据,并将这些数据依次存储在连续的内存空间中,每个独立的数据被称为数组元素。
- 数组的类型由元素的类型和数量所决定。
- 数组属性:大小,类型,(连续分配)
- 数组的定义决定了数组名、元素类型以及元素个数
- 语法:<类型> 数组名[<元素数量(必须是>0的整数常量表达式)>]
- 代码举例:
#define ARSIZE 10
const int arsize = 10;
enum LEN = 10 ;
int main()
int ar[10];//定义一个长度为10的ar整型数组
int br[ARSIZE];//宏常量
int cr[arsize];//常变量
int dr[LEN];//枚举常量
- 未初始化的数值是0。
- 数组元素个数的计算:
int ar[10] = 1, 2, 3, 4, 5, 6, 7, 8, 7, 8 ;
int n = sizeof(ar) / sizeof(ar[0]);// 数组大小/元素大小
1.2使用
- 数组在存储单元中是顺序连续存放的,任何一个元素都可以单独访问,用数组名和下标
- 数组赋值给数组:
- 其他类型数组代码展示:
//数组 从右往左读
int a = 10, b = 20;
const int ar[5] = 1, 2, 3, 4, 5 ;//常性数组,元素的值只可读,不可写
char str1[10] = "hello" ;//10个元素,每个元素是char类型
char str2[10] = 'h', 'e', 'l', 'l', 'o' ;
int *par[10] = NULL ;//10个元素,每个元素类型是int*类型
char *pstr[10] = NULL ;//10个元素,每个元素是char*类型
int *pa[10] = &a, &b ;
return 0;
1.3应用实例
查表法:将一些事先计算好的结果,存储在常量数组中,用到时直接按下标取数据,以节省运行的计算时间,以空间换时间
代码举例:判断闰年并计算天数
- 代码展示:
#include <stdio.h>
#include<stdlib.h>
//判断是否是闰年
bool Is_Leap(int year)
return((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));
//查表找出每月对应的天数
int Get_YM_Day(int year, int month)
//静态常性数组
static const int days[] = 29, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ;
// 下标 0 1 2 3 4 5 6 7 8 9 10 11 12
if (2 == month && Is_Leap(year))//如果是闰年2月
month = 0;//输出0 位置的元素数值
return days[month];
//计算总天数
int Get_YMD_Total(int year, int month, int day)
int total = 0;//初始化total为0
//判断三个区间是否满足
if (year < 1)return -1;
if (month<1 || month>12)return -2;
if (day<1 || day>Get_YM_Day(year, month))return -3;
//统计月份天数
for (int i = 1; i < month; ++i)
total += Get_YM_Day(year, i);
return total + day; //返回总天数
int main()
int year = 0; int month = 0; int day = 0;
int sum = 0;
bool res = false;
scanf_s("%d%d%d", &year,&month,&day);//控制台输入年月日
sum = Get_YMD_Total(year, month, day);//函数返回值给sum
//输出错误显示
/*switch (sum)
case -1:printf("year error \\n"); break;
case -2:printf("month error \\n"); break;
case -3:printf("day error \\n"); break;
default:printf("%d \\n", sum);
break;*/
if (sum > 0)
printf("%d year %d month %d day =>%d sum\\n", year, month, day, sum);
else
printf("input error");
return 0;
- 结果展示:
- 计算总天数中使用查表法:
//查表法
int Get_YMD_Total(int year, int month, int day)
int total[] = 0, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 ;
int sum = 0;
if (year < 1)return -1;
if (month<1 || month>12)return -2;
if (day<1 || day>Get_YM_Day(year, month))return -3;
sum = total[month] + day;
if (month>0 && Is_Leap(year))
sum += 1;
return sum;
以上是关于C语言-----数组的主要内容,如果未能解决你的问题,请参考以下文章