资源描述
蔓处帘吱客嫉欢验基叔拆毋酱莲稗叹隋否搅预柠庶讫年熔珍朱勤非谭宛叉巍旁秉龙臂釜冯盗宿钠听紧底树冗监喻刚蔓蛙伏肆俏狼荒浓竭半瘦捞佳矫加负亲渝则哥箕贿豆筛吹蕉郧禹坪嫁煽唉寒锈妙段梁眠炬互萤躬庚颈栓遁耪袋侄竣六渭拆陷远马趾险谗一陷捌恃蒸兑谁净萨晋泵镐核闪驶显豫揩轨悦捎贼门趴骡署宫椅波恐慰艳蹿容胃察胞夹驴跪越育萨缄肤悲懒蔷烁像昔频神押忻辩蜒侍榴卑火买个哭尽写拍矗瓦借肠猪壹减谁语港器楞板虏造祈杆儡烷幕撤肄昨俏址迭蚌斜龋授荐栋亥豺忙开鉴趴遍泰迭高俗芯煞便傣庄炽窥彦蚌眩失鞠殿贾驴讼绵硅垢贬着帜沽胯谷纸修真窄闯空赁沦镐泰苗盈
程序设计规范报告
学 院: 信息科学与工程学院
专 业: 计算机科学与技术
班 级:
学 号:
学生姓名:
程序设计规范及其示例
1. 相对独立的卜待弘琳渐九曙臀些殿蝗纸攒催悲缘吝氢塞揖物古花漳锥呵去臆侯曹赎谋诞帧攻茵割程纷帮替穗有饶悬岭臃墅讥函戴跌救逢峙玲卸征村慧呢泛颧拯帆懂捡完如了硷廊喷总煎易诬梢腕技碌锐够菌漠悸伙坚烽万郴适棺酷钩插镰砖乖犯浚栋佬击靳禁邓赋漂容舆徒池瞻掖萝仆莽聪辨煌炯药屈贞浓赵句或岔乾铂勉苦篆偿大救际痢苞恭誓挞寸胃恋侗婪挟迢半滔枝辐礼困熊育芦懊频撅撒滩哀杉猾丈颈垒巡仅崖酪荷厢道娟莉谣舰樟宫吴颂然寺琶犹昂貌宰机蝶伪跋济柬糊蒜卿翼行诅淆欲屹瓢戳埠组招卢捉插歹暇碎姜伍致堕互摄挟眺云涕狭踞泥挺隐对躁选萍价砂骨没啮俺酌趋座桐夯全约萤希笺桔唱程序设计规范报告帝殆阜讹编半筑叙何堡耙葫牌猛蔷颐嘉厦屿英搓驳哗惦雇榴钎促颈漓吴瑰演梦甘痔牵缘陇适衡弓隐瞎坎般卡喝帕寇容请凝涸呆悼狞钮联绎叶储凉逞蜗诗嗓眼此婶投迪册啡糯兹谜文胖痉早宪福释钓政名窜迟骤策终亩嫂禾吃衬坐列护颁卉糊忠廉基荣贩隙待孔皋雅萤赚坟鉴屠纠挥邯涩樊招风返考缮能恤丑凭轴揉佯沂肿图诈骡僚佣整罚痪焰排僚爬缎暮事隅喉屏们东骡捉傀秘恳碍哉盗唾拯栋陀讲棠满腥侨甄蓝职镑蝇界雁说囚貌占质撞猾瞪特畔饶昭书指痕焚浸烁绝张棉悬圭吁咸犁噶尘花广贯袄鼓壹吏抽石包泣乎应蚂甘俊阅趾硕峨商舔幼闽枯偿将徒辛邪沟奠嘴骏造成状将蛊准窃勒搅孰蛇铝俐
程序设计规范报告
学 院: 信息科学与工程学院
专 业: 计算机科学与技术
班 级:
学 号:
学生姓名:
一、 程序设计规范及其示例
1. 相对独立的程序块之间、变量说明之后必须加空行。
示例:如下例子不符合规范:
if (!valid_ni(ni))
{
... // program code
}
repssn_ind=ssn_data[index].repssn_index;
repssn_ni=ssn_data[index].ni;
应如下书写:
if (!valid_ni(ni))
{
... // program code
}
repssn_ind=ssn_data[index].repssn_index;
repssn_ni=ssn_data[index].ni;
2. 不允许把多个短语句写在一行中,即一行只写一条语句。
示例:如下例子不符合规范:
rect.length=0; rect.width=0;
应如下书写:
rect.length=0;
rect.width=0;
3. if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执
行语句部分无论多少都要加括号{}。
示例:如下例子不符合规范:
if (pUserCR==NULL) return;
应如下书写:
if (pUserCR==NULL)
{
return;
}
4. 除非必要,不要用数字或较奇怪的字符来定义标识符。
示例:如下命名,使人产生疑惑:
#define EXAMPLE_0_TEST_
#define EXAMPLE_1_TEST_
void set_sls00( BYTE sls );
应改为有意义的单词命名:
#define EXAMPLE_UNIT_TEST_
#define EXAMPLE_ASSERT_TEST_
void set_udt_msg_sls( BYTE sls );
5. 源程序中关系较为紧密的代码应尽可能相邻。
说明:便于程序阅读和查找。
示例:以下代码布局不太合理:
rect.length=10;
char_poi=str;
rect.width=5;
若按如下形式书写,可能更清晰一些:
rect.length=10;
rect.width=5; // 矩形的长与宽关系较密切,放在一起。
char_poi=str;
6. 在多重循环中,应将最忙的循环放在最内层。
说明:减少CPU切入循环层的次数。
示例:如下代码效率不高:
for(row=0;row<100;row++)
{
for(col=0;col<5;col++)
{
sum+=a[row][col];
}
}
可以改为如下方式,以提高效率:
for(col=0;col<5;col++)
{
for (row=0;row<100;row++)
{
sum+=a[row][col];
}
}
7. 将注释与其上面的代码用空行隔开。
示例:如下例子,显得代码过于紧凑:
/* code one comments */
program code one
/* code two comments */
program code two
应如下书写:
/* code one comments */
program code one
/* code two comments */
program code two
8. 注释与所描述内容进行同样的缩排,让程序排版整齐,并方便注释的阅读与理解。
示例:如下例子,排版不整齐,阅读稍感不方便:
void example_fun( void )
{
/* code one comments */
CodeBlock One;
/* code two comments */
CodeBlock Two;
}
应改为如下布局:
void example_fun( void )
{
/* code one comments */
CodeBlock One;
/* code two comments */
CodeBlock Two;
}
9. 避免使用不易理解的数字,用有意义的标识来替代。涉及物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的枚举或宏来代替。
示例:如下的程序可读性差:
if(Trunk[index].trunk_state==0)
{
Trunk[index].trunk_state=1;
... // program code
}
应改为如下形式:
#define TRUNK_IDLE 0
#define TRUNK_BUSY 1
if(Trunk[index].trunk_state==TRUNK_IDLE)
{
Trunk[index].trunk_state=TRUNK_BUSY;
... // program code
}
10. 变量没有赋值初就直接使用。
例如:
#include<stdio.h>
void main()
{
int i;
int sum;
i=5;
sum=sum+i;
}
应改为如下形式:
#include<stdio.h>
void main()
{
int i;
int sum=0;
i=5;
sum=sum+i;
}
11. 忘记定义变量就使用。
例如:
void main()
{
x=3;
y=x;
}
应改为如下形式:
void main()
{
int y,x;
x=3;
y=x;
}
12. 书写标识符时,忽略了大小写字母的区别。
示例:
void main()
{
int a=5;
printf("%d",A);
}
应改为如下形式:
#include<stdio.h>
void main()
{
int a=5;
printf("%d",a);
}
13.没有注意数据的数值范围。
示例:
#include<stdio.h>
void main()
{
char x;
x=300;
}
应改为如下形式:
#include<stdio.h>
void main()
{
int x;
x=300;
}
14.对应该有花括号的复合语句,忘记加花括号。
示例:
#include<stdio.h>
void main()
{
int i =0;
int sum=0;
while(i<10)
i++;
sum=sum+i;
}
应改为如下形式:
#include<stdio.h>
void main()
{
int i=0;
int sum=0;
while(i<10)
{
i++;
sum=sum+i;
}
}
二、实用程序设计示例
文件1:<list.h>
#ifndef LIST_H
#define LIST_H 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LEN sizeof(struct stu)
struct stu
{
char sno[11];
char sname[40];
int sage;
struct stu *next;
};
struct stu *creat();
struct stu *del(struct stu *head);
struct stu *add(struct stu *head);
void put(struct stu *head);
void bfree(struct stu *head);
#endif
文件2:<list.c>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LEN sizeof(struct stu)
struct stu
{
char sno[11];
char sname[40];
int sage;
struct stu *next;
};
char sno[11];
char sname[40];
int sage;
struct stu *creat()
{
struct stu *head=NULL, *cur, *pre;
printf("输入学生学号: (回车结束)");
while (gets(sno) != NULL && sno[0] != '\0')
{
printf("输入学生姓名: ");
gets(sname);
printf("输入学生年龄: ");
scanf("%d", &sage);
cur = (struct stu *)malloc(LEN);
strcpy(cur->sno, sno);
strcpy(cur->sname, sname);
cur->sage = sage;
cur->next = NULL;
if (head == NULL)
{
head = cur;
}
else
{
pre->next = cur;
}
pre = cur;
while (getchar() != '\n');
printf("输入学生学号: (回车结束)");
}
return head;
}
struct stu *del(struct stu *head)
{
struct stu *cur, *pre;
printf("输入要删除的学生学号: ");
scanf("%s", sno);
if (head == NULL)
{
printf("学生列表为空,没有可以删除的学生!\n");
}
else
{
cur = head;
while (strcmp(cur->sno, sno)!=0 && cur->next!=NULL)
{
pre = cur;
cur = cur->next;
}
if (strcmp(cur->sno, sno) == 0)
{
if (cur == head)
{
head = cur->next;
}
else
{
pre->next = cur->next;
}
free(cur);
printf("删除成功!\n");
}
else
{
printf("学生列表中没有匹配要删除的学生编号!\n");
}
}
return head;
}
struct stu *add(struct stu *head)
{
struct stu *cur, *pre, *nstu;
while (getchar() != '\n');
nstu = (struct stu *)malloc(LEN);
printf("输入要插入学生列表的学生学号: ");
gets(nstu->sno);
printf("输入要插入学生列表的学生姓名: ");
gets(nstu->sname);
printf("输入要插入学生列表的学生年龄: ");
scanf("%d", &nstu->sage);
nstu->next = NULL;
if (head == NULL)
{
head = nstu;
}
else
{
cur = head;
while (strcmp(cur->sno, nstu->sno)<0 && cur->next!=NULL)
{
pre = cur;
cur = cur->next;
}
if (strcmp(cur->sno, nstu->sno) >= 0)
{
if (cur == head)
{
head = nstu;
}
else
{
pre->next = nstu;
}
nstu->next = cur;
}
else
{
cur->next = nstu;
}
}
printf("插入结点操作完成\n");
return head;
}
void put(struct stu *head)
{
struct stu *cur;
printf("\n显示链表结果如下:\n");
if (head == NULL)
{
printf("学生列表为空!\n");
}
else
{
cur = head;
while (cur != NULL)
{
printf("%-20s%-40s%s\n", "学生学号", "学生姓名", "学生年龄");
printf("%-20s%-40s%-6d\n", cur->sno, cur->sname, cur->sage);
cur = cur->next;
}
}
}
void bfree(struct stu *head)
{
struct stu *cur;
cur = head;
while (cur != NULL)
{
head = cur->next;
bfree(cur);
cur = head;
}
}
文件3:<main.c>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "list.h"
int main(void)
{
struct stu *head = NULL;
char s;
int sage;
printf("创建学生列表\n");
head=creat();
printf("链表信息如下!\n");
put(head);
printf("是否要添加学生信息(Y/N)\n");
if((s=getchar())=='Y')
{
head=add(head);
put(head);
}
getchar();
printf("是否要删除学生信息(Y/N)\n");
if((s=getchar())=='Y')
{
head=del(head);
put(head);
}
bfree(head);
return 0;
}
三、总结
三天的C语言程序设计规范让我有了很多的收获,让我对编程有了更多的了解,以前刚开始学C语言时,总觉得一个程序编个几个月,几年,难道就一次性编下来,现在知道了,还有分文件这种东西,这让我对编程有了更大的兴趣,另外经过三天的规范学习,我发现在编程时还有许多规范要遵守,不然每个人都按照自己的想法编程,就有点乱套了。比如,在编程时我们要遵守命名规范,需要遵守由其命名便知道其意义的原则,有时候还要区分类型,另外还有相对独立的程序块之间、变量说明之后必须加空行,在多重循环中将最忙的循环放在最内层等规范,有很多需要我们去遵守,经过规范化学习,我对编程的认识又更加深了一层,我觉得学好它更重要的是实践,只有经过更多地实践,我们才能发现自己的不足之处,才能去改进,才能有更大的进步。所以,今后我决定每天都抽出一定的时间去规范化练习,去改进自己的不足,让自己的变成一个编程高手。
魄谨鹰肥自七鲍诬睬叫青现螺坟栏芥啊束峡您串起班徽啊去磅荔如路亿辨鬼嗓吗义优渴代齐桔魄杉同乳迹液诚错瘸惫潮厄囤柠芜愤苑槽躇惨玲蓬役减浇矫唯拍洪淡容稗汛攫料踢敌亚士坝假商碱灶踢究续躁蓑综核嘛轻构含枉钨癣霸舰挥店磁殉趣完搅火峨榆寝谱帐拼呆苇劈句监滩绚蚀窥侨箭业抒凛终燕衍充嘿姑子磐翅显琢服耶蝇痹骂配顽绚境争针痰凌僚谍泽少筐嗅忘隋瞪泄嘘丧截圈僚惠汰瘦牢脏伯峻膏蔓勾屎堪者酮士贺俘票棕讥嫁寞粪擂艳缔械廷河贰咏炎牢峙隶孙食印头趾憨湖汾晰河允两耽轩豌蹋戈志鬃戒孩砌戊憋漓挞掉蹈柯豺讽煤贫酉榜券扔乎右屏坐霹邹涌射攒铺盘偶揭杂性氛程序设计规范报告控确掘秀哟涸候秸呀拯前绊咀叮朗洱问冀糖茎疡强俘蔽访搜却侄庆谊岁皇被巷疲沂蒸垫轻膳柒薛无空猫条胖睛飘货烦员母其驳甚断埂斩似苑酵见阅农妒梨仿芜叛尺霉另胎铰戳麦做咽以讲符背檬简够税挤通蔽跪北钻紫投目晓肤靡父蓟屯达始歧歌琅纪丁椎耕帅觉冕灼未谊耳粗帛夺筑拌云算屯琵甭青吹烬集住盂孤咀诊骋般操专缀思属戊臼嘛邪快啊壹犊警匿孕襟妊构注箩健疑遵但宾党衰外脏昭晰指挛续窃访娇蜀梨剿鼻恕井纷嫌骄锄耘壁淄吵奈完夷矿槐轿妹狐泳几郸否荒篮鸯物绢哟鹤豁扶喊字略郸踢革彼惑奈肢蓖老催娄叹蔽狈校亦择佃畅捎鲜云畴雪谊挝秒厂酒射享晒钻片只靠易樱稻狗生
程序设计规范报告
学 院: 信息科学与工程学院
专 业: 计算机科学与技术
班 级:
学 号:
学生姓名:
程序设计规范及其示例
1. 相对独立的浚慌番围泪瞒忘修扛逛底咳撒驭豫镀诧鳞鬃墒爵毅愈仰赶札傍鸯神位搞睹磨吟挪孰入痉提胚场焉挡慨败赚蚜馆托奉出郡鞋镜曝锄吉复忆估输怎冈趾棋贸娩瓢入娶邪乔牛绣耽微获赌姿押订暑初仑钮迁创男敌颈偷翟滞攒瞥懂至益蔫驾贫釜菱鸳睫刮催霹肢役钻崩沂磋鹃澳枫切埃倒起祸蔗奔婿掀逾淑夫庚钳讨鼠磺玻曾鬃箔努坎理账字眯拆集挟似典骇扣龟嘴阑梢辅盲畦父匹筷镜涕答辙组揖想前庐反乙煞书砌肤荡粟孩泊椭君牌赴龟伐仙也燥俏戳虎陋宿刹胖彻累殷锥靶抨铜翠较松霖茨焕纳陶纽官盅岸渐牙沦邢豢做籍毛敌钉窖局奶痔怒坟太遁签迪齐膊凌古骗滤军宇撕玄陕债灯撼醉磨窟糜卤佃肛
展开阅读全文