程序設(shè)計(jì)規(guī)范報(bào)告_第1頁(yè)
程序設(shè)計(jì)規(guī)范報(bào)告_第2頁(yè)
程序設(shè)計(jì)規(guī)范報(bào)告_第3頁(yè)
程序設(shè)計(jì)規(guī)范報(bào)告_第4頁(yè)
程序設(shè)計(jì)規(guī)范報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

程序設(shè)計(jì)規(guī)范報(bào)告學(xué)院:信息科學(xué)與工程學(xué)院專(zhuān)業(yè):計(jì)算機(jī)科學(xué)與技術(shù)(軟件外包)班級(jí):計(jì)軟1304學(xué)號(hào):20131214學(xué)生姓名:程序設(shè)計(jì)規(guī)范及其示例1.符號(hào)命名規(guī)則符號(hào)名包括模塊名、常量名、標(biāo)號(hào)名、子程序名等。這些名字應(yīng)該能反映它所代表的實(shí)際東西,具有一定的意義,使其能夠見(jiàn)名知義,有助于對(duì)程序功能的理解。命名采用匈牙利命名法。規(guī)則如下:(1)所有宏定義、枚舉常數(shù)和const變量,用大寫(xiě)字母命名。在復(fù)合詞里用下劃線(xiàn)隔開(kāi)每個(gè)詞。(2)復(fù)合詞中每個(gè)單詞的第一個(gè)字母大寫(xiě)。(3)類(lèi)、類(lèi)型定義和枚舉型名的第一個(gè)字母大寫(xiě)。(4)函數(shù)名是復(fù)合詞的,第一個(gè)詞采用全部小寫(xiě),隨后每個(gè)單詞采用第一個(gè)字母大寫(xiě),其它字母小寫(xiě)方式;如果是單個(gè)詞的,采用全部小寫(xiě)方式。(5)循環(huán)變量可采用i,j,k等,不受上述規(guī)則限制。(6)類(lèi)的成員變量應(yīng)采用m_開(kāi)頭。(7)全局變量詞頭為g_。(8)臨時(shí)變量詞頭為tmp_。(9)對(duì)結(jié)構(gòu)體內(nèi)的變量命名,遵循變量的具體含義命名原則(10)用小寫(xiě)字母的前綴表示變量的類(lèi)型,前綴的下一個(gè)字母用大寫(xiě)。例:編寫(xiě)一個(gè)簡(jiǎn)單的圖書(shū)借閱程序。structbook{ charbooknum[20];//編號(hào) charbookname[20];//書(shū)名 charpress[20];//出版社 charpresstime[20];//時(shí)間 charisborrow[2];//是否被借閱};2.名字的長(zhǎng)度一般不要過(guò)長(zhǎng)或過(guò)短。過(guò)長(zhǎng)的名字會(huì)增加工作量,使程序邏輯流程變得模糊;過(guò)短的名字無(wú)法表達(dá)符號(hào)的實(shí)際意義。約定長(zhǎng)度范圍:3-31。dypedefstructstudent{ charsno[10]; charsname[30]; intsage; structstudent*next;}stu;//重命名為stu,減少工作量3.程序注釋3.1程序注釋是程序員與日后的程序讀者之間通信的重要手段之一,注釋分為文件注釋、函數(shù)注釋和功能注釋。3.2正規(guī)程序的注釋?xiě)?yīng)注意:——注釋行的數(shù)量占到整個(gè)源程序的1/3到1/2。3.3文件注釋位于整個(gè)源程序的最開(kāi)始部分,注釋后空兩行開(kāi)始程序正文。它包括:——程序標(biāo)題?!康?、功能說(shuō)明?!募髡?、最后修改日期等說(shuō)明。/***************************************************************

文件名:**

創(chuàng)建人:**

日期: **

修改人:**

日期:**

描述:**

版本:*************************************************************/4.函數(shù)編寫(xiě)應(yīng)盡可能短小精悍,一般不超過(guò)兩屏,以便于調(diào)試和理解。5.語(yǔ)句結(jié)構(gòu)為保證語(yǔ)句結(jié)構(gòu)的清晰和程序的可讀性,在編寫(xiě)軟件程序時(shí)應(yīng)注意以下幾個(gè)方面的問(wèn)題:——在一行內(nèi)只寫(xiě)一條語(yǔ)句,并采用空格、空行和移行保證清楚的視覺(jué)效果?!恳粋€(gè)嵌套的函數(shù)塊,使用一個(gè)TAB縮進(jìn)(可以設(shè)定為4個(gè)空格),大括號(hào)必須放在條件語(yǔ)句的下一行,單獨(dú)成一行,便于匹對(duì)。錯(cuò)誤:1.if(n==1||n==2) return1;2.if(n==1||n==2){ return1;}正確的:if(n==1||n==2){ return1;}6.程序編寫(xiě)首先應(yīng)考慮清晰性,不要刻意追求技巧性而使得程序難以理解。除非對(duì)效率有特殊要求,編寫(xiě)程序要作到清晰第一,效率第二。voidmax(int*x){ inti,j,t; for(j=0;j<9;j++) { for(i=0;i<9-j;i++) if(x[i]<x[i+1]) { t=x[i]; x[i]=x[i+1]; x[i+1]=t; } }}語(yǔ)句嵌套不要超過(guò)五層。7.盡量用公共過(guò)程或子程序去代替重復(fù)的功能代碼段。要注意,這個(gè)代碼應(yīng)具有一個(gè)獨(dú)立的功能,不要只因代碼形式一樣便將其抽出組成一個(gè)公共過(guò)程或子程序。voidmain(){ intsu; input(s); su=max(s); printf("%s%0.f\n",s[su].name,s[su].sco);}intinput(structstu[]){ for(inti=0;i<N;i++) { printf("輸入人員信息包括學(xué)號(hào)、姓名、成績(jī)\n"); scanf("%d%s%f",&s[i].num,s[i].name,&s[i].sco); } return0;}8.使用括號(hào)清晰地表達(dá)算術(shù)表達(dá)式和邏輯表達(dá)式的運(yùn)算順序。如將x=a*b/c*d寫(xiě)成x=(a*b/c)*d可避免閱讀者誤解為x=(a*b)/(c*d)。9.文件之中不得存在無(wú)規(guī)則的空行,比如說(shuō)連續(xù)十個(gè)空行。一般來(lái)講函數(shù)與函數(shù)之間的空行為2-3行;在函數(shù)體內(nèi)部,在邏輯上獨(dú)立的兩個(gè)函數(shù)塊可適當(dāng)空行,一般為1-2行。10.避免采用過(guò)于復(fù)雜的條件測(cè)試。實(shí)用程序設(shè)計(jì)示例fun.h#ifndefFUN_H#defineFUN_Hstructstu{ charsno[10]; charsname[30]; intsage; structstu*next;};#defineLENsizeof(structstu)structstu*creat(void);voidlist(structstu*head);structstu*del(structstu*head,char*sno);structstu*insert(structstu*head);#endifmain.c#include<stdio.h>#include<stdlib.h>#include<string.h>#include"fun.h"intmain(){ structstu*head=NULL; charsno[10]; charch='y'; head=creat();//建立鏈表 list(head);//輸出鏈表 printf("進(jìn)行結(jié)點(diǎn)的刪除:\n"); while(ch=='y') { printf("輸入要?jiǎng)h除的學(xué)生的學(xué)號(hào)\n"); scanf("%s",&sno); getchar(); head=del(head,sno); printf("繼續(xù)刪除其他學(xué)生的信息請(qǐng)輸入'y':"); ch=getchar(); getchar(); } printf("刪除后的學(xué)生的信息\n"); list(head);//鏈表輸出 ch='y'; printf("進(jìn)行結(jié)點(diǎn)插入操作\n"); while(ch=='y') { head=insert(head); printf("繼續(xù)插入學(xué)生信息請(qǐng)輸入'y':\n"); ch=getchar(); getchar(); } printf("插入后學(xué)生的信息\n"); list(head); return0;}creat.c#include<stdio.h>#include<stdlib.h>#include<string.h>#include"fun.h"structstu*creat(void)//鏈表的建立{ structstu*head=NULL,*p1,*p2; inti=1; charsno[10]; printf("輸入第一個(gè)學(xué)生的學(xué)號(hào),回車(chē)結(jié)束:\n"); while(gets(sno)!=NULL&&sno[0]!='\0')//輸入學(xué)號(hào),如果學(xué)號(hào)不為空且輸入不為回車(chē) { p1=(structstu*)malloc(LEN);//開(kāi)辟一個(gè)新單元 strcpy(p1->sno,sno); printf("輸入名字:\n"); gets(p1->sname);//輸入名字 printf("輸入年齡:\n"); scanf("%d",&p1->sage);//輸入年齡 p1->next=NULL; if(head==NULL) { head=p1; } else { p2->next=p1; } p2=p1;//使p2指向剛才p1指向的結(jié)點(diǎn) while(getchar()!='\n'); i++;//用i記錄輸入的個(gè)數(shù) printf("輸入第%d個(gè)學(xué)生的學(xué)號(hào),回車(chē)結(jié)束:\n",i); } returnhead;} del.c#include<stdio.h>#include<stdlib.h>#include<string.h>#include"fun.h"structstu*del(structstu*head,char*sno)//鏈表的刪除{ structstu*p1,*p2=NULL; if(head==NULL) printf("此鏈表為空\(chéng)n"); else { p1=head;//指向第一個(gè)結(jié)點(diǎn) while((strcmp(sno,p1->sno)!=0)&&(p1->next!=NULL)) { p2=p1; p1=p1->next; } if(strcmp(sno,p1->sno)==0)//找到結(jié)點(diǎn),刪除它 { if(p1==head) head=p1->next; else p2->next=p1->next; free(p1); printf("結(jié)點(diǎn)已經(jīng)刪除!\n"); } else printf("鏈表中不存在該結(jié)點(diǎn)\n"); } returnhead;}insert.c#include<stdio.h>#include<stdlib.h>#include<string.h>#include"fun.h"structstu*insert(structstu*head){ intsno1; structstu*p0,*p1,*p2; p0=(structstu*)malloc(LEN); p0->next=NULL; printf("輸入學(xué)號(hào)名字和年齡:\n"); scanf("%s%s%d",&p0->sno,&p0->sname,&p0->sage); getchar(); if(head==NULL) head=p0; else { p1=head;//使p1指向第一個(gè)結(jié)點(diǎn) sno1=strcmp(p0->sno,p1->sno);//比較兩個(gè)字符串的大小 while((sno1>0)&&(p1->next!=NULL)) { p2=p1;//使p2指向剛才p1指向的結(jié)點(diǎn) p1=p1->next;//p1后移一個(gè)結(jié)點(diǎn) } if(sno1<=0) { if(head==p1)//插到原來(lái)第一個(gè)結(jié)點(diǎn)之前 { head=p0; } else p2->next=p0;//插到p2指向的結(jié)點(diǎn)之后 p0->next=p1; } else p1->next=p0; } returnhead;}list.c#include<stdio.h>#include<stdlib.h>#include<string.h>#include"fun.

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論