数组

10.1数组

一些数组声明

int main(void){
fload candy[365];
char code[12];
int states[50];
...
}

方括号表示都是[]数组candy code states都是数组,[]里面是元素个数

要访问数组中的元素

candy[0]表示第一个元素

 

 

###10.1.1初始化数组

在程序一开始就初始化数组最好

#include<stdio.h>
#define MONTHS 12
int main(void)
{
int days[MONTHS]=[31,28,31,30,31,30,31,31,30,31,30,31];
int index;
for(index=0;index<MONTHS;index++)
  printf("month %2d has %2d days.\n",index+1,day[index]);
  return 0;
}

***使用const声明数组

创建只读数组,不把新值写入

const int days [MONTHS]=[,,,,,,,,,,,]

 

 

###10.1.3给数组元素赋值

借助下标或索引

#include<stdio.h>
#define SIZE 50
int main(void){
int counter,evens[SIZE];
for(counter=0;counter<SIZE;counter++)
  evens[counter]=2*counter;
  ...
}

10.1.4数组边界

int doofi[20];

 

###10.2多维数组

float rain 5

rain 是一个内涵5个元素的数组

10.2.1初始化二维数组

sometype ar1[5]={val1,val2,,,,};

初始化可以省略花括号

##10.2.2其他多维数组

int box10[30

]

 

  1. int imax() 旧式的函数声明

int imax(int,int);

int imax(int a,int b);

输入类型不匹配,系统制动换成整形

  1. 函数原型的优点:把整个函数定义放在第一次调用之前

###9.3递归

  1. 每级函数调用都有自己变量

  2. 每次函数调用都会返回一次

  3. 递归函数中位于递归调用之前的语句,均按被调函数的顺序进行

  4. ,,,,,,,,,,,之后,,,,,,,,,,,相反顺序进行

  5. +

  6. 递归有时可以用循环代替,循环也可以用递归代替

  7. 必须有让递归停止的语句 使用if或其他等价条件

###9.3.3尾递归

  1. 阶乘可以用循环或者递归

    n!=n*(n-1)!

    ###递归与倒序的计算

    void to_binary(unsigned long n)递归函数

    {

    int r;

    r=n%2;

    if(n>=2)

    to_bionary(n\2)

    putchar(r==0?'0':'1')

    return 0

    }

    ###9.3.5递归的优缺点

    提供了简便的算法,但是消耗内存

#编译多源代码文件的程序

 

 

 

#include<stdio.h>
#include"hotel.h"
int main(void)
{
int nights;
double houtel_ rate;
int code;
while((code=menu())!=QUIT)
}
  swich(code)
  {
  case 1:hotel_rate=hotel 1;
  break;
  case 2:hotel_rate=hotel 2;
  break;
  case 3:hotel_rate=hotel 3;
  break;
  case 4:hotel_rate=hotel 4;
  break;
  default:hotel_rate=0.0;
      printf("Oops!\n");
      break;
     
     
      }
  nights=getnights();
  showprice(hotel_rate,night);
  }
  printf("thanks");
  return 0;
  }

###9.5取地址符

&取地址符

指针用于存储变量地址

printf("%d %p\n",pooh,&pooh)

9.6更改主调函数变量

interchange()

#include<stdio.h>
void interchange(int u,int v);
int main(void){
int x=5,y=10;
printf("originally x=%d and y=%d.\n",x,y);
interchage(x,y);
printf("now x+%d and y=%d.\n",x,y);
return 0;
}
void interchange(int u,int v){
int temp;
printf("originally u=%d and v=%d",u,v);
temp=u;
u=v;
v=temp;
printf("now u =%D and v=%d.\n",u,v);


}

interchange()没有问题,交换了u和v的值。问题是把结果传回main()时。interchange()使用的变量并不是main()的变量

应该在interchange后加上

return(u)

要使用指针才能全部调用

 

 

 

 

 

上一篇:JavaScript删除元素


下一篇:使用 Virbox Protector 对 unity打包的 apk 加密