函數實例之數組應用(初始化,逆置,輸出,清空)

注:書寫函數時,函數要僅可能的便於移植,非必要情況不要有輸入輸出語句!

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 10//數組大小
void init(int arr[],int sz);//數組初始化
void reverse(int arr[],int sz);//數組逆置
void print(int *parr,int sz);//數組輸出
void empty(int arr[],int sz);//數組清空
int main()
{
 int arr[N];
 init(arr,N);
 printf("\n逆置前輸出\n");
 print(arr,N);
 reverse(arr,N);//逆置
 printf("\n逆置後輸出\n");
 print(arr,N);
 empty(arr,N);//清空,或用函數memset
 //memset(arr,0,sizeof(arr));//數組所有值替換函數memset(數組名,替換數,sizeof(數組名))
 system("pause");
 return 0;
}
void init(int arr[],int sz)
{
 int i=0;
 for(i=0;i<sz;i++)
 {
  printf("輸入第%d個值:",i);
  scanf("%d",&arr[i]);
 }
}
void reverse(int arr[],int sz)
{
 int i=0;
 int j=sz-1;//數組大小減一爲最大下標
 for(i=0,j=sz-1;i<sz/2;i++,j--)//前後交換隻交換一半的次數
 {
  arr[i]=arr[i]^arr[j];//前值與後值交換
  arr[j]=arr[i]^arr[j];
  arr[i]=arr[i]^arr[j];
 }
}
void print(int *parr,int sz)
{
 int i=0;
 for(i=0;i<sz;i++)
 {
  printf("%d  ",*parr);//*parr相當於arr[i]
  parr++;//指向下一地址,爲輸出下一值做準備
 }
}
void empty(int arr[],int sz)
{
 int i=0;
 for(i=0;i<sz;i++)
  arr[i]=0;//數組清空
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章