错误二:
error C2562: 'Delete' : 'void' function returning a value
see declaration of 'Delete'
warning C4390: ';' : empty controlled statement found; is this the intent? warning C4390: ';' : empty controlled statement found; is this the intent? warning C4390: ';' : empty controlled statement found; is this the intent? 删除函数定义错误,应该用“int”,而不是“void”
4.2 系统错误及其调试方法
每次选择子程序操作完毕后,想要返回主菜单,却总是直接退出程序。 后来在主函数里添加了一个无限循环“for(;;){ }”,这个问题就解决了。
五、心得体会
通过此次的C++编程实习课学到了很多,对C语言也有了更好的了解,同时对C程序的操作和调试也有了进一步的掌握。尽管程序中的一部分是从网上复制过来的,但其中都加入了自己手动修改的元素,并且把一些以前不懂的弄懂了。
编译过程中经常出现各种各样的错误,以上罗列的只是其中很小的一部分,有的小错误却导致
运行不出结果,使我纠结了半天,后来还是请教实验室的同学才解决的。我深切感受到调试程序的经验不足,在输入源代码时一定要仔细、认真。几天过后我对C语言渐渐的不再感到陌生,许多大一学的知识也都回忆起来了,后来调试中出现的错误基本都可以自己解决了。通讯录最基本的功能基本都实现了,但是还有很多需要完善的地方,比如说系统日志没有添加,只能说我能力不够,其他的功能也存在或多或少不尽如人意的地方。通过深切的感受到编程的辛苦,一个问题解决后又会冒出另一个问题,没有问题后又会去想给如何完善程序的各种功能,感觉永远都编不完似的。
一个星期很快就过去了,C++编程实习课也接近尾声了,我在发现问题然后解决问题的过程中体会到了不一样的快乐,特别是自己发现并解决的时候会有一种小小的成就感!虽然有时会为了一个小小的错误苦恼不已,但当解决后却是异常的兴奋!
现在回想来看这个通讯录程序并不是很复杂,但我却不能很顺利的完成,因此我还要好好的学习C语言,只有做了多了才会熟练。
11
六、源程序
#include
char name[10]; //姓名
char tel[15]; //电话 char age[8]; //年龄 char adds[20]; //地址 char qq[20]; //QQ号
};Data dat[200]; char c; char Key[20];
int n=0; /*n为联系人个数*/ FILE *fp; /*指向文件的指针*/ char menu_select(); /*主菜单函数*/ int Input(Data dat[],int n); /*添加新联系人*/ void Display(Data dat[],int n); /*显示联系人*/ int Delete(Data dat[],int n); /*删除联系人*/ int onedelete(Data dat[],int n); /*删除单个联系人*/ int alldelete(Data dat[],int n); /*删除全部联系人*/ void Find(Data dat[],int n); /*查询联系人*/ void Change(Data dat[],int n); /*修改联系人信息*/ void Readfile(); /*读取文件*/ void Save(int n); /*保存文件*/ void namefind(Data dat[],int n); /*姓名查询联系人*/ void telfina(Data dat[],int n); /*电话查询联系人*/ void addsfind(Data dat[],int n); /*地址查询联系人*/
12
void namechange(Data dat[],int n); /*按姓名查找后修改*/ void telchange(Data dat[],int n); /*按电话查找后修改*/ void addschange(Data dat[],int n); /*按地址查找后修改*/ /*************************主菜单*************************/ char menu_select() { }
/*************************添加新联系人函数*************************/ int Input(Data dat[],int n) {
do{
system(\
printf(\欢迎%s,您的通讯录中共有%d张名片\\n\printf(\通讯录******* \\n\printf(\┌────────┐\\n\printf(\│ 1.添加名片 │\\n\printf(\│ 2.显示名片 │\\n\printf(\│ 3.删除名片 │\\n\printf(\│ 4.查询名片 │\\n\printf(\│ 5.修改名片 │\\n\printf(\│ 6.保存名片 │\\n\printf(\│ 0.退出程序 │\\n\printf(\└────────┘\\n\printf(\printf(\请您选择(0-6):\c=getchar();
}while(c<'0'||c>'6'); return(c-'0');
int i=0,j=0; char s[10];
13
char ch,m;
while(ch!='n'&&ch!='N') {
printf(\添加新联系人**********************\\n\printf(\姓名:\scanf(\
while(strcmp(dat[j].name,s)!=0&&j strcpy(dat[n+i].name,s); printf(\电话:\ scanf(\printf(\年龄:\ 14 j++; if(strcmp(dat[j].name,s) == 0) { printf(\通讯录中已有此人!\\n\printf(\是否继续添加?(Y/N)\scanf(\ while(m!='n'&&m!='N'&&m!='y'&&m!='Y') { } if(m!='n'&&m!='N') { } return(n); Input(dat,n); printf(\输入错误!请重新输入:\scanf(\ } } } scanf(\printf(\地址:\ scanf(\printf(\号:\scanf(\i++; printf(\是否继续添加?(Y/N)\scanf(\ while(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y') { } printf(\输入错误!请重新输入:\scanf(\ printf(\添加成功!\\n\return(n+i); /*************************显示联系人函数*************************/ void Display(Data dat[],int n) { printf(\**************************\\n\ printf(\┌─────────────────────────────┐ 共 %d 条 记 录 int i; if(n!=0) { \\n\ printf(\│ 姓名 │ 电话 │ 年龄 │ 地址 │ QQ │ 15