本文目錄一覽:
一維數組元素的倒置操作,用C語言寫。
void reverse(int p[], int n)
{
int *q,t;
for(q=p+n-1;pq;++p,–q)
{
t=*p;
*p=*q;
*q=t;
}
}
C語言如何實現數組元素倒置??
1、打開c語言編輯器,新建一個空白的文件:
2、這裡可以開始寫代碼了,主函數的前面定義了數組和一些變量,倒置操作在for循環中完成,這裡只需要第一個元素和最後一個元素交換、第二個元素和倒數第二個元素交換、以此類推……不管數組元素的個數是奇數還是偶數,這個算法都是成立的,最後則是打印輸出結果:
3、最後程序編寫完成需要驗證一下結果,按下crtl+F5運行程序,彈出的窗口中就能看見逆序輸出的數組元素了:
里氏替換原則與依賴倒置原則有什麼區別
區別:
定義不同:里氏替換原則是關於子類與父類的原則;依賴倒置原則是關於抽象與細節的原則。
應用範圍不同:依賴倒置原則的應用範圍比里氏替換原則更廣泛。
涉及的對象關係不同:里氏替換原則中的子類具有自己的獨立性;依賴倒置原則中的細節依賴於抽象。
衍生知識點:
一、里氏替換原則
定義1:如果對每一個類型為T1的對象o1,都有類型為T2的對象o2,使得以T1定義的所有程序P在所有的對象o1都代換成o2時,程序P的行為沒有發生變化,那麼類型T2是類型T1的子類型。
定義2:所有引用基類的地方必須能透明地使用其子類的對象。
通俗來講:子類可以擴展父類的功能,但不能改變父類原有的功能。是OCP的擴展。它包含以下四層含義:
1. 子類可以實現父類的抽象,但不能覆蓋父類的非抽象方法
2. 子類中可以增加自己特有的方法
3. 當子類的方法重載父類的方法時,方法的前置條件(即方法的形參)要比父類方法的輸入更寬鬆
4. 當子類的方法實現父類的抽象方法時,方法的後置條件(即方法的返回值)要比父類的更嚴格
二、依賴倒置原則
定義:高層模塊不應該依賴底層模塊,二者都應該依賴其抽象;抽象不應該依賴細節;細節應該依賴抽象。
問題由來:類A直接依賴類B,假如要將類A改為依賴類C,則必須通過修改類A的代碼來達成。這種場景下,類A一般是高層模塊,負責複雜的業務邏輯;類B和類C是低層模塊,負責基本的原子操作;假如修改類A,會給程序帶來不必要的風險。
解決方案:將類A修改為依賴接口I,類B和類C各自實現接口I,類A通過接口I間接與類B和類C發生聯繫,則會大大降低修改類A的幾率。
核心思想:面向接口編程。含有下面3點:
1. 低層模塊盡量都要有抽象類或接口,或者兩者都有
2. 變量的聲明類型盡量使抽象類或接口
3. 用繼承時遵循里氏替換原則
用c語言實現數組倒置
#include stdio.h
void invert(int x[],int n);
void main()
{
int i,*p,a[10]={2,3,4,5,6,7,8,9,10,11};
printf(“%s\n”,”元素倒置前:”);
for(p=a;pa+10;) printf(“%d “,*(p)++);
printf(“\n”);
p=a;
invert(p,10);
printf(“%s\n”,”元素倒置後:”);
for(p=a;pa+10;) printf(“%d “,*(p)++);
printf(“\n”);
}
void invert(int x[],int n)
{
int temp,i,j,m=(n-1)/2;
for (i=0;i=m;i++)
{
j=n-1-i;
temp=x[i];x[i]=x[j];x[j]=temp;
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/259450.html