‘壹’ c语言-函数在C语言中的运用的参考文献
http://www.4oa.com/Article/html/6/31/447/
‘贰’ 万分着急!!!求关于C语言的文献综述
参考文献
注:括号内的书名是英文原名。斜体字的 “ 中 ” 表示有中文版, “ 英 ” 表示有英文影印版, “E” 表示有英文电子版, “ 电 ” 表示有中文电子版(不包括超星格式),有删除线的表示该版本已绝版。请不要向我要索要电子版,并且大部分电子版属于盗版,慎重下载。同时因为世界总在变化,我不能保证你读到此文时这些信息依然有效。
[Deitel94] H. M. Deitel ,《 C 程序设计教程( C How to Program )》第二版,中。书中错误不少,不知道是原版的问题还是翻译的问题,但至少翻译版的排版一团糟,有点糟蹋好书了。
[Prata04] Stephen Prata ,《 C Primer Plus ( C Primer Plus )》第五版,中 E 。 “Primer” 的名头太大了,以至于中文版干脆不翻译书名了。
[Kelley97] Al Kelley 、 Ira Pohl ,《 C 语言教程( A Book on C: Programming in C )》,英。
[Roberts94] Eric S. Roberts ,《 C 语言的科学与艺术( The Art and Science of C: A Library Based Introction to Computer Science )》,中英。虽然另类,但有很多创新值得回味。我正在学习他把图形库引入 C 语言教学的方法。
[Harbison02] Harbison 、 Steele ,《 C 语言参考手册( C: A Reference Manual )》第五版,英。其实,这本书是有中文版的,但为了您的健康,还是忘掉他吧,阿门 ……
[Kernighan88] Kernighan 、 Ritchie ,《 C 程序设计语言( The C Programming Language )》第二版,中英 E 。这本书被简称为 “K&R2” ,并被尊称为 C 语言的 “ 圣经 ” 。 Ritchie 就是 C 语言的爸爸。
[C99] ISO/IEC 9899:1999 , C 标准 1999 年版, E 。被简称为 C99 。可以这样描述它: “1. C99 永远是对的; 2. 如果 C99 错了,请参看第一条。 ” 可笑的是,我们的国家计算机等级考试二级考试的很多题目都是违背 C99 的。相信 Ritchie 来考二级也会被郁闷住。
[Kernighan99] Kernighan 、 Pike ,《程序设计实践( The Practice of Programming )》,中英电。中英文对照阅读,又学知识又练英语。
[Linden94] Peter van der Linden ,《 C 专家编程( Expert C Programming )》,中 E 。这是一本行文非常幽默的书(可惜译文版把很多幽默都搞丢了,这也是没办法的事情),因为书面上印着一条腔棘鱼,所以它在业界被戏称为 “ 鱼书 ” 。
[Maguire93] Steve Maguire ,《编程精粹 — Microsoft 编写优质无错 C 程序秘诀( Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs )》, E 电。网上很多地方传播的电子版写的名字是《 Write Clean Code 》,这里替 Maguire 澄清一下。
[Bryant02] Bryant 、 O’Hallaron ,《深入理解计算机系统( Computer Systems: A Programmer’s Perspective )》,中英 E 。我一定要说,这本书的中译本是为数不多的翻译精品。
[Koenig89] Andrew Koenig ,《 C 陷阱与缺陷( C Traps and Pitfalls )》,中 E 电。因为年代久远,书中有些观点已经不合时宜,正好用来练习边读边批判。
[ 林锐 03] 林锐、韩永泉,《高质量程序设计指南 ——C++/C 语言》第二版,中电。我觉得这本书错误观点很多很多,正确的也很多很多,欢迎发表你的看法。
[Weiss96] Mark Allen Weiss ,《数据结构与算法分析 ——C 语言描述( Data Structures and Algorithm Analysis in C )》第二版,中。
[Cormen01] Cormen 、 Leiserson 、 Rivest 、 Stein ,《算法导论( Introction to Algorithms )》第二版,英 E 。
[Knuth98] Donald Knuth ,《计算机程序设计艺术( The Art of Computer Programming )》 I 、 II 、 III 卷,中英。凡发现书中错误的第一个读者都将得到作者亲笔签发的 2.56 美元的支票。 Knuth 退隐后闲赋在家,江湖风传第 IV 卷马上出版,他正在写第 V 卷(计划一共写 VII 卷)。但愿你不要让 Knuth 的写作速度大于你的阅读速度。
‘叁’ 编写C语言程序
2文档
设计报告格式
1)设计目的
2)总体设计(程序设计组成筐土、流程图)
3)详细设计(模块功能说明,如函数功能,入口及出口参数说明,函数调用关系描述等)
4)调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施
5)原程序清单和执行结果:清单中应有足够的注释
6)效果及存在问题:说明系统的运行效果(附上运行界面图片),存在哪些不足以及预防的解决办法
7)心得体会:谈谈自己在课程设计过程中的心得体会
8)参考文献:按参考文献规范列出各种参考文献,包括参考书目,论文和网址等
‘肆’ C语言程序设计报告的格式
设计报告格式要求课程设计封面使用最后的统一格式。各种图表必须严格符合规范。论文的图应有图名和图号,居中写在图的下方;表应有表名、表号,靠左写在表的上方。表题、图题用5号黑体,参考文献用5号楷体。课程设计报告分章节撰写,书写层次和章节序号作如下的约定:一、设计任务 (居中书写,3号黑体)1.1╳ ╳ ╳ ╳ (左起书写, 4号黑体)1.1.1 ╳ ╳ ╳ ╳ (左起书写,小4号黑体)1. ╳ ╳ ╳ ╳ (空两格书写,小4号黑体)╳ ╳ ╳ ╳ (正文,小4号宋体 首行缩进2个字符)二、功能模块结构.......三、主要模块的流程图及说明.......四、运行结果.......
‘伍’ C语言课程设计报告要求
一 、 设计题目
万年历的设计
二 、设计要求
1、能够显示星期;
2、能够显示年月日;
3、能够修改;
4、当系统时间变动时,能自动跳到相应的时间。
三 、 设计目的
1. 通过本项课程设计,可以培养独立思考、 综合运用所学有关相应知识的能力,能更好的巩固《C语言程序设计》课程学习的内容,掌握 工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了c语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性!
2. 通过C语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。
四 、设计思想及过程
【一】由于万年历具有以下特点:
1。平年365天(52周+1天),闰年366天(52周+2天)。平年2月28天,闰年2月29天。
由于公元1月1日设为星期六,故3月1日为星期三。 ——注意这个“三”
为使算法达到最简,故本算法以“星期”为计算单位。且选3月1日为基月。
2。每400年整一闰,或每4年且不为百年的一闰。(原因:地球绕太阳一周的时间是365天5小时46秒,为了使一年的天数为整数,将一年的天数定为365天,余下的时间积累起来,四年就是23小时15分4秒,将近一天,把这一天加在某年的二月而成29天,该年称为闰年,其它年称为平年。但四年加一天又多用了44分56秒,这个数积满400年为三天。因此400年中只能有97个闰年,所以凡能被400整除,或不能被100整除但能被4整除的年份为闰年。)
所以百年%4=0闰或(年%4=0并且年<>0)闰。
3。每 4年(3个平年+1个闰年)共208周+5天 ——注意这个“5天”
每百年共100*(208周+5天)-1天=5217周+5天 ——注意这个“5天”(整百年暂设为平年)
每400年共4*(5217周+5天)+1天(整400年闰)=20871周+0天——注意这个“0天”和
“1天”(4个整百年只有一个闰年)
即400年一轮回!(原来万年历400年前是一家)
【二】根据万年历以上特点进行编写:
首先对万年历年、月、日进行编写,编写程序先定义每月的天数为28天,如月份为1、3、5、7、8、10、12就定义天数为31天反之如果月份为4、6、9、11就输出天数为30天,由上可见2月份为28天但是如果为闰年就有29天就要定义另一个函数#define Year(x) (x%4==0&&x%100!=0||x%400==0) ? 1:0当为闰年时可得1加上该程序便可得到每月的天数。 具体程序见(五、万年历程序)
再对其中的星期进行编写:由于公元1月1日设为星期六,故3月1日为星期三,可以用万年3月1日星期算法(特别是那个三)
由于其公式为:
某年3月1日星期几=(3天+百年%4*5天+年/4*5天+年%4+月星期表+日-1天)%7
某年3月1日星期几=(百年%4*5天+年/4*5天+年%4+月星期表+日+2天)%7
或 某年3月1日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7
闰4百年3月1日星期算法(百年%4=0)
其公式为:
某年3月1日星期几=(年+年/4+月星期表+日+2天)%7
例:0000年3月1日星期几=(0+0/4+0+1+2)%7=3%7=星期三
1600年3月1日星期几=(0+0/4+0+1+2)%7=3%7=星期三
2000年3月1日星期几=(0+0/4+0+1+2)%7=3%7=星期三
2001年3月1日星期几=(1+1/4+0+1+2)%7=4%7=星期四
2004年3月1日星期几=(4+4/4+0+1+2)%7=8%7=星期一
2008年3月1日星期几=(8+8/4+0+1+2)%7=13%7=星期六
2042年3月1日星期几=(42+42/4+0+1+2)%7=55%7=星期六
平4百年3月1日星期算法(百年%4<>0)
其公式为:
某年3月1日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7
例:1700年3月1日星期几=(17%4*5+0+0/4+0+1+2)%7=8%7=星期一(注意:1700年是平年)
1800年3月1日星期几=(18%4*5+0+0/4+0+1+2)%7=13%7=星期六(注意:1800年是平年)
1900年3月1日星期几=(19%4*5+0+0/4+0+1+2)%7=18%7=星期四(注意:1900年是平年)
1901年3月1日星期几=(19%4*5+1+1/3+0+1+2)%7=19%7=星期五
1918年3月1日星期几=(19%4*5+18+18/4+0+1+2)%7=(15+22+3)%7=40%7=星期五
1958年3月1日星期几=(19%4*5+58/4*5+58%4+3)%7=(15+70+2+3)%7=90%7=星期六
1988年3月1日星期几=(19%4*5+88/4*5+88%4+3)%7=(15+110+0+3)%7=128%7=星期二
1999年3月1日星期几=(19%4*5+99/4*5+99%4+3)%7=(15+120+3+3)%7=141%7=星期一
2100年3月1日星期几=(21%4*5+0/4*5+0%4+3)%7=(5+0+0+3)%7=8%7=星期一(注意:2100年是平年)
2101年3月1日星期几=(21%4*5+1/4*5+1%4+3)%7=(5+0+1+3)%7=9%7=星期二
2102年3月1日星期几=(21%4*5+2/4*5+2%4+3)%7=(5+0+2+3)%7=10%7=星期三
2103年3月1日星期几=(21%4*5+3/4*5+3%4+3)%7=(5+0+3+3)%7=11%7=星期四
2104年3月1日星期几=(21%4*5+4/4*5+4%4+3)%7=(5+1+0+3)%7=9%7=星期二(注意:2104年是闰年)
9999年3月1日星期几=(99%4*5+99/4*5+99%4+3)%7=(120+15+3+3)%7=141%7=星期一
注:按400年一轮回!(400年前是一家)的说法
1600年,2000年是一样的;
1700年,2100年是一样的;
1800年,2200年是一样的;
1900年,2300年是一样的。
其中万年某日星期算法
其公式为:
某日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7
通同星期偏差表
闰年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
天数 31 29 31 30 31 30 31 31 30 31 30 31
星期 3 6 0 3 5 1 3 6 2 4 0 2
平年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
天数 31 28 31 30 31 30 31 31 30 31 30 31
星期 4 0 0 3 5 1 3 6 2 4 0 2
为对以上的万年历星期的算法是正确的对其进行了以下的计算:
⒈对于二十世纪任意日期可以用公式某日星期几=(百年%4*5天+年+年/4+平年月星期表+日+2天)%7=(19%4*5天+年+年/4+平年月星期表+日+2天)%7=(15天+年+年/4+平年月星期表+日+2天)%7以下就是根据上面对其进行的计算:
1900年元旦 1日=(0/4*5+0%4+1+3)%7=(0+0+4)%7=4
1月表=4(平年) 故 4+4=1 即1900年元旦是星期一
1949年国庆 1日=(49/4*5+49%4+1+3)%7=(60+1+4)%7=2
10月表=4(平年) 故 4+2=6 即1949年国庆是星期六
1999年12月31日 31日=(99/4*5+99%4+31+3)%7=(120+3+34)%7=3
12月表=2(平年) 故 2+3=5 即1999年12月31日是星期五
⒉对于二十一世纪新前年虫算法(20%4*5=0)可以用公式:某日星期几=(百年%4*5天+年+年/4+闰年月星期表+日+2天)%7 =(20%4*5天+年+年/4+闰年月星期表+日+2天)%7以下就是根据上面对其进行的计算:
2000年元旦 1日=(0+0/4+1+2)%7=(0+0+1+2)%7=3
1月表=3(闰年) 故 3+3->6 即2027年元旦是星期六
2018年春节 16日=(18+18/4+16+2)%7=(18+4+16+2)%7=5
2月表=0(平年) 故 0+5=5 即2018年春节是星期五
2099年12月31日 31日=(99/4*5+99%4+31+2)%7=(120+3+33)%7=2
12月表=2(平年) 故 2+2=4 即2099年12月31日是星期四
对于上面的分析以及公式的推论和计算证明可以对万年历中的星期进行了编写具体编写程序见(五 、万年历程序)中。
五 、万年历源程序
#include"stdio.h"
#include"dos.h"
#include"conio.h"
#include"stdlib.h"
#define Year(x) (x%4==0&&x%100!=0||x%400==0) ? 1:0 /*判断闰年*/
int numofMonth(int y,int m){
int day,t=28;
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
day=31; /*定义以上月份为31天*/
else if(m==4||m==6||m==9||m==11)
day=30; /*定义以上月份为30天*/
else{t+=Year(y);
day=t;} /*闰年二月29天,平年28天*/
return day;}
int numofYear(int y){
int t=365; /*平年365天*/
t+=Year(y);/*闰年366天*/
return t;}
int numofbeforeDays(int y,int m,int d){
int sum=d,i;
for(i=1;i<m;i++)
sum+=numofMonth(y,i);
return sum;}
int numofafterDays(int y,int m,int d){
int sum=0,i;
for(i=m;i<=12;i++)
sum+=numofMonth(y,i);
sum-=d;
return sum;}
int isDay(int y,int m,int d){
int year=1900,month=1,week=1,i; /*定义万年历是从1900年开始*/
long sum=0;
for(i=year;i<y;i++)
sum+=numofYear(i);
for(i=1;i<m;i++)
sum+=numofMonth(y,i);
/* ++sum;*/
i=sum%7;
week=(week+i)%7;
return week;}
void empty(int n){
int i;
for(i=0;i<n;i++)
printf("%*c",6,' ');}
void OutPutCalender(int y,int m,int d)/*计算x年x月x是星期几*/{
int week,i,num,t;
week=isDay(y,m,1);
printf("%6d/%02d/%02d\n",y,m,d);
printf("%6s%6s%6s%6s%6s%6s%6s\n","Sun","Mon","Tue","Wed","Thu","Fri","Sat");
empty(week);
num=numofMonth(y,m);
for(i=1;i<=num;i++){
printf("%6d",i);
t=(week+i)%7;
if(t==0)
printf("\n");} /*光标移到下一行*/
printf("\n");}
long numBTDays(int y1,int m1,int d1,int y2,int m2,int d2)/*定义两个不同日期*/{
int i;
long sum=0;
for(i=y1+1;i<y2;i++)
sum+=numofYear(i);
if(y1==y2){ sum-=d1;
for(i=m1;i<m2;i++)
sum+=numofMonth(y1,i);
sum+=d2;}
else{sum+=numofafterDays(y1,m1,d1);
sum+=numofbeforeDays(y2,m2,d2);}
return sum;}
int Select_mean(){
int sm;
printf("1. OutPut Calender\n"); /*输出当前月份的日历*/
printf("2. Help\n"); /*帮助*/
printf("0. Quit\n"); /*退出*/
printf("Please enter choose(0--2):"); /*从0-2中选择*/
do
scanf("%d",&sm); /*输入sm*/
while(sm<0||sm>3);
return sm;}
void Help()/*输出帮助栏的内容*/{
printf(" 1. OutPut Calender\n");
printf(" 2. System Help\n");
printf(" 0. Quit\n");
printf("Page Up: Up year\n"); /*上一年*/
printf("Page Down: next year\n"); /*下一年*/
printf(" --> : next month\n"); /*上一月*/
printf(" <-- : Up month\n");/*下一月*/}
main(){
int year=2006,year1=2006,month,day,y1,m1,d1,y2,m2,d2,c,t; /*定义运行后的日期是2006年*/
int inkeySCAN,inkey; /*输入键盘操作信息*/
union REGS inregs,outregs;
inregs.h.ah=0x2a;
intdos(&inregs,&outregs);
/* year=outregs.xcx; */
month=outregs.h.dh;
day=outregs.h.dl;
year1=year;
printf("%d/%02d/%02d\n",year,month,day);
while(1)/*当选择为1时,执行以下语句*/{
switch(Select_mean()){
case 1:
OutPutCalender(year,month,day);
while(1){
inkey=bioskey(0);
inkeySCAN=(inkey&0xFF00)>>8;
if(inkeySCAN==77){
if(month==12){month=1;year1++;
OutPutCalender(year1,month,day);/*输出日历*/}
else{month++;
OutPutCalender(year1,month,day);
}}
if(inkeySCAN==75){
if(month==1){month=12;year1--;
OutPutCalender(year1,month,day);}
else{month--;OutPutCalender(year1,month,day);}}
if(inkeySCAN==73){
if(year1==1900) year1=year;
else{year1--;OutPutCalender(year1,month,day);}}
if(inkeySCAN==81){
year1++;OutPutCalender(year1,month,day);}
if(inkeySCAN==28)break;}
break; /*终止循环*/
case 2:
Help();
break;
case 0:
exit(0);
default:
printf("Enter ERROR!\n");
break;} }
}
六 运行过程
1.双击TC
1. 当对上面的程序进行了调试后运行会出现下面所示:
第一行所显示的就是系统时间!满足了第一条要求“显示年、月、日”。
而当改变系统时间后!再运行该程序上面的日期也随系统时间改变,所以满足第四条“当系统时间变动时,能自动跳到相应的时间。”
2. 在光标处按下“1”后回车,将会显示:
以上的显示也证明了条件的第2条可以“显示星期!”
3. 在光标处按下“2”后回车,将会显示:
按着帮助所讲进行了运行可知:按“ Page Up ”键其下面接着会显示上一年该月的万年历,按“ Page Down ”键其下面会接着显示下一年该月的万年历;按“ ← ”键下面将会接着显示当年上一个月的万年历,按“ → ”键将会接着在下面显示去下一个月的万年历。
4.
由上所显示键入“0”后将会退去该程序。
由以上运行的结果可知该c语言所设计的万年历满足设计要求!
七、在C语言编程中常见错误
C语言的最大特点是:功能强、使用方便灵活。C编译的程序对语法检查并不象其它高级语言那么严格,这就给我们留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对我们这些初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。看着有错的程序,不知该如何改起,我通过这次编程,也积累了一些C编程时常犯的错误:
1. 书写标识符时,忽略了大小写字母的区别。
编译程序把a和A认为是两个不同的变量名,而显示出错信息。C语言认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。
2.忽略了变量的类型,进行了不合法的运算。
%是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。
3.将字符常量与字符串常量混淆。
混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以“\”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a'和‘\',而把它赋给一个字符变量是不行的。
4.忽略了“=”与“==”的区别。
在C语言中,“=”是赋值运算符,“==”是关系运算符。如:
if (a==3) a=b;
前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。
5.忘记加分号。
分号是C语句中不可缺少的一部分,语句末尾必须有分号。
a=1 b=2
编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。
{ z=x+y;
t=z/100;
printf("%f",t);
}
对于复合语句来说,最后一个语句中最后的分号不能忽略不写(这是和PASCAL不同的)。
6.多加分号。
对于一个复合语句,如:
{ z=x+y;
t=z/100;
printf("%f",t);
};
复合语句的花括号后不应再加分号,否则将会画蛇添足。
又如:
if (a%3==0);
I++;
本是如果3整除a,则I加1。但由于if (a%3==0)后多加了分号,则if语句到此结束,程序将执行I++语句,不论3是否整除a,I都将自动加1。
再如:
for (I=0;I<5;I++);
{scanf("%d",&x);
printf("%d",x);}
本意是先后输入5个数,每输入一个数后再将它输出。由于for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它。
7.输入变量时忘记加地址运算符“&”。
int a,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规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。下面输入是合法的:
3,4
此时不用逗号而用空格或其它字符是不对的。
3 4 3:4
又如:
scanf("a=%d,b=%d",&a,&b);
输入应如以下形式:
a=3,b=4
9.输入字符的格式与要求不一致。
在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。
scanf("%c%c%c",&c1,&c2,&c3);
如输入a b c
字符“a”送给c1,字符“ ”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。
10.输入输出的数据类型与所用格式说明符不一致。
例如,a已定义为整型,b定义为实型
a=3;b=4.5;
printf("%f%d\n",a,b);
语法错
逻辑错 运行错
0.忘记定义变量:
main()
{x=3;y=6;
printf(“%d\n”,x+y);
11.C语言的变量一定要先定义才能使用;
12.输入输出的数据的类型与所用格式说明符不一致
int a=3;float b=4.5;printf(“%f%d\n”,a,b);
它们并不是按照赋值的规则进行转换(如把4.5转换为4),而是将数据在存储单元中的形式按格式符的要求组织输出(如b占4个字节,只把最后两个字节的数据按%d,作为整数输出)
13.未注意int型数据的数值范围
int型数据的数值范围(-32768~32768)
int num=89101;
printf(“%d”,num);
会将超过低16位的数截去从而得到23563
注意:定义了long型,而在输出时仍用”%d”说明符,仍会出现以上错误
14.输入变量时忘记使用地址符
scanf(“%d%d”,a,b);
15.输入时数据的组织与要求不符
对scanf函数中格式字符串中除了格式说明符外,对其他字符必须按原样输入
16.误把”=“作为”等于”比较符
“=“为附值运算符
“==“为比较运算符
17.语句后面漏分号
{
t=a;
a=b;
b=t
}
它是pascal的语法
18.不该加分号的地方加了分号
if(a>b);
printf(“a is larger than b\n”);
for(i=0;i<10;i++);
{
scanf(“%d”,&x);
printf(“%d\n”,x*x);
}
19.对应该有花括号的复合语句,忘记加花括号
sum=0;
i=1;
while(i<=100)
sum=sum+1;
i++;
20.括号不配对
while((c=getchar()!=‘#’)
putchar(c);
11.在用标识时,忘记了大写字母和小写字母的区别
{
int a,b,c;
a=2;
b=3;
C=A+B;
printf(“%d+%d=%D”,A,B,C);
}
12.引用数组元素时误用发圆括号
{
int i,a(10);
for(i=0;i<10;i++)
scanf(“%d”,&a(i));
}
13.在定义数组时,将定义的”元素个数”误认为是”可使用的最大下标值
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int i;
for(i=1;i<=10;i++)
printf(“%d”,a[i]);
}
14.对二维或多维数组的定义和引用的方法不对
{
int a[5,4];
…
printf(“%d”,a[1+2,2+2]);
…
}
15.误以为数组名代表数组中全部元素
{int a[4]={1,2,3,4};
printf(“%d%d%d%d”,a);
}
16.混淆字符数组与字符指针的区别
main()
{
char str[40];
str=“Computer and c”;
printf(“%s\n”,str);
}
17.在引用指针变量之前没有对它赋予确定的值
{
char *p;
scanf(“%s”,p);
}
{
char *p,c[20];
p=c;
scanf(“%s”,p);
}
18.switch语句的各分支中漏写 break语句
混淆字符和字符串的表示形式
…
char sex;
sex=“M”;
…
19.使用自加(++)和自减(--)运算符时出的错误
{
int *p,a[5]={1,3,5,7,9};
p=a;
printf(“%d”,*p++);
}
注意于*(++p)的区别;
20.所调用的函数在调用语句之后才定义,而又在调用前未加说明
main()
{float x,y,z;
x=3.5;y=-7.6;
z=max(x,y);
printf(“%f”,z);
}
编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。
八、心得体会
1. 目前流行的计算机日历程序,比较典型的是Windows各版本中的日历程序以及基础于该程序所开发的各种应用程序中的日历程序。然而,这些程序都千篇一律的局限在一个很短的时间范围内。(Windows各个版本一般都局限在1980年至2099年这一范围内),但是,在很多情况下,特别是在众多的科学研究领域中,一个时间跨度较大的日历程序是很有参考价值的。C程序设计语言充分发挥了其自身无与伦比的优越性,用极短的程序文本填补了这一领域的空白,同时用铁的事实强有力的告诉世人:C程序设计语言作为计算机语言家族的新生事物,其发展前景是极为广阔的。
2. 经过上一个学期对《C程序设计》的学习,我们学习了理论知识,了解了C语言程序设计的思想,这些知识都为我们的下一步学习打下了坚实的基础。通过课程设计,一方面是为了检查我们一个学期来我们学习的成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。
3. 通过对c语言万年历的设计进一步的巩固了用c语言编写程序,并且有利于更好的掌握c语言!
4. 在万年历的编写过程中也体会到了做事情一顶要细心、认真。更加知道了要掌握好基础知识。还有体会到了成功的感觉!在万年历的设计过程中更加体会到了团队合作的重要性,“一个诸葛亮比不上三个臭皮匠。”知道了只有团队合作才会更好的完成设计!也体会到以后在工作中团队合作的必要性和重要性!
5. 通过本项课程设计也培养了我独立思考、 综合运用所学有关相应知识的能力,掌握 工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!
6. 由于C语言是近年在国内外得到迅速推广应用的一种语言。C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。通过这次的c语言程序设计更加了解了c语言的好处和其可用性!
7. 在这次课程设计中也知道了自己的动手能力不强有待进一部的提高!在设计过程中不能够把书本上的知识与实践相结合,这也就增加了设计不好该程序的想法!在设计过程中的一次次设计错误增加了我放弃的想法!不过经过大家的努力终于完成了课程设计!完成该程序后想起自己以前的每一次对自己失去信心,就觉得并不是在知识掌握上打败了,而是自己对自己缺乏信心!只要自己对自己不失去信心相信就可以完成那些以前认为完成不了的事情!也让我懂得了要想成功首先就必须有很强的自信心!懂得了自己以后要在做任何事情时都要自信!当自己都不相信自己能够成功时还可能会获得成功吗?
8. 在C语言程序设计的过程中也知道了自己在以前的学习中有很大的不足导致在设计过程中出现了很多的问题,有些地方看不懂也不知道怎么去设计,但是在设计过程中也学习了很多,掌握了自己以前没有学好的知识,虽然一时可以掌握完以前没有学好的知识,不过也给自己敲响了警钟,在学习中不可以伏于表面,要想学好每一门课程都要踏踏实实,做什么都不是给别人看的!都是要更好的掌握该门知识,提高自己的自身的修养,提高自己的能力!为以后的工作打下良好的知识基础和技能基础!
九、参考文献
⒈谭浩强编着.C程序设计第二版〔M〕.北京:清华大学出版社,1999
⒉陈朔鹰,陈英编着.C语言趣味程序百例精解〔M〕.北京:北京理工大学出版社,1994
⒊电脑知识与技术学术交流版〔J〕2005.2 (备注:来自网络资源)
⒋Herbert Schildit着. 戴健鹏译. C语言大全 (第二版)〔M〕.北京:电子工业出版社,1994
⒌谭浩强,张基温,唐永炎编着. C语言程序设计教程.〔M〕北京: 高等教育出版社,1992
⒍秦友淑,曹化工编着. C语言程序设计教程. 〔M〕武汉:华中理工大学出版社,1996
⒎曹衍龙,林瑞仲,徐慧 编着.C语言实例解析精粹 〔M〕北京:人民邮电出版社,2005.3
⒏黄明等编着.21世纪进阶辅导C语言程序设计. 〔M〕大连理工大学出版
‘陆’ C 程序设计课程需要的参考文献有哪些
c语言程序设计,c标准库函数,算法。。。。。其他的你自己看能用到的就用
‘柒’ c语言程序设计 参考文献
C语言程序设计实际上是一个非常艰难的事情,因为很多人在这方面做了许多的尝试,当然了,作为一种新的一种格式,请要学会这种技术也是一个非常困难的事情,当然在很多时候,我们都会在这个事情要做很多的努力,毕竟这种程序设计一旦做好的话,确实有很大的前途,但是想要整体的了解确实是非常困难的事情,所以说想要了解很多。c语言程序设计方面的知识,那么想要了解的文献就非常的多了,建议你还是从最基础的一些学科开始练习,因为这些基础的参考文献才是最有用的,比如说c语言入门。课程300级,这个就是非常有用的一个基础类书籍,这部书籍其实你自己好好的去看一下,基本上有一些关键的一些技术就能够掌握了,但是这种技术的掌握只是一个初步的阶段。当你把这个他会之后,再看一些更深层次的创设经验书籍,这些书籍就会给你说很多相关的专业的知识,当你看好上面的那个基础书籍之后,那么再看这些就非常的明显了,当然了,在这些研究的时候,你还是要有更多的毅力,暑假给自己设定好一个目标,当你看完一个基础书籍之后,再去寻找另一个。要知道这种语言程序设计是非常枯燥的,如果没有一个明确的目标,就会陷入一个非常尴尬的设计之中。所以说在这样的情况之下只要你自己考虑好才能够让自己的整个的事业和工作做得更好这种设立的时候,一定要让自己有更多的目标,从而才能过上自己,在目标的达成上做到一定的发展,从而就会让自己在整个的语言程序设计方面处取得更好的战绩,可多人在学习的时候,就是因为刚开始的基础打的不牢铐,所以说后来在关键的技术方面却反而是落下了很多,所以说上面给你推荐的两部书记一定要重点去参考,这样的情况下,你才会获得成功,假设如果自己不去好好的努力,反而是喜欢好高骛远的话,那么在语言程序设计方面就很难取得突破了,因为这方面的基础知识是非常必要的,也是非常重要的,如果你能坚持下来的话,就会获得成功,如果你自己坚持不下来,而且没有这样的耐心那么你最好提前放弃因为学习对于每一个人来说要根据自己的个性如果的个性不适合这种语言程序设计的话那么就要离开毕竟这是一个非常枯燥的这种设立的时候,一定要让自己有更多的目标,从而才能过上自己,在目标的达成上做到一定的发展,从而就会让自己在整个的语言程序设计方面处取得更好的战绩,可多人在学习的时候,就是因为刚开始的基础打的不牢铐,所以说后来在关键的技术方面却反而是落下了很多,所以说上面给你推荐的两部书记一定要重点去参考,这样的情况下,你才会获得成功,假设如果自己不去好好的努力,反而是喜欢好高骛远的话,那么在语言程序设计方面就很难取得突破了,因为这方面的基础知识是非常必要的,也是非常重要的,如果你能坚持下来的话,就会获得成功,如果你自己坚持不下来,而且没有这样的耐心,那么你最好提前放弃,因为学习对于每一个人来说,要根据自己的个性,如果的个性不适合这种语言程序设计的话,那么就要离开,毕竟这是一个非常枯燥的学问,想要在短期内获得成功是完全不可能的,而是需要长时间,而且还需要更多的精力才能够成功,所以说在这样的情况下,你必须要在长期打仗的基础上,还要不断地去努力提高自己其他方面的知识,所以说是一个艰难的过程,你想要完全实现的话,那么就需要自己做更多的努力了,所以在这方面自己一定要更加的去研究,从基础上去了解,这样才能够慢慢的让自己的这种语言是设计程序能力慢慢的吐钱出来,当然这需要一个很漫长的过程,需要你的坚持。
‘捌’ c语言程序设计的张磊编着
书名:C语言程序设计(第3版)
作者:张磊编着
ISBN:978-7-302-273233
出版社:清华大学出版社
出版日期:2012-9
平装:317页
定价:34.5元 本书面向程序设计初学者编写,以“注重基础、注重方法、注重编程、注重应用”为指导思想,突出C语言课程的应用性、实践性特点,灵活运用案例教学、任务驱动、启发式教学等多种教学方法,对C语言程序设计的语言知识和程序设计的方法过程进行了系统介绍,特别适合将C语言程序设计作为第一门程序设计课程的高校学生。
全书共有九章,分别为程序设计概述、简单程序设计、分支结构程序设计、循环结构程序设计、数组程序设计、函数程序设计、指针程序设计、结构体程序设计和文件程序设计。
本书主教材和实验教材合二为一,在每章之后均设有实验指导,实验指导内容与教学内容密切衔接,相辅相成。实验指导分为基础实验和综合实验两部分。基础实验紧密结合教材中的例题程序设置,以“理解—验证—完善—扩充—提高”为实验教学线索,重在巩固课堂教学知识,提高调试程序及完善程序的能力;综合实验以算法设计和程序实现为重点,训练运用所学知识解决实际问题的能力。
本书有配套的教学课件、程序资源和试题库。 第1章 程序设计概述
1.1 程序设计语言
1.2 算法
1.2.1 算法概念与算法描述
1.2.2 算法的逻辑结构
1.2.4 算法的特性
1.2.4 算法评价
1.3 程序设计与实现
1.3.1 程序设计的基本过程
1.3.2 使用VisualC++ 6.0实现C语言程序
1.3.3 程序设计示例
1.4 C语言程序的基本结构
1.4.1 程序的函数化结构
1.4.2 程序中的常量和变量
1.4.3 程序中的基本语句
1.4.5 标识符与保留字
1.4.6 程序风格
小结
习题一
实验一 编辑运行C语言程序
第2章 简单程序设计
2.1 用printf()函数输出数据
2.1.1 固定数值的加法程序
2.1.2 printf()函数
2.2 用scanf()函数输入数据
2.2.1 任意数值的加法程序
2.2.2 scanf()函数
2.3 输入输出字符数据
2.4 语言知识补遗
2.4.1 数据类型
2.4.2 常量详解
2.4.3 简单变量详解
2.4.4 算术运算
2.4.5 赋值运算
2.4.6 宏命令
2.5 程序设计举例
2.5.1 计算三角形面积
2.5.2 字母转换
2.5.3 鸡兔同笼问题
*2.6 表达式中数据类型的自动转换
*2.7 用typedef命名数据类型
*2.8使用C++命令输入输出数据
2.8.1 简单的C++程序
2.8.2 C++的输入和输出
小结
习题二
实验二 简单程序设计
第3章 分支结构程序设计
3.1简单条件的分支程序
3.1.1判断优等生程序
3.1.2关系表达式
3.1.3 if语句
3.2 复合条件的分支程序
3.2.1 使用新标准的优等生程序
3.2.2 逻辑表达式
3.3 用switch语句实现分支控制
3.4 goto语句
3.5 条件运算
3.6 分支结构应用举例
3.6.1 闰年问题
3.6.2 判断等边三角形
3.6.3 求解一元二次方程
3.6.4 学生成绩分等显示
小结
习题三
实验三 分支结构程序设计
第4章 循环结构程序设计
4.1 while循环结构程序
4.1.1 while循环程序示例
4.1.2 while语句
4.1.3 自增、自减运算
4.2 do-while循环结构程序
4.2.1 do-while循环程序示例
4.2.2 do-while语句
4.3 for循环结构程序
4.3.1 for循环程序示例
4.3.2 for语句
4.3.3 逗号表达式
4.4 循环体中的控制命令
4.4.1 break命令
4.4.2 continue命令
4.5 多重循环程序
4.5.1多重循环程序示例
4.5.2多重循环的一般结构
4.6 循环结构程序设计举例
4.6.1 字符统计
4.6.2 比赛评分
4.6.3 学生成绩分等统计
4.6.4 最大公约数
4.6.5 Fibonacci数列
4.6.6 乘法表
4.6.7 搬砖问题
4.6.8 找素数
4.6.9 哥德巴赫猜想
小结
习题四
实验四 循环结构程序设计
第5章 数组程序设计
5.1 一维数组程序设计
5.1.1 逆序输出数据程序
5.1.2 一维数组的定义
5.1.3 数值型一维数组的输入和输出
5.1.4 数值型一维数组的初始化
5.1.5 字符型一维数组的初始化
5.1.6 一维数组的存储
5.2字符串操作
5.2.1 字符串的输入输出
5.2.2 多字符串操作函数
5.2.3 其他字符串操作函数
5.3二维数组程序设计
5.3.1 矩阵求和程序
5.3.2 二维数组的定义
5.3.3 二维数组的输入和输出
5.3.4 二维数组的初始化
5.3.5 二维数组的存储
5.4 数组应用
5.4.1 排序
5.4.2 查找
5.4.3 单词统计
5.4.4 矩阵运算
5.4.5 成绩处理
5.4.6 杨辉三角形
小结
习题五
实验五 数组程序设计
第6章 函数程序设计
6.1函数概述
6.2自定义函数示例
6.3函数定义及调用
6.3.1函数定义
6.3.2函数值和return命令
6.3.3 函数调用
6.4函数嵌套和递归函数
6.4.1函数嵌套
6.4.2递归函数
6.5 数组作为函数的参数
6.5.1数组元素作为函数参数
6.5.2一维数组名作为函数参数
6.5.3用一维数组求解二维数组问题
6.6 函数应用举例
6.6.1计算长方体的面积
6.6.2利用递归函数计算Fibonacci数列
6.6.3排序函数的设计与应用
6.7 变量的作用域和存储类型
6.7.1变量的作用域
6.7.2变量的存储类型
小结
习题六
实验六 使用自定义函数的程序设计
第7章 指针程序设计
7.1 指针概述
7.2指针变量的定义和使用
7.2.1指针变量程序示例
7.2.2定义指针变量
7.2.3使用指针变量
7.3指针与数组
7.3.1指针与一维数组
7.3.2 指针与二维数组
7.3.3 指针与字符串
7.3.4 指针数组
7.4指针作为函数的参数
7.4.1简单指针变量作函数参数
7.4.2指向数组的指针作函数的参数
7.4.3字符串指针作函数的参数
7.4.4 指针数组作函数的参数
*7.4.5 使用带参数的main()函数
7.5指针函数和指向函数的指针变量
7.5.1指针函数
*7.5.2指向函数的指针变量
7.6指针应用举例
小结
习题七
实验七 指针程序设计
第8章 结构体程序设计
8.1结构体数据概述
8. 2结构体类型和结构体变量
8.2.1使用结构体变量存储学生信息
8.2.2定义结构体数据类型
8.2.3结构体变量的定义及使用
8.3结构体数组
8.3.1结构体数组概述
8.3.2结构体数组的初始化
8.3.3利用结构体数组管理学生信息
8.4结构体指针变量
8.4.1结构体指针变量的定义及使用
8.4.2结构体指针作函数的参数
8.5使用链表动态存储数据
8.5.1使用链表存储学生信息
8.5.2链表的特点
8.5.3动态内存管理函数
8.5.4定义链表结构
8.6链表的基本操作
8.6.1链表结点的插入
8.6.2链表结点的删除
8.6.3链表结点的查找
8.7 结构体应用举例
8.7.1 字符串加密
8.7.2 学生成绩排序
8.7.3 Josephus问题
小结
习题八
实验八 结构体程序设计
第9章 文件程序设计
9.1 文件概述
9.1.1 文件的概念
9.1.2 文件的分类
9.1.3 文件的一般操作过程
9.1.4 文件的指针
9.2文件的基本操作
9.2.1打开和关闭文件
9.2.2最基本的文件读写函数
9.3文件的数据块读写操作
9.3.1 fwrite()函数
9.3.1 fread()函数
9.4文件的其他操作
9.4.1文件的格式化读写
9.4.2文件的随机读写操作
9.4.3 ftell()函数
9.4.4文件的字符串操作
9.5文件应用举例
9.5.1文件复制
9.5.2 存储在文件中的学生成绩排序
小结
习题九
实验九 文件程序设计
附录一C语言的运算符
附录二C语言的保留关键字
附录三 常用ASCII码字符对照表
参考文献
‘玖’ C语言普通论文
1、论文题目:要求准确、简练、醒目、新颖。
2、目录:目录是论文中主要段落的简表。(短篇论文不必列目录)
3、提要:是文章主要内容的摘录,要求短、精、完整。字数少可几十字,多不超过三百字为宜。
4、关键词或主题词:关键词是从论文的题名、提要和正文中选取出来的,是对表述论文的中心内容有实质意义的词汇。关键词是用作机系统标引论文内容特征的词语,便于信息系统汇集,以供读者检索。 每篇论文一般选取3-8个词汇作为关键词,另起一行,排在“提要”的左下方。
主题词是经过规范化的词,在确定主题词时,要对论文进行主题,依照标引和组配规则转换成主题词表中的规范词语。
5、论文正文:
(1)引言:引言又称前言、序言和导言,用在论文的开头。 引言一般要概括地写出作者意图,说明选题的目的和意义, 并指出论文写作的范围。引言要短小精悍、紧扣主题。
〈2)论文正文:正文是论文的主体,正文应包括论点、论据、 论证过程和结论。主体部分包括以下内容:
a.提出-论点;
b.分析问题-论据和论证;
c.解决问题-论证与步骤;
d.结论。
6、一篇论文的参考文献是将论文在和写作中可参考或引证的主要文献资料,列于论文的末尾。参考文献应另起一页,标注方式按《GB7714-87文后参考文献着录规则》进行。
中文:标题--作者--出版物信息(版地、版者、版期):作者--标题--出版物信息
所列参考文献的要求是:
(1)所列参考文献应是正式出版物,以便读者考证。
(2)所列举的参考文献要标明序号、着作或文章的标题、作者、出版物信息。
‘拾’ c语言程序设计参考文献
《c primer plus》 《c 算法》 《高质量c编程指南》 《c语言核心技术》 《C语言深度剖析》 《彻底搞定c指针》