首頁 > 軟體

C語言的基本編寫規範你瞭解嗎

2022-01-15 16:00:12

基本編寫規範

規範是一種規定,它是一種人為的、約定成俗的,即使不按照那種規定也不會出錯,這種規定就叫作規範。雖然我們不按照規範也不會出錯,但是那樣程式碼寫得就會很亂。如果你養成一種非常不好的寫程式碼的習慣,程式碼寫得亂七八糟,等到將來工作面試的時候,這樣的習慣可能會讓你失去機會。

一、程式碼規範化的好處

看著整齊舒服,邏輯清楚,條理清晰。假如你現在用不規範的方式寫了一萬行程式碼,現在能看得懂,但等過了三個月你再回頭看時就很吃力了,更不要說給別人看了。所以程式碼要寫規範。規範的程式碼不容易使程式出錯,即使出錯了查錯也會很方便。如果按照不規範的格式輸入程式碼的話,很容易出錯。格式雖然不會影響程式的功能,但會影響可讀性。程式的格式追求清晰、美觀,是程式風格的重要構成元素。

規範的程式碼

約瑟夫環

#include <stdio.h>
#define N 100
int main()
{
   int n,m=3,s=1;   //n:總人數,m:報數值,s報數人的起始編號 
   scanf("%d",&n);
   int a[N] = {0};  //陣列初始化
   int i,j;
   for(i = 0; i < n; i++)	//陣列遍歷
   {
       a[i] = i+1;   //i是陣列的位置量,a[i]是每個人的原始編號(從1開始) 
   }
   i=s-1;   //陣列的起點(0) 
   while (n > 1)
   {    
       i = (i+m-1) % n;   //出圈的人在陣列中的位置 
       for(j = i+1; j < n; j++)
       {
           a[j-1] = a[j];
       }
       n--;  //出局1人後,總人數-1 
       if(i == n)  //終點後,開始起點(圍成一個圈) 
       {
         i = 0;
       }
   }
   printf("%dn", a[i]);	//輸出留下的人的原始編號 
   return 0;
}

不規範的程式碼

#include<stdio.h>int main(void){int n,u,d,s,t;s=0;t=0;scanf("%d%d%d",&n,&u,&d);if(u>=n) printf("1");else{do{s=s+u;t++;if(s>=n)break;else{s=s-d;t++;}}while(s<=n);printf("%d",t);}}#include<stdio.h>
int main(void){int n,u,d,s,t;s=0;
t=0;
scanf("%d%d%d",&n,&u,&d);
if(u>=n) printf("1");
else{
do{s=s+u;t++;
if(s>=n)break;
else
{
s=s-d;
t++;}
}while(s<=n);
printf("%d",t);}
}

二、規範目的與基本規則

1.目的

可移植性、連貫、整潔、易於維護、易於理解、簡潔

2.基本原則

1.空行

空行起著分隔程式段落的作用。空行得體將使程式的佈局更加清晰。空行不會浪費記憶體。

規則一:定義變數後要空行。儘可能在定義變數的同時初始化該變數。

規則二:每個函數定義結束之後都要加空行。

規則三:兩個相對獨立的程式塊、變數說明之後必須要加空行。比如上面幾行程式碼完成的是 一個功能,下面幾行程式碼完成的是另一個功能,那麼它們中間就要加空行。這樣看起來更清晰。

2.空格

