C语言的数组和函数部分的知识,在语法上和Java语法是有所相似的,这里只通过实例总结一些自己感觉需要理解的部分知识。
1.数组
数组中的元素具有相同的数据类型;数组一旦创建,不能被改变;数组中元素在内存中是连续依次存在的;使用时需要随时注意下标越界的问题。
例1:输入数量不确定的[0,9]范围内的整数,统计每个数字出现的次数,输入-1时结束程序。
#include <stdio.h> #include <stdlib.h> int main() { int i; int num[10]={0}; scanf("%d",&i); while(i!=-1){ if(i>=0&&i<=9){ num[i]++; } scanf("%d",&i); } for(i=0;i<10;i++) { printf("%d出现了%d次 ",i,num[i]); } return 0; }
例2:在一组给定的数据中,找出某个数据是否存在。
1 #include <stdio.h> 2 #include <stdlib.h> 3 int search(int key,int a[],int length) 4 { 5 int ret=-1; 6 int i; 7 for(i=0;i<length;i++) 8 { 9 if(a[i]==key) 10 { 11 ret=i; 12 break; 13 } 14 } 15 return ret; 16 } 17 int main() 18 { 19 int a[10]={1,2,3,4,5,6,7,8,9,10}; 20 int x; 21 int loc; 22 printf("请输入一个数字:"); 23 scanf("%d",&x); 24 loc=search(x,a,10); 25 if(loc!=-1) 26 { 27 printf("%d在第%d个位置上。 ",x,loc); 28 }else{ 29 printf("%d不存在!"); 30 } 31 return 0; 32 }
二维数组:int a[i][j];//i行j列的数组
例3:将一个二维数组行和列的元素互换,存到另一个二维数组中。
1 #include <stdio.h> 2 #include <stdlib.h> 3 int main() 4 { 5 int a[2][3]={{1,2,3},{4,5,6}}; 6 int b[3][2],i,j; 7 printf("array a: "); 8 for(i=0;i<=1;i++) 9 { 10 for(j=0;j<=2;j++) 11 { 12 printf("%5d",a[i][j]); 13 b[j][i]=a[i][j]; 14 } 15 printf(" "); 16 } 17 printf("array b: "); 18 for(i=0;i<=2;i++) 19 { 20 for(j=0;j<=1;j++) 21 { 22 printf("%5d",b[i][j]); 23 } 24 printf(" "); 25 } 26 return 0; 27 }
2.函数
C语言中的函数和Java中的方法是一个道理的,都是一段实现某种功能的代码块,也都要注意返回值、形参实参等。
***注意:若函数有返回值,必须使用带值的return。
C语言在调用函数时,永远只能传值给函数,不能传变量。
C语言不允许函数嵌套定义。
例1:求1-10,20-30,45-60三个区间数字的总和。
1 #include <stdio.h> 2 #include <stdlib.h> 3 int sum(int a,int b) 4 { 5 int i; 6 int sum; 7 for(i=a;i<=b;i++) 8 { 9 sum=sum+i; 10 } 11 return sum; 12 } 13 int main() 14 { 15 int x,y,z,result; 16 x=sum(1,10); 17 y=sum(20,30); 18 z=sum(45,60); 19 result=x+y+z; 20 printf("这三组数的和为%d",result); 21 }
例2:swap()无法实现交换两个变量的值。
1 #include <stdio.h> 2 #include <stdlib.h> 3 void swap(int a,int b) 4 { 5 int t; 6 t=a; 7 a=b; 8 b=t; 9 } 10 int main() 11 { 12 int a=5; 13 int b=6; 14 swap(a,b); 15 printf("a=%d,b=%d",a,b); 16 return 0; 17 }
原因是:C语言在调用函数时,永远只能传值给函数,不能传变量。