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次\n",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個位置上。\n",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:\n"); 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("\n"); 16 } 17 printf("array b:\n"); 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("\n"); 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語言在調用函數時,永遠只能傳值給函數,不能傳變量。