1. 數組基本知識
1. 概念: 同一個類型的集合。 2. 定義: int data[100]; //數組data里可以存放100個int類型 100必須是常量(C89)。定義數組時,如果沒有賦初始值[]一定要填大小。 int data[]={1}; 3.數組賦值: 只有在定義的使用才可以整體賦值。int data[10]={12,34,56,7,89}; 4.數組下標[]訪問從0開始。 比如: buff[100]; 下標范圍: 0~99 5.數組的名稱就是首地址。int buff[100]; 1.2 字符串數組 1. 字符串錄入: scanf(“%s”); gets() fgets 2. 頭文件: string.h 3. 從鍵盤錄入字符串的方法 scanf("%s",str); //從鍵盤上錄入字符串,字符串結尾: '
1. 概念: 同一個類型的集合。 2. 定義: int data[100]; //數組data里可以存放100個int類型 100必須是常量(C89)。定義數組時,如果沒有賦初始值[]一定要填大小。 int data[]={1}; 3.數組賦值: 只有在定義的使用才可以整體賦值。int data[10]={12,34,56,7,89}; 4.數組下標[]訪問從0開始。 比如: buff[100]; 下標范圍: 0~99 5.數組的名稱就是首地址。int buff[100]; 1.2 字符串數組 1. 字符串錄入: scanf(“%s”); gets() fgets 2. 頭文件: string.h 3. 從鍵盤錄入字符串的方法 scanf("%s",str); //從鍵盤上錄入字符串,字符串結尾: '\0' gets(str); //從鍵盤上錄入字符串 fgets(str,100,stdin); //從鍵盤上錄入字符串 (標準輸入) #include int main(int argc,char **argv) { int int_data[100]={12,34,56,78}; //整型數組 char char_data[]={'A','B','C'}; //字符數組 char str1_data[]={'A','B','C','\0'}; //字符串數組 char str2_data[]="ABC";//字符串數組 printf("char_data=%d\n",sizeof(char_data)); //3 printf("str1_data=%d\n",sizeof(str1_data)); //4 printf("str2_data=%d\n",sizeof(str2_data)); //4 return 0; } 字符串數組特性: 結尾有’\0’
int main(int argc,char **argv) { int int_data[100]={12,34,56,78}; //整型數組 char char_data[]={'A','B','C'}; //字符數組 char str1_data[]={'A','B','C','1. 概念: 同一個類型的集合。 2. 定義: int data[100]; //數組data里可以存放100個int類型 100必須是常量(C89)。定義數組時,如果沒有賦初始值[]一定要填大小。 int data[]={1}; 3.數組賦值: 只有在定義的使用才可以整體賦值。int data[10]={12,34,56,7,89}; 4.數組下標[]訪問從0開始。 比如: buff[100]; 下標范圍: 0~99 5.數組的名稱就是首地址。int buff[100]; 1.2 字符串數組 1. 字符串錄入: scanf(“%s”); gets() fgets 2. 頭文件: string.h 3. 從鍵盤錄入字符串的方法 scanf("%s",str); //從鍵盤上錄入字符串,字符串結尾: '\0' gets(str); //從鍵盤上錄入字符串 fgets(str,100,stdin); //從鍵盤上錄入字符串 (標準輸入) #include int main(int argc,char **argv) { int int_data[100]={12,34,56,78}; //整型數組 char char_data[]={'A','B','C'}; //字符數組 char str1_data[]={'A','B','C','\0'}; //字符串數組 char str2_data[]="ABC";//字符串數組 printf("char_data=%d\n",sizeof(char_data)); //3 printf("str1_data=%d\n",sizeof(str1_data)); //4 printf("str2_data=%d\n",sizeof(str2_data)); //4 return 0; } 字符串數組特性: 結尾有’\0’
'}; //字符串數組 char str2_data[]="ABC";//字符串數組 printf("char_data=%d\n",sizeof(char_data)); //3 printf("str1_data=%d\n",sizeof(str1_data)); //4 printf("str2_data=%d\n",sizeof(str2_data)); //4 return 0; } 字符串數組特性: 結尾有’1. 概念: 同一個類型的集合。 2. 定義: int data[100]; //數組data里可以存放100個int類型 100必須是常量(C89)。定義數組時,如果沒有賦初始值[]一定要填大小。 int data[]={1}; 3.數組賦值: 只有在定義的使用才可以整體賦值。int data[10]={12,34,56,7,89}; 4.數組下標[]訪問從0開始。 比如: buff[100]; 下標范圍: 0~99 5.數組的名稱就是首地址。int buff[100]; 1.2 字符串數組 1. 字符串錄入: scanf(“%s”); gets() fgets 2. 頭文件: string.h 3. 從鍵盤錄入字符串的方法 scanf("%s",str); //從鍵盤上錄入字符串,字符串結尾: '\0' gets(str); //從鍵盤上錄入字符串 fgets(str,100,stdin); //從鍵盤上錄入字符串 (標準輸入) #include int main(int argc,char **argv) { int int_data[100]={12,34,56,78}; //整型數組 char char_data[]={'A','B','C'}; //字符數組 char str1_data[]={'A','B','C','\0'}; //字符串數組 char str2_data[]="ABC";//字符串數組 printf("char_data=%d\n",sizeof(char_data)); //3 printf("str1_data=%d\n",sizeof(str1_data)); //4 printf("str2_data=%d\n",sizeof(str2_data)); //4 return 0; } 字符串數組特性: 結尾有’\0’
’2. 數組相關的題目(分析)
2.1 數組的數據插入
int a[]={1,2,3,4,5,6,7}; 在第2位數據后插入一個888 結果: 1,2,888,3,4,5,6,7 #include int main(int argc,char **argv) { int data[10]={1,2,3,4,5,6,7,8,9}; //1,2,3,4,4,5,6,7,8,9 int addr; int i; printf("輸入插入的位置:"); scanf("%d",&addr); /*1. 向后移動數據,空出位置*/ for(i=8;i>=addr;i--) { data[i+1]=data[i]; } /*2. 查看移動之后的效果*/ for(i=0;i<10;i++)printf("%d ",data[i]); printf("\n"); data[addr]=888; //插入的數據 /*3. 最終效果*/ for(i=0;i<10;i++)printf("%d ",data[i]); printf("\n"); return 0; }
2.2 數組數據的刪除
int a[]={1,2,3,4,2,6,7}; 將第2位數據刪除掉 結果: 1,3,4,5,6,7 示例: #include int main(int argc,char **argv) { int data[10]={1,2,3,4,5,6,7,8,9,10}; //1,2,4,5,6,7,8,9,10,10 int addr; int i; printf("輸入刪除的位置:"); scanf("%d",&addr); //2 /*1. 向前移動,將數據覆蓋掉*/ for(i=addr-1;i<10-1;i++) { data[i]=data[i+1]; } /*2. 查看移動之后的效果*/ for(i=0;i<9;i++)printf("%d ",data[i]); printf("\n"); return 0; }
2.3 變量排序
數組數據排序。從鍵盤上輸入一串數據(整數),從大到小排序,再輸出。

int a[]={12,67,45,13,1,5}; 排序之后: 67,45,13,12,5,1
排序: 計算平均數。班級成績、溫度數據…
例子: 從鍵盤上隨機輸入3個數,將3個數按照從大到小的順序輸出。
#include int main(int argc,char **argv) { int a,b,c; int tmp; //存放臨時數據 printf("請輸入3個數:"); scanf("%d%d%d",&a,&b,&c); //以回車作為結束符號,以空格作為間隔符號 printf("源數據:%d,%d,%d\n",a,b,c); //從大到小 if(a2.4 數組冒泡排序
#include int main(int argc,char **argv) { int data[10]; int tmp; //存放臨時數據 int i,j; int cnt=0; //排序比較的總次數 /*1. 錄入數據*/ printf("請輸入10個數:"); for(i=0;i<10;i++)scanf("%d",&data[i]); /*2. 打印源數據:*/ printf("源數據:"); for(i=0;i<10;i++)printf("%d ",data[i]); printf("\n"); /*3. 冒泡排序*/ for(i=0;i<10-1;i++) //比較輪數 { for(j=0;j<10-1-i;j++) //每一輪比較的次數 { if(data[j]>data[j+1]) //從小到大 { tmp=data[j]; data[j]=data[j+1]; data[j+1]=tmp; } cnt++; } } /*4. 打印結果數據:*/ printf("排序之后的數據:"); for(i=0;i<10;i++)printf("%d ",data[i]); printf("\n"); printf("排序的總次數:%d\n",cnt); return 0; }
分析:
/* data[]={1,2,3} 第一輪: [0]和[1] [1]和[2] 2 3 1 每一輪保證最小的數在最后 第二輪: [0]和[1] 3 2 1 */ 排序: 從大到小 1 2 3 4 5 第一輪: (1) 2 1 3 4 5 (2) 2 3 1 4 5 (3) 2 3 4 1 5 (4) 2 3 4 5 1 第二輪: (1) 3 2 4 5 1 (2) 3 4 2 5 1 (3) 3 4 5 2 1 (4) 3 4 5 2 1 第三輪: (1) 4 3 5 2 1 (2) 4 5 3 2 1 (3) 4 5 3 2 1 (4) 4 5 3 2 1 第四輪: (1) 5 4 3 2 1 (2) 5 4 3 2 1 (3) 5 4 3 2 1 (4) 5 4 3 2 1
2.5 冒泡排序優化
#include int main(int argc,char **argv) { int data[10]; int tmp; //存放臨時數據 int i,j; int cnt=0; //排序比較的總次數 45: int flag=0; //標志位置 /*1. 錄入數據*/ printf("請輸入10個數:"); for(i=0;i<10;i++)scanf("%d",&data[i]); /*2. 打印源數據:*/ printf("源數據:"); for(i=0;i<10;i++)printf("%d ",data[i]); printf("\n"); /*3. 冒泡排序*/ for(i=0;i<10-1;i++) //比較輪數 { for(j=0;j<10-1-i;j++) //每一輪比較的次數 { if(data[j]>data[j+1]) //從小到大 { tmp=data[j]; data[j]=data[j+1]; data[j+1]=tmp; flag=1; } cnt++; } if(flag==0) //不需要繼續排序 { break; //跳出最外層循環 } flag=0; //清除標志位,方便第2次判斷 } /*4. 打印結果數據:*/ printf("排序之后的數據:"); for(i=0;i<10;i++)printf("%d ",data[i]); printf("\n"); printf("排序的總次數:%d\n",cnt); return 0; }
分析:
data[]={1,2,3} 第一輪: [0]和[1] [1]和[2] 2 3 1 每一輪保證最小的數在最后 第二輪: [0]和[1] 3 2 1
2.6 數組數據的拼接(整數)
int a[]={1,3,4,5,6,7}; int b[]={11,13,14,15,16,17}; 將a和b拼接到c數組里。 最終int c[]={1,3,4,5,6,7, 11,13,14,15,16,17} 必須保證c數組空間足夠大。
示例代碼:
#include int main(int argc,char **argv) { int src_data[10]={1,2,3,4,5}; int new_data[]={6,7,8,9}; // int i; for(i=0;iC 語言 數據結構
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。