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
]
-
int imax() 旧式的函数声明
int imax(int,int);
int imax(int a,int b);
输入类型不匹配,系统制动换成整形
-
函数原型的优点:把整个函数定义放在第一次调用之前
###9.3递归
-
每级函数调用都有自己变量
-
每次函数调用都会返回一次
-
递归函数中位于递归调用之前的语句,均按被调函数的顺序进行
-
,,,,,,,,,,,之后,,,,,,,,,,,相反顺序进行
-
+
-
递归有时可以用循环代替,循环也可以用递归代替
-
必须有让递归停止的语句 使用if或其他等价条件
###9.3.3尾递归
-
阶乘可以用循环或者递归
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)
要使用指针才能全部调用