Day25-綜合練習
那我們教完了陣列的用法,那今天就來做個綜合練習吧
範例1:搜尋陣列內容
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define SIZE 20
int search(int [],int ,int ,int);
int main(void){
int i,a[SIZE],from=0,key;
srand(time(NULL));
for(i=0;i<SIZE;i++)
a[i]=rand()%10*1;
printf("請輸入欲搜尋的值(1~10)");
scanf("%d",&key);
while(from<SIZE){
int ans;
ans=search(a,from,SIZE,key);
if(ans==-1){
if(!from)
printf("%d not found\n",key);
break;
}
else{
printf("%d found at a[%d]=%d\n",key,ans,a[ans]);
from=ans+1;
}
}
system("pause");
}
int search(int a[],int from ,int size,int key){
int i;
for(i=from;i<size;i++)
if(a[i]==key)
return i;
return -1;
}
印出:
解釋:
SIZE是一個變數,自動替換成整數20
程式的while()迴圈,呼叫search()函式搜尋陣列,並控制from變數,找出所有出現在陣列中的關鍵值
搜尋出關鍵值(key)的所有索引值(index),search()函式接受四個引數,第一個引數a[]是欲搜尋的陣列,第二個引數from是選擇要從陣列哪一個index開始搜尋(若找到key,函式就會結束,並return index),第三個引數size是陣列的大小,第四個引數key則是欲搜尋的關鍵值
範例2:
#include<stdio.h>
#include<stdlib.h>
int main(void){
short a[200];
int m=0,k,i,carry=0;
for(i=0;i<200;i++)
a[i]=0;
a[m]=1;
for(k=2;k<=50;k++){
for(i=0;i<=m;i++){
a[i]=a[i]*k;
a[i]=a[i]+carry;
if((carry=a[i]/10) !=0&&i==m)
m++;
a[i]=a[i]%10;
}
}
printf("50!=");
for(i=m;i>=0;i--)
printf("%d",a[i]);
printf("\n");
system("pause");
}
印出:
解釋:陣列a用來記錄欲計算數字,變數m紀錄了目前所在位數,陣列第0個元素紀錄數字個位數,第1個元素紀錄數字第十位數,以此類推
那今天就先到這拉
謝謝大家今天的閱讀