規則一:關鍵字之後要留空格。像 const、case 等關鍵字之後至少要留一個空格,否則無法辨析關鍵字。像 if、for、while 等關鍵字之後應留一個空格再跟左括號(,以突出關鍵字。

規則二:函數名之後不要留空格,應緊跟左括號(,以與關鍵字區別。

規則三(後不打空格; ),;這三個前不打空格。

規則四,之後要留空格。如果;不是一行的結束符號,其後要留空格。

規則五:賦值運運算元、關係運算子、算術運運算元、邏輯運運算元、位運運算元,如 =、==、!=、+=、-=、*=、/=、%=、>>=、<<=、&=、=、|=、>、<=、>、>=、+、-、*、/、%、&、|、&&、||、<<、>>、 等雙目運運算元的前後應當加空格。

注意,%d 中的“%”前後不用加空格。

規則六單目運運算元 !、~、++、--、-、*、& 等前後不加空格。

規則七:像陣列符號[]、結構體成員運運算元.、指向結構體成員運運算元->,這類操作符前後不加空格。

規則八:對於表示式比較長的 for 語句和 if 語句,為了緊湊起見,可以適當地去掉一些空格。但 for 和 if 後面緊跟的空格不可以刪,其後面的語句可以根據語句的長度適當地去掉一些空格。例如:
for (i=0; i<10; i++); //for 和分號後面保留空格就可以了,=和<前後的空格可去掉。

3.成對書寫(有些編譯器會自動補括號)

成對的符號一定要成對書寫,如 ()、{}。不要寫完左括號然後寫內容最後再補右括號,這樣很容易漏掉右括號,尤其是寫巢狀程式的時候。

4.縮排(有些編譯器會自動縮排)

縮排是通過鍵盤上的 Tab 鍵實現的,縮排可以使程式更有層次感。原則是:如果地位相等,則不需要縮排;如果屬於某一個程式碼的內部程式碼就需要縮排。

5.對齊(有些編譯器會自動對齊)

規則一{}分別都要獨佔一行。互為一對的{}要位於同一列,並且與參照它們的語句左對齊。

規則二{}之內的程式碼要向內縮排一個 Tab,且同一地位的要左對齊,地位不同的繼續縮排。

6.程式碼行

規則一:一行程式碼只做一件事情,如只定義一個變數,或只寫一條語句。這樣的程式碼容易閱讀,並且便於寫註釋。

規則二:if、else、for、while、do 等語句自佔一行,執行語句不得緊跟其後。此外,非常重要的一點是,不論執行語句有多少行,就算只有一行也要加{},並且遵循對齊的原則,這樣可以防止書寫失誤。

7.註釋

C語言中一行註釋一般採用//…,多行註釋必須採用/*…*/。註釋通常用於重要的程式碼行或段落提示。在一般情況下,源程式有效註釋量必須在 20% 以上。

規則一:註釋是對程式碼的“提示”,而不是檔案。註釋太多會讓人眼花繚亂。

規則二:如果程式碼本來就是清楚的,則不必加註釋。

規則三:邊寫程式碼邊註釋,修改程式碼的同時要修改相應的註釋,以保證註釋與程式碼的一致性,不再有用的註釋要刪除。

規則四:當程式碼比較長,特別是有多重巢狀的時候,應當在段落的結束處加註釋,這樣便於閱讀。

規則五:每一條宏定義的右邊必須要有註釋,說明其作用。

#include <stdio.h>
int main()
{
	int i = 0;
	int x,y,z;
	int n;
	scanf("%d",&n);
	for(x = 0 ; x <= 100 ; x++)   // 5分
	{
		for(y = 0 ; y <= 100 ; y++)   //2分
		{
			for(z = 0 ; z <= 100 ; z++)  //1分
			{
			    //判斷硬幣面值相加等於150分時,還要三種硬幣相加等於100枚
				if((x*1 + y*2 + z*5 == 150) && x+y+z == 100)
				{
					i++;
					if(z > 0 && z <= n)
					{//判斷前N種方案
						printf("%d %d %d",z,y,x);
						if(z < n)
						{//換行輸出,同時最後一行輸出完,不再換行
							printf("n");
						}
					}
				}
			}
		}
	}
	return 0;
}

三、其他細節

1.標頭檔案放在程式碼最前面,標頭檔案include從抽象到具體,次序:C標準庫→C++標準庫→OS相關→第三方庫→工程標頭檔案

2.識別符號的命名要清晰、明瞭,有明確含義,同時使用完整的單詞或大家基本可以理解的縮寫,避免使人產生誤解

常見縮寫

總結

本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注it145.com的更多內容!


IT145.com E-mail:sddin#qq.com