2、见问题-if语句C程序中常见问题-定长数组与变长数组定义定长数组:inta[5];变长数组:intn;inta[n];定义数组并初始化数组元素:inta[5]={1,2,3,4,5};访问数组元素(写、读):for(i=0;i<5;i++)a[i]=i*2;for(i=0;i<5;i++)printf("%d",a[i]);变长数组:intn=20;inta[n];C99标准规定:定义数组时,其尺寸可以不确定,但不是所有的编译器都支持该特性关于函数函数是具有名字的语句序列,使用函数可改善程序的结构,也用于将多处重
3、复使用的代码编写为函数,减少代码量函数定义和函数调用形式参数与实际参数参数传递实际参数向形式参数传值实参与形参个数相等,类型一致,按顺序一一对应函数的返回值局部变量与全局变量变量的作用域与生存期staticextern#includelongsum(inta,intb);longfactorial(intn);voidmain(){intn1,n2;longa;scanf("%d,%d",&n1,&n2);a=sum(n1,n2);printf("a=%1d",a);}longsum(inta,
4、intb){longc1,c2;c1=factorial(a);c2=factorial(b);return(c1+c2);}longfactorial(intn){longrtn=1;inti;for(i=1;i<=n;i++)rtn*=i;return(rtn);}longsum(inta,intb);longfactorial(intn);文件包含编译预处理命令函数原型说明函数定义函数调用函数调用函数返回值形参实参函数参数数组作为函数参数结构体数据作为函数参数传值调用函数调用执行时,将实际参数的值传递给形式
5、参数,这个传递过程是单向的voidswap(intx,inty){intt;t=x;x=y;y=t;}intmain(){inta,b,c;a=3;b=8;c=2;if(a>b)swap(a,b);if(a>c)swap(a,c);if(b>c)swap(b,c);printf("%d%d%d",a,b,c);return0;}传值调用函数调用执行时,将实际参数变量的地址传递给形式参数voidswap(int*x,int*y){intt;t=*x;*x=*y;*y=t;}main(){inta,b,c;a=3;b
6、=8;c=2;if(a>b)swap(&a,&b);if(a>c)swap(&a,&c);if(b>c)swap(&b,&c);printf("%d%d%d",a,b,c);}数组作为函数参数数组作为参数有两种形式数组元素作为实参,与一般变量相同;形参为数组,实参为数组名intnum[5]={79,11,27,26,43};num[4]num[2]num[3]num[0]num[1]7911272643数组元素是一个变量数组元素作为函数参数数组元素等同于一个一般变量,作为实参时,是将数组元素的值传给形参voidc
7、hange(intx){printf("before:%d",x);x=x+10;printf("after:%d",x);}intmain(){inti;intnum[6]={43,18,9,13,55,7};change(num[2]);for(i=0;i<6;i++)printf("%dt",num[i]);return0;}数组名作为函数参数数组名可以作为实参,传递的是数组空间的首地址inti,j,temp,a[5]={43,18,9,13,55};for(i=0;i<4;i++){for(j=
8、0;j<4-i;j++)if(a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}/*endif*/}/*endfori*/voidsort(inta[],intn)/*数组a的尺寸为n*/{inti,j,temp;for(i=0;ia[j+1]){te