c语言课程设计引言
① c语言课程设计论文
谈及C语言,我想凡是学过它的朋友都有这样一种感觉,那就是“让我欢喜让我忧。”欢喜的是,C语言功能非常强大、应用广泛,一旦掌握了后,你就可以理直气壮地对他人说“我是电脑高手!”,而且以后若是再自学其他语言就显得轻而易举了。忧虑的是,C语言犹如“少林武功”一般博大精深,太难学了。其实就笔者认为C语言并非是“difficult(困难)”的,只要你能理清思路,掌握它的精髓,那么自学C语言是一件非常容易且又其乐无穷的事。今天本人就与大家一起谈谈如何学习C语言或者说学习C语言应从哪几方面着手。
了解一些基本知识
一.C语言的背景
就个人感触,无论学习哪门语言首先应该了解一下自己所学语言的背景,也可以说它的发展史。
C语言属于高级程序语言的一种,它的前身是“ALGOL”。其创始人是布朗·W·卡尼汉和丹尼斯·M·利奇。C语言问世时是带有很大的局限性,因为它只能用于UNIX系统上。然而随着科学技术的进步,计算机工业的发展,C语言逐渐脱离UNIX。1987年美国标准化协会制定了C语言的国际标准,简称“ANSI C”,从此以后它便成为一种广泛使用的程序语言。C语言的优点很多,主要的有如下四点:
1.兼备高级语言与低级语言的优点,属于一种中间语言。
2.它是一种结构化程序设计语言,非常适合结构化程序设计。
3.有较丰富的数据类型、运算符以及函数供以选用。
4.直接与内存打交道,使修改、编辑其他程序与文档变得轻松,简单。
二.二大语系二种不同的学习方法
其实高级程序语言分为两大语系。例如:C,C++(C语言的扩展),QBASIC,VB(BASIC的可视化),JAVAs cript,Js cript ,VBs cript,JAVA,ASP,FOXPRO,PERL等等。一路是以C为主的程序语言,例如:JAVAs cript,JAVA等,这类语言在函数的调用,程序语句的书写,循环的控制都极为相似。另一路是以BASIC为首的程序语言,例如:FOXPRO,VBs cript等,此类语言同样具有相似的函数调用,程序语句书写以及循环控制,但与C语系是不同的。因此若是您以前是从QBASIC起家的,那么在学习C语言前最好是先洗洗脑,千万不要把学习BASIC的方法以及思路用在C身上。
讲到这里,我想大家对C语言一定有了感性认识吧!下面让我们再升华一下,全方位亲密接触它。学习C语言必须从以下四点入手,也就是说,只要你能掌握这四点的内容,那么基本上就大功告成了。
亲密接触C语言
一.输入输出
C语言的输入输出是非常严格的,或许在其他程序语言中我们可以不关心这个问题,但在C语言中,我们必须要彻底了解它。由于篇幅有限,因此笔者不能详谈,有兴趣的朋友可以参考由著名程序语言教授谭浩强先生主编,由清华大学出版社出版的《C程序设计第二版》。不过这里笔者还是有几点要简单的谈一下。
1.二维浮点数数组的输入
二维浮点数数组的输入(即:通过键盘给二维浮点数数组赋值)在很多专业书中都没有详细讲过这个问题。在给二维浮点数数组赋值时一定要先声明一个变量,接着把数值赋予这个变量,最后把变量数值赋予二维浮点数数组赋值。
2.注意输出格式中“%”后的字符
C语言的输出说复杂不复杂,因为常用的都很简单。可说不复杂也未必,记得曾在一次等级考前辅导我们C语言的教授讲道:“如果C语言要考得很难的话,根本不用考什么指针,只要专考输出格式,我想百分之九十九的学生都不及格。”当时我们无不认同。从这则事例中可以看出C语言的输出格式之复杂程度。因此大家在学习它时千万要学会辨别输出格式中“%”后的字符,每个字符都有其意义,也都有其作用。
二.优先级
说道优先级,有很多朋友都不是很了解或说很模糊。为此笔者想先通过一个例子让各位有个概念。什么叫优先级?比方说,我们在公交车终点站排座队时总会遇到70岁以上的老人不需要排队就能上车的情景,这就是优先级的涵义。C程序在运行时也象排队坐车一样,首先照顾那些优先级高的运算符,若是优先级相同,那么就象遇到两位(或两位以上)70岁以上的老人那样,让他们依次上车。但是C语言中的优先级的运算并不是千篇一律的,只能说是在大多数情况下,有些运算符的优先级有其自己的特点,因此这点大家要注意。例如条件表达式:条件?结果1:结果2,这种表达式很多朋友都知道,它的作用与IF…ELSE…条件判断语句很雷同,它运算时的优先级就不是按照C语言的规则来完成的。所以说对于优先级各位编程爱好者一定灵活掌握,不要死记硬背。
三.指针
就个人认为,C语言中的指针是最有特色的,当然也是最难学的。指针说穿了,其实是变量的一种表现形式,只不过这种变量记载的不是数值而是地址。就象一个人可以用姓名来表示自己,也可以用身份证号码来表示自己一样。笔者涉足编程已经有三年多了,在这期间曾经收到过很多网友的电子邮件询问学习指针的方法。就本人感触,学习指针最好是先学些计算机硬件工作的原理,例如:直接寻址,间接寻址等,只有了解了这些内容以后,你再学指针就比较容易理会,毕竟C语言是一门介于机器语言与高级语言中间的语言,没有一些硬件工作知识是很难领悟它的真谛的。然而事事并非绝对,如果你没有这些知识也不要紧,只要清楚知道以下笔者总结的二点再加上多练习便可:
1.指针是地址变量:它的值有两种:其一是地址,其二是内容。不同的表达方式可以取不同的值,这有点象一个家庭地址在不同的场合标识的人物也不同。例如:父母亲在他们的单位所登记的家庭地址就代表他们自己,而你在学校中登记的同样的家庭地址就代表你自己。
2.指针是可以运算的,它的运算法则与变量是一致的。
另外,在编写一个程序时,除非万不得已,一般不要使用指针变量。因为指针是比较复杂的,用不好就“当机”。所以笔者建议各位对于指针只要能看懂就行,当然如果你是准备参加考试的就另当别论了。
四.函数
虽说很多程序语言都有函数这一内容,但笔者觉得C语言的函数是最有魅力的。如果你能完全掌握C语言的函数,那么学习C++就不成问题了(C++是一门建立在C语言上,但又不同于C语言的高级程序语言,它增添了很多函数。)。学习函数的方法是比较简单的,只有两个字“牢记”,即:牢记函数的功能,牢记函数的用途以及如何输入输出。有些朋友认为,程序语言中的函数没有多大用处,其实这并不正确,函数从本质上讲是一段通用程序,用它可以帮助我们节约很多编程的时间,一个聪明的编程者在编写程序前往往总是先找自己所编写的程序中有多少是可以用函数来代替的。笔者曾经作过一个比较字符串的实验,用C语言中的strcmp()函数只要一句话,而自己编写的话30句话都摆不平,可想而知函数是多么实用呀!
② c语言课程设计报告
作业的话自己做最有帮助了、
我们老师也布置过,做好了,不过没有流程图
③ c语言课程设计怎么写
1 软件开发平台
2 软件功能说明
2.1 功能分析说明图.
2.2 各项功能说明
3。软件设计详细内容
3.1 采用的主要数据结构类型
3.2 流程图
4 软件测试
4.1 软件测试用例
4.2 软件测试报告
5 总结和致谢
6 附录
6.1 软件使用说明
6.2 源码
6.3 参考文献
④ C语言课程设计前言
C语言作为一门最通用的语言,在过去很流行,将来依然会如此。几乎每一个理工科或者其他专业的学生毫不例外地要学习它。记得大学里,很多学校都把谭浩强教授的《C程序设计》作为入门教材,这是绝佳的选择。然而,要更进一步,更全面而深入地学习呢?显然有点力不从心。本书正是为了弥补这个缺憾而写的,希望能对想比较全面而深入学习C语言程序设计的人有所帮助。
从C语言产生到现在,它已经成为最重要和最流行的编程语言之一。在各种流行编程语言中,都能看到C语言的影子,如Java的语法与C语言基本相同。学习、掌握C语言是每一个计算机技术人员的基本功之一。
C语言具有高级语言的强大功能,却又有很多直接操作计算机硬件的功能(这些都是汇编语言的功能),因此,C语言通常又被称为中级语言。学习和掌握C语言,既可以增进对于计算机底层工作机制的了解,又为进一步学习其他高级语言打下了坚实的基础
从入门到精通:本书分上下两篇,上篇针对初学者,从C语言的基础开始,使略有计算机基础的人都能容易地学会C语言编程。下篇则介绍了C语言的高级程序设计技巧,包括常用算法、底层控制鼠标、绘图、加密、压缩等应用。
适用多种操作系统:本书实例都通过GCC编译器调试,读者不仅可在Windows环境下使用本书学习C语言,也可在Linux环境下使用本书学习C语言。循序渐进:本书编写顺序按C语言的知识点循序渐进地介绍。例如,先介绍数据的存储,再介绍数据的输入/输出;先介绍简单的程序设计概念,再介绍指针等C语言的难点。重点突出:指针是C语言的重点和难点,本书用了大量的篇幅,从不同方面对其进行讲解,并列举了大量的实例,帮助读者理解并掌握指针。
然后在加点这本书分几章,各是什么内容,主要针对的是C语言什么功能,最后写些祝福大家学习进步之类的话就可以了
⑤ C语言程序课程设计前言怎么写啊
诶
你想问什么
⑥ C语言课程设计 引言模板 求助!
是的,可以建立一个模板,以后就不用那么辛苦了
⑦ C语言课程设计怎么写啊
写引言,你的程序流程图,你的每个函数的作用,你程序的测试,你遇到了什么问题,你是怎么解决的,你的函数中运用到了写什么算法,等等
⑧ c语言课程设计
刚为别人做了一个,和你这个很像,不过用的是单项链表方式而不是array.
自己修改下满足你的要求吧
#include <stdio.h>
#include <string.h>
#include <stddef.h>
struct StudentCard {
int index; //学生号
char name[80]; //姓名
int age; //年龄
char sex[80]; //性别
int classroom; //班级
char school[80]; //学校
char birthday[80]; //出生年月
struct StudentCard *next; //到下一个学生卡,链表
};
typedef struct StudentCard ELEMENT; //自定义符号
typedef ELEMENT *LINK;
LINK add(LINK head){ //加入一个新的学生信息,该函数将返回一个struct的指针
int index,age,classroom;
char name[80],sex[80],school[80],birthday[80];
printf("Please input index number: ");
scanf("%d",&index);
printf("Please input name: ");
scanf("%s",name);
printf("Please input age: ");
scanf("%d",&age);
printf("Please input sex(nan or nv): ");
scanf("%s",sex);
printf("Please input classroom: ");
scanf("%d",&classroom);
printf("Please input school: ");
scanf("%s",school);
printf("Please input birthday :");
scanf("%s",birthday);
if (!head){ //如果是头链表为空的情况,也就是输入第一个学生卡
head=malloc(sizeof(ELEMENT));
head->index=index;
head->age=age;
head->classroom=classroom;
strcpy(head->name,name);
strcpy(head->sex,sex);
strcpy(head->school,school);
strcpy(head->birthday,birthday);
head->next=NULL; //下一个元素为NULL,空
printf("Successful!\n");
return head; //返回头链
}
else{
LINK tail=head;//用一个哨兵指针指向头元素
while ((tail)&&(tail->index!=index))
//在tail为NULL并且tail的index不与用户输入的index相等之前,tail一直跳到下一个元素
tail=tail->next;
if (tail) //如果存在这个tail
printf("index has already existed! Failed!\n");
else{
tail=head;//再次初始化
while (tail->next) //当哨兵的下一个元素存在时,哨兵跳到哨兵下一个元素
tail=tail->next;
//当上面这个循环结束后,此时tail的下一个元素必定为NULL
tail->next=malloc(sizeof(ELEMENT));//创建新的元素
tail=tail->next; //跳转到下一个新创建的元素
tail->index=index;
tail->age=age;
tail->classroom=classroom;
strcpy(tail->name,name);
strcpy(tail->sex,sex);
strcpy(tail->school,school);
strcpy(tail->birthday,birthday);
tail->next=NULL;
printf("Successful!\n");
return head;
}
}
}
void Print_ALL(LINK head){//该函数输出所有学生信息
LINK tail=head;
if (!head) //如果头元素为NULL,就是链表无一个元素
printf("Empty List!\n");
else{
printf("Indx\tName\tAge\tSex\tClass\tSchool\tBirth\n");
while (tail){//知道哨兵为NULL之前,一直输出哨兵的内容
printf("%d\t%s\t",tail->index,tail->name);
printf("%d\t%s\t%d\t",tail->age,tail->sex,tail->classroom);
printf("%s\t%s\n",tail->school,tail->birthday);
tail=tail->next;
}
}
};
void Print_DEPEND_INDEX(LINK head){ //该函数输出指定的学生号的学生信息
int tem;
LINK tail=head;
printf("Please input the index number of student: ");
scanf("%d",&tem);
if (!head)
printf("Empty List!\n");
else{
while ((tail)&&(tail->index!=tem))
tail=tail->next;
if (!tail)
printf("student not existed!\n");
else{
printf("Indx\tName\tAge\tSex\tClass\tSchool\tBirth\n");
printf("%d\t%s\t",tail->index,tail->name);
printf("%d\t%s\t%d\t",tail->age,tail->sex,tail->classroom);
printf("%s\t%s\n",tail->school,tail->birthday);
}
}
}
void Print_DEPEND_CLASS(LINK head){ //该函数输出指定的班级的学生信息
int tem;
LINK tail=head;
printf("Please input classroom: ");
scanf("%d",&tem);
if (!head)
printf("Empty List!\n");
else{
while ((tail)&&(tail->classroom!=tem))
tail=tail->next;
if (!tail)
printf("No such classroom!\n");
else{
printf("Indx\tName\tAge\tSex\tClass\tSchool\tBirth\n");
while (tail){
if (tail->classroom==tem){
printf("%d\t%s\t",tail->index,tail->name);
printf("%d\t%s\t%d\t",tail->age,tail->sex,tail->classroom);
printf("%s\t%s\n",tail->school,tail->birthday);
}
tail=tail->next;
}
}
}
}
void Print_DEPEND_SEX(LINK head){ //该函数输出男或女同学信息
char tem[80];
printf("please input sex(nan or nv): ");
scanf("%s",tem);
if (!head)
printf("Empty List!\n");
else{
LINK tail=head;
while ((tail)&&(strcmp(tem,tail->sex)!=0))
//当不相等或者tail有效时,tail跳到下一个元素
tail=tail->next;
if (!tail)
printf("No %s student!\n",tem);
else{
tail=head;
printf("Indx\tName\tAge\tSex\tClass\tSchool\tBirth\n");
while (tail){
if (strcmp(tem,tail->sex)==0){
printf("%d\t%s\t",tail->index,tail->name);
printf("%d\t%s\t%d\t",tail->age,tail->sex,tail->classroom);
printf("%s\t%s\n",tail->school,tail->birthday);
}
tail=tail->next;
}
}
}
}
LINK Edit(LINK head){ //该函数用来修改信息
int tem;
LINK tail=head;
printf("Please input index of student: ");
scanf("%d",&tem);
if (!head){
printf("Empty List!\n");
return NULL;
}
else{
while ((tail)&&(tail->index!=tem))
tail=tail->next;
if (!tail){
printf("No such student!\n");
return head;
}
else{
printf("Please input name: ");
scanf("%s",tail->name);
printf("Please input age: ");
scanf("%d",&tail->age);
printf("Please input sex(nan or nv): ");
scanf("%s",tail->sex);
printf("Please input classroom: ");
scanf("%d",&tail->classroom);
printf("Please input school: ");
scanf("%s",tail->school);
printf("Please input birthday :");
scanf("%s",tail->birthday);
printf("Edit successful!\n");
return head;
}
}
}
LINK DELETE(LINK head){ //该函数用来删除学生信息
int tem;
LINK tail=head;
printf("Please input index of student: ");
scanf("%d",&tem);
if (!head){
printf("Empty List!\n");
return NULL;
}
else if ((head->index==tem)&&(!head->next)){//当头元素满足并且链表只有一个元素
printf("Deleted!\n");
return NULL;
}
else if ((head->index==tem)&&(head->next)){//当头元素满足并且链表有许多元素
printf("Deleted!\n");
return head->next;
}
else{ //当满足条件的元素在链表中间或者结尾
while ((tail)&&(tail->index!=tem))
tail=tail->next;
if (!tail){
printf("No such student!\n");
return head;
}
else{
if (!tail->next){//当满足条件的元素在链表结尾
LINK tail2=head;//新的哨兵
while (tail2->next!=tail)
tail2=tail2->next;
tail2->next=NULL; //直接指向为NULL,表示链表尾,跳过tail
printf("Deleted!\n");
return head;
}
else{ //当满足条件的元素在链表中间
LINK tail2=head;//新的哨兵
while (tail2->next!=tail)
tail2=tail2->next;
tail2->next=tail->next; //跳过tail这个元素
printf("Deleted!\n");
return head;
}
}
}
}
void Display_MENU(){
printf("\t*********studentcard management system*********\n");
printf("\t1.Input student's informations (add a student)\n");
printf("\t2.Print all students' informations\n");
printf("\t3.Input index number,print selected student's information\n");
printf("\t4.Input classroom number,print informations of those students\n");
printf("\t5.Input index number, modify information\n");
printf("\t6.Input index number, remove information\n");
printf("\t7.Print nan or nv informations\n");
printf("\t8.Display Menu\n");
printf("\t9.Exit\n");
printf("\t***********************************************\n");
}
int main(){
LINK head=NULL; //链表头的初始化
int asker;
Display_MENU();
while(1){
printf(">>");
scanf("%d",&asker);
if (asker==1)//加入新学生信息
head=add(head);
else if (asker==2)//输出所有学生信息
Print_ALL(head);
else if (asker==3) //输入学生号,输出学生信息
Print_DEPEND_INDEX(head);
else if (asker==4) //输入班级,输出学生信息
Print_DEPEND_CLASS(head);
else if (asker==5) //输入学生号,修改学生信息
head=Edit(head);
else if (asker==6) //输入学生号,删除学生信息
DELETE(head);
else if (asker==7) //输入男或女,输出学生信息
Print_DEPEND_SEX(head);
else if (asker==8) //显示菜单
Display_MENU();
else if (asker==9) //退出程序,也就是退出while(1)循环
break;
else
printf("please select correct number!\n");
}
printf("system log-out!\n");
return 0;
}