c程序设计心得体会文档格式.docx
《c程序设计心得体会文档格式.docx》由会员分享,可在线阅读,更多相关《c程序设计心得体会文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
在这一
基本掌握c语言编程软件的使用方法
第二步、照葫芦画瓢
在第一步输入的c程序的基础上进行试验性的修改,运行一下程序看一看程序结果发了什么变化,分析结果变化的原因,加深所学知识点的理解。
事实上这和第一步是同步进行的,实现“输入”加深知识的记忆,“修改”加深对知识的理解。
记忆和理解是相辅相成的,相互促进。
还可以将教材中的正确的程序改成错误的程序,运行一下程序,看出现的错误信息提示,并记下错误信息,再将程序改成正确的,运行一下程序。
这样反复修改,就能够学习c语言程序发生错误的原因和修改错误的能力。
注意:
每次只改错一个地方,目的是显示发生该错误的真正原因,避免一次改动多个地方,弄清发生错误的真正原因。
其次,上机调试程序时可以带一个笔记本,记下英文错误提示信息和解决该错误问题的方法,积累程序调试经验,避免再编程时犯同样的错误。
第三步、自己试做类似问题
在这一步要求不看教材,即使程序不能运行,看自己能否将其改正过来,使其能正确运行。
目的是对前两步的记忆、理解进一步强化。
对比前两步,设计一些相同的问题,试着自己编程,然后调试,再逐渐扩大,增加程序行,添加一些辅助功能等等。
(3)综合能力
可以先做小程序,然后综合各个小程序,试着做一个稍大的程序,提高自己的综合运用能力。
比如进行课程设计实训就是一种不错的选择,会对实际运用能力有较大提高,并且还
会对所学知识进行加深、巩固理解。
在实践的同时多思考问题,多看别人优秀的解题思路与方法,多看别人优秀的代码,尝试自己去实现或者模仿着去实现,让别人对你的代码多提意见,探究别人的思维过程,增强自己的思维能力,拓展视野,经常看看自己以前写的东西,有空拿出来改良改良,我想每隔一段时间,都会有意想不到的收获。
四、课程的易错点及解决办法
c语言常见错误:
c语言的最大特点是:
功能强、使用方便灵活。
c编译的程序对语法检查并不象其它高级语言那么严格,这就给编程人员留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对初学c语言的人来说,经常会出一些连自己都不知道错在哪里的错误。
看着有错的程序,不知该如何改起,以下是一些c编程时常犯的错误。
1.书写标识符时,忽略了大小写字母的区别。
main(){inta=5;
printf(%d,a);
}编译程序把a和a认为是两个不同的变量名,而显示出错信息。
c认为大写字母和小写字母是两个不同的字符。
习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。
2.忽略了变量的类型,进行了不合法的运算。
main(){floata,b;
printf(%d,a%b);
}%是求余运算,得到a/b的整余数。
整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。
3.将字符常量与字符串常量混淆。
charc;
c=a;
在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。
c规定以“\0”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:
‘a’和‘\0’,而把它赋给一个字符变量是不行的。
4.忽略了“=”与“==”的区别。
在许多高级语言中,用“=”符号作为关系运算符“等于”。
如在basic程序中可以写if(a=3)then?
但c语言中,“=”是赋值运算符,“==”是关系运算符。
如:
if(a==3)a=b;
前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。
由于习惯问题,初学者往往会犯这样的错误。
5.忘记加分号。
分号是c语句中不可缺少的一部分,语句末尾必须有分号。
a=1b=2编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。
改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。
{z=x+y;
t=z/100;
printf(%f,t);
}对于复合语句来说,最后一个语句中最后的分号不能忽略不写(这是和pascal不同的)。
6.多加分号。
对于一个复合语句,如:
};
复合语句的花括号后不应再加分号,否则将会画蛇添足。
又如:
if(a%3==0);
i++;
本是如果3整除a,则i加1。
但由于if(a%3==0)后多加了分号,则if语句到此结束,程序将执行i++语句,不论3是否整除a,i都将自动加1。
再如:
for(i=0;
i5;
i++);
{scanf(%d,x);
printf(%d,x);
}本意是先后输入5个数,每输入一
个数后再将它输出。
由于for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它。
7.输入变量时忘记加地址运算符“”。
inta,b;
scanf(%d%d,a,b);
这是不合法的。
scanf函数的作用是:
按照a、b在内存的地址将a、b的值存进去。
“a”指a在内存中的地址。
8.输入数据的方式与要求不符。
①scanf(%d%d,a,b);
输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:
3,4?
输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab。
②scanf(%d,%d,a,b);
c规定:
如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。
下面输入是合法的:
此时不用逗号而用空格或其它字符是不对的。
34?
3:
4?
scanf(a=%d,b=%d,a,b);
输入应如以下形式:
a=3,b=4?
9.输入字符的格式与要求不一致。
在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。
scanf(%c%c%c,c1,c2,c3);
如输入abc?
字符“a”送给c1,字符“”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。
10.输入输出的数据类型与所用格式说明符不一致。
例如,a已定义为整型,b定义为实型a=3;
b=4.5;
printf(%f%d\n,a,b);
编译时不给出出错信息,但运行结果将与原意不符。
这种错误尤其需要注意。
11.输入数据时,企图规定精度。
scanf(%7.2f,a);
这样做是不合法的,输入数据时不能规定精度。
12.switch语句中漏写break语句。
例如:
根据考试成绩的等级打印出百分制数段。
switch(grade){case’a’:
printf(85~100\n);
case’b’:
printf(70~84\n);
case’c’:
printf(60~69\n);
case’d’:
printf(60\n);
default:
printf(error\n);
由于漏写了break语句,case只起标号的作用,而不起判断作用。
因此,当grade值为a时,printf函数在执行完第一个语句后接着执行第二、三、四、五个printf函数语句。
正确写法应在每个分支后再加上“break;
”。
例如case’a’:
break;
13.忽视了while和do-while语句在细节上的区别。
(1)main(){inta=0,i;
scanf(%d,i);
while(i=10){a=a+i;
}printf(%d,a);
}
(2)main(){inta=0,i;
do{a=a+i;
}while(i=10);
printf(%d,a);
}可以看到,当输入i的值小于或等于10时,二者得到的结果相同。
而当i10时,二者结果就不同了。
因为while循环是先判断后执行,而do-while循环是先执行后判断。
对于大于10的数while循环一次也不执行循环体,而do-while语句则要执行一次循环体。
14.定义数组时误用变量。
intn;
scanf(%d,n);
inta[n];
数组名后用方括号括起来的是常量表达式,可以包括常量和符号常量。
即c不允许对数组的大小作动态定义。
【篇三:
c语言编程课程设计心得】
河南城建学院
《c语言程序设计》课程设计报告
适用专业工程管理专业
课程名称
指导教师
设计人:
051409112王田
2010年6月
一、设计目的和要求
1.通过课程设计全面掌握《c语言程序设计》关键知识点,掌握c语言中数组、指针、结构体、文件等方面的基本知识。
2.通过课程设计了解并掌握c语言程序设计的方法,熟悉c程序设计的开发环境及c程序的调试过程。
3.培养查阅参考资料、手册的自学能力,通过独立思考深入钻研有关问题,学会自己分析、解决问题的方法。
二、内容与设计思想
1、系统功能描述
(1)编译时,主菜单为如下:
(2)各项功能:
0、输入记录:
将所要记录的人的信息输入。
1、显示记录:
将所输入的记录一一显示。
2、按姓名查找:
从所记录中输入姓名查找其信息。
3、按电话号码查找:
输入学生的号码查找其信息。
4、插入记录:
在所记录中插入需要记录的人的信息。
5、按姓名排序:
对已有的记录按姓名第一个字母的
ascii码大小排列,并一一显示。
6、删除记录:
从记录中删除某学生的信息。
7、记录保存文件:
对输入的学生的信息进行保存。
8、退出程序。
2、总体设计思想
运用所学知识编写一个简单的学生通讯录管理系统的程序,使它具有以下的功能:
输入学生的学号,姓名,班级,电话号码,地址,显示学生记录,增加学生记录,按照学生姓名进行排序,删除学生记录,查找学生记录,保存学生记录。
其主要结构用如下图示表示:
三、程序具体分析及操作时问题。
1、程序具体分析。
(1)文件名的使用:
include称为文件包含命令,被包含的文件通常是由系统提供的,其扩展名为.h.stdio为standardinputoutput
的缩写,意为“标准输入输出”.代码中只要有用到printfscanf等函数,头文件就要写#includestdio.h这个在代码中必不可少的,因为编写代码就是为了输出结果;
用到像getch()这种键盘输入函数的话,就需要用到#includeconio.h;
用到系统标准输出函数的话,就用到#includestdlib.h;
用到字符数组就要用#inciudestring.h。
(2)指针使用:
如file*fp、定义1个文件型指针变量,指针变量名字分别叫fp,定义后fp是指向file类型结构体的指针。
可以使他指向某个文件的结构体变量,从而通过该结构体变量中的文件信息能够访问该文件。
?
指针是地址变量:
它的值有两种:
其一是地址,其二是内容。
不同的表达方式可以取不同的值。
指针是可以运算的,它的运算法则与变量是一致的。
(3)结构体:
如structlinklist定义结构体为linklist。
当结构体成员为指针的时候,每当给这个成员赋值之前必须先为这个结构体成员分配一个内存空间。
(4)字符数组的比较:
如strcmp(student[i].name,name)==0,strcmp(student[i].phone,phone)==0,strcmp(student[i].phone,phone)==null都是用来比较输入的与原有的,当相等时即为0.
(5)实现文件的打开和输入:
除有scanf和printf以外还涉及到其他的,如fp=fopen(student.bin,wb))==null用fopen()函数来实
现打开文件;
fwrite(student[i],sizeof(structrecord),1,fp)!
=1fwrite用于二进制的文件输入输出也用于读写记录这里的记录是指一串固定长度的字节。
(6)c语言中的一些结构。
如for(j=i;
jnum-1;
j++)对for语句正确分析,实现自增自减,并执行下一语句,实现变量的循环;
switch(menu_select())
{
case0:
adduser();
case1:
list();
case2:
search();
case3:
display();
case4:
add();
case5:
listbyname();
case6:
dele();
case7:
save();
case8:
exit(0);
}用来实现多分支选择语句;
if语句的嵌套及与else连用;
do….while的使用如do{
printf(\nenteryouchoice(0~8):
);
scanf(%s,s);
a=atoi(s);
}