1.数组:相同数据类型的有序集合,在内存中连续存放。
一般形式:类型名 数组名[数组长度];
2.数组长度是一个常量
3.数组是一个地址常量,存放数组内存的首地址。例如:a[0]地址为4010,则a[2]地址为4010+类型字节长度*2.
4.数组引用:一般形式:数组名[下标]。合理取值范围[0,数组长度-1](数组下标从0开始,不能越界)
5.一维数组初始化:类型名 数组名[数组长度]={初值表};(如果对全部元素都赋予初值,数组长度可以省略)(只有静态数组可以初始化,静态数组的元素默认初始化为0,动态数组没有初始化的元素为随机值)
6.动态数组auto int a[ ];等价于int a[ ];
7.二维数组定义形式:数组名[行长度] [列长度];
8.二位数组的赋值形式:1.分行赋值:类型名 数组名 [行长度] [列长度] = {{初值表0},{初值表1},···,{初值表k},···}(如果依次给省略:{1,2,3,0,0,0,4,5,6}等价于{{1,2,3},{ },{4,5,6}})2.顺序赋值:类型名 数组名 [行长度] [列长度] = {初值表};
9.二维数组在内存中按行优先方式存放。
10.主对角线——i==j;上三角形——i<=j;下三角形——i>=j;副对角线——i+j==N-1;行列互换可用到。
11.'\0'表示空操作,无法输入,因此输入字符串时,需要事先设定一个输入结束符。一旦输入它,表示字符串结束输入,并将输入结束符转换为结束符'\0'。在'\0'前都是字符串的有效字符,一般用它来控制循环。(例如:happy的有效长度为5,存储它的字符串长度至少为6。{'h','a','p','p','y','\0'})
12.字符串由有效字符和字符串结束符'\0'组成。
1.计算天数 :
#include <stdio.h>
int day_of_year(int year,int month,int day);
int main(void) {
int year,month,day;
printf("enter year:");
scanf("%d",&year);
printf("enter month:");
scanf("%d",&month);
printf("enter day:");
scanf("%d",&day);
printf("剩余%d天",day_of_year(year,month,day));
return 0;
}
int day_of_year(int year,int month,int day){
int k,leap;
int tab[2][13]={
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}
};
leap=(year%4==0&&year%100!=0)||(year%400==0);
for(k=1;k<month;k++){
day=day+tab[leap][k];
}
return day;
}
2.判断回文
#include <stdio.h>
#define max 80
int main(void) {
int i,k;
char line[max];
printf("enter a string:");
k=0;
while((line[k]=getchar())!='\n'){
k++;
}
line[k]='\0'; //存入结束符号'\0'
i=0;
k=k-1;
while(i<k){
if(line[i]!=line[k]){
break;
}
i++;
k--;
}
if(i>=k){
printf("yes\n");
}else{
printf("no\n");
}
return 0;
}