华水c语言课程设计
- 格式:docx
- 大小:117.28 KB
- 文档页数:22
c语言课程设计报告模板及范文一、引言引言部分在课程设计报告中扮演了导读的角色,通常包括以下内容:•背景:简要介绍课程设计的背景和目的。
•目的:阐述课程设计的目标和意义。
•项目概述:对设计项目的总体概况进行描述。
•报告结构:简要介绍后续报告的组织结构。
二、需求分析需求分析是课程设计过程中的重要环节,它用于明确项目的目标和功能,通常包括以下内容:•问题定义:对设计中需要解决的问题进行明确定义。
•功能需求:详细描述设计项目需要实现的各项功能。
•性能需求:根据设计的要求,确定设计项目的性能指标。
•接口需求:描述设计项目与其他模块或系统之间的接口要求。
三、设计方案设计方案部分是课程设计报告的核心,通常包括以下内容:•总体设计思路:对设计方案的总体思路进行简要介绍。
•模块划分:按照功能将设计项目分成各个模块,并描述各个模块的功能和关系。
•模块设计:对各个模块进行详细的设计说明,包括算法、数据结构等。
•界面设计:如果设计项目包含界面,需要对界面进行详细的设计说明。
•流程图:结合文字和图表展示设计项目的流程。
四、实现与测试实现与测试部分是课程设计报告中比较实际的内容,通常包括以下内容:•开发环境:列出完成设计的开发环境和所使用的工具。
•代码实现:详细描述设计项目的代码实现方法。
•测试方法:列出设计项目的测试方法和测试样例。
•测试结果:给出设计项目在测试样例下的实际运行结果。
五、总结与展望总结与展望部分对整个课程设计进行总结,并对未来的优化和拓展提出展望,通常包括以下内容:•成果总结:对整个课程设计的成果进行总结和评价。
•存在问题:对设计项目中存在的问题和不足进行归纳和总结。
•改进方向:针对存在问题提出改进的方向和思路。
•未来展望:对设计项目未来的拓展和优化方向进行展望。
六、参考文献在课程设计报告中,如果有引用的书籍、论文或网络资源,需要列出参考文献。
范文示例:```c #include <stdio.h>void main() { printf(。
c需要课程设计报告一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据结构和算法,培养学生编程思维和解决问题的能力。
具体目标如下:1.知识目标:–了解C语言的发展历史和特点;–掌握基本数据类型、运算符、表达式;–熟悉控制结构、函数、数组、指针、结构体等基本概念;–理解程序设计的基本原则和方法。
2.技能目标:–能够使用C语言编写简单的程序;–掌握基本的调试和优化技巧;–具备阅读和理解他人代码的能力。
3.情感态度价值观目标:–培养学生对计算机科学的兴趣和热情;–强化学生的团队协作意识和沟通能力;–培养学生勇于探索、创新的精神。
二、教学内容根据教学目标,本课程的教学内容主要包括以下几个部分:1.C语言基础知识:介绍C语言的发展历史、特点和基本语法。
2.数据类型和表达式:讲解基本数据类型、运算符和表达式的使用。
3.控制结构:学习顺序结构、分支结构和循环结构。
4.函数:包括函数的定义、声明、调用和参数传递。
5.数组和指针:讲解一维、多维数组以及指针的概念和应用。
6.结构体和其他数据结构:介绍结构体、共用体、位字段和文件操作。
7.程序设计方法:学习结构化编程、模块化编程和面向对象编程等方法。
三、教学方法为了达到教学目标,本课程将采用以下教学方法:1.讲授法:用于讲解基本概念、原理和方法。
2.案例分析法:通过分析典型案例,使学生更好地理解知识点。
3.实验法:安排上机实验,让学生动手编写代码,巩固所学知识。
4.小组讨论法:鼓励学生分组讨论,培养团队协作和沟通能力。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C程序设计语言》(K&R)、《C Primer Plus》等。
2.参考书:《C专家编程》、《C陷阱与缺陷》等。
3.多媒体资料:PPT课件、教学视频、在线教程等。
4.实验设备:计算机、网络环境、编程调试工具等。
五、教学评估本课程的评估方式包括平时表现、作业、考试等,旨在全面、客观、公正地反映学生的学习成果。
一、设计思想首先建立主函数实现功能的选择,然后通过调用函数来分别实现;1.学生信息录入功能(以文件方式保存);2.学生信息浏览功能;3.学生信息查询功能(可以按学号,班级,性别分别进行查询,用子菜单,可显示多条记录);4.学生信息删除功能(按学号进行删除);5.学生信息修改功能(按学号修改);6.不及格学生成绩汇总功能。
二.概要设计1.模块介绍程序由十一个模块组成,分别是:主菜单模块、录入信息模块、保存信息模块、浏览信息模块、查询菜单模块、按学号查询模块、按姓名查询模块、按性别查询模块、修改信息模块、删除信息模块、不及格学生信息汇总模块。
2.函数功能lr()函数是实现信息录入功能的函数;bc()函数是将录入的信息保存到文件中额函数;ll()是实现浏览功能的函数;cx()是实现信息查询功能的函数,在cx()函数调用了xuehao(); xingming(); xingbie()这三个函数,这三个函数分别实现按学号查找、按姓名查找、按性别查找学生信息的功能;sc()函数是实现删除学生信息的功能;页脚内容1xg()实现信息修改功能;hz()实现不及格学生汇总的功能3、系统流程页脚内容2页脚内容3三.详细设计1、代码#include <stdio.h>#include <string.h>#include<stdlib.h>struct student{char num[13];char name[15];char cla[10];int age;char sex[4];char bir[8];char addr[15];页脚内容4char tele[15];char course[10];int score;};int n=0;struct student stu[100]; //定义变量struct student *p;FILE *fp;void lr();void ll();void cx();void sc();void xg();void hz();void bc();void xuehao();void xingming();页脚内容5void xingbie(); //定义函数void main() //主函数{int z;printf("+---------------------------+\n");printf("| 欢迎使用学生信息管理系统|\n");printf("+---------------------------+\n");printf("提示:为保证您的操作得到保存,请按正常顺序退出系统^_^\n");do{printf("\n\t\t\t--------------------------------\n");printf("\t\t\t+ 主菜单|\n");printf("\t\t\t--------------------------------\n");printf("\t\t\t+ [1]----录入学生信息|\n");printf("\t\t\t+ [2]----浏览学生信息|\n");printf("\t\t\t+ [3]----查询学生信息|\n");页脚内容6printf("\t\t\t+ [4]----删除学生信息|\n"); printf("\t\t\t+ [5]----修改学生信息|\n"); printf("\t\t\t+ [6]----不及格学生成绩汇总|\n"); printf("\t\t\t+ [0]----退出系统|\n"); printf("\t\t\t--------------------------------\n");printf("请输入您的选择:");scanf("%d", &z);switch(z){case 0 : break;case 1 :lr();break;case 2 :ll();break;case 3 :cx();break;case 4 :sc();break;case 5 :xg();break;case 6 :hz();break; //函数调用default:printf("\n无效选项!");页脚内容7}}while(z!= 0);}void lr() //录入函数{ int y;if(n==0)p=stu;printf("--------------------\n");printf("\n\t\t请输入学生的学号:");scanf("%s",&stu[n].num);printf("\n\t\t请输入学生的姓名:");scanf("%s",&stu[n].name);printf("\n\t\t请输入学生的班级:");scanf("%s",&stu[n].cla);printf("\n\t\t请输入学生的年龄:");页脚内容8scanf("%d",&stu[n].age);printf("\n\t\t请输入学生的性别:");scanf("%s",&stu[n].sex);printf("\n\t\t请输入学生的出生年月:");scanf("%s",&stu[n].bir);printf("\n\t\t请输入学生的地址:");scanf("%s",&stu[n].addr);printf("\n\t\t请输入学生的电话:");scanf("%s",&stu[n].tele);printf("\n\t\t请输入学生的课程:");scanf("%s",&stu[n].course);printf("\n\t\t请输入学生的成绩:");scanf("%d",&stu[n].score); //输入学生的信息n++;p++;printf("请输入0以保存信息:");scanf("%d",&y);页脚内容9if(y==0)bc(); //调用函数elseprintf("无效选项");return;}void bc()/*保存函数*/{int i;if ((fp=fopen("fstudent.txt","wb"))==NULL) //打开一个只写文件,将要打开的文件的指针赋给fp,使fp 与文件相联系{printf("\n\t\t文件打开失败");exit(0);}for (i=0;i<100;i++){ fwrite(&stu[i],sizeof(struct student),1,fp);//把信息输出大奥fp所指向的文件中,返回值为写到fp文件中页脚内容10的数据项的个数}fclose(fp); //关闭fp所指的文件,有错返回非0,否则返回0 printf("\n\t\t通讯录文件已保存");printf("\n\t\t按回车键退出程序\n\t\t");}void ll()/*浏览函数*/{int i;if(n!=0){printf("\n\t\t*************** 以下为学生管理系统所有信息************");for (i=0;i<n;i++){页脚内容11printf("\n\t\t学号:%s",stu[i].num);printf("\n\t\t姓名:%s",stu[i].name);printf("\n\t\t班级:%s",stu[i].cla);printf("\n\t\t年龄:%d",stu[i].age);printf("\n\t\t性别:%s",stu[i].sex);printf("\n\t\t出生年月:%s",stu[i].bir);printf("\n\t\t地址:%s",stu[i].addr);printf("\n\t\t电话:%s",stu[i].tele);printf("\n\t\t课程:%s",stu[i].course);printf("\n\t\t成绩:%d",stu[i].score);printf("\t\t\n");}printf("\n\t\t************************************************"); }}void cx()/*查询函数*/页脚内容12{int c;do{ printf("\n");printf("+--------------------+\n");printf("| 按学号查询请按1 |\n");printf("| 按姓名查询请按2 |\n");printf("| 按性别查询请按3 |\n");printf("| 取消请按0 |\n");printf("+--------------------+\n");printf("请输入您的选择:");scanf("%d", &c);switch(c){case 0:break;case 1:xuehao();break;case 2:xingming();break;页脚内容13case 3:xingbie();break; //调用函数default:printf("\n提示:无效选项!");break;}}while(c!= 0);}void xingming()//按姓名查询{int i;int j=0;char name[15];printf("\n\t\t****************** 按姓名查找******************"); printf("\n\t\t请输入要查学生的姓名:");scanf("%s",name);页脚内容14for(i=0;i<n;i++)if(strcmp(name,stu[i].name)==0) //比较两个字符串,若相等,返回0 {j++;printf("\n\t\t************** 以下是您查找的学生信息**********"); printf("\n\t\t学号:%s",stu[i].num);printf("\n\t\t姓名:%s",stu[i].name);printf("\n\t\t班级:%s",stu[i].cla);printf("\n\t\t年龄:%d",stu[i].age);printf("\n\t\t性别:%s",stu[i].sex);printf("\n\t\t出生年月:%s",stu[i].bir);printf("\n\t\t地址:%s",stu[i].addr);printf("\n\t\t电话:%s",stu[i].tele);printf("\n\t\t课程:%s",stu[i].course);printf("\n\t\t成绩:%d",stu[i].score);printf("\n\t\t************************************************"); printf("\n\t\t是否继续查询?(y/n)");页脚内容15getchar(); //输入选择if (getchar()=='y')xingming(); //函数的递归调用return ;}if(j==0){printf("\n\t\t未查找该学生信息:");printf("\n\t\t按回车键返回菜单:");getchar();getchar();return;}printf("\n\t\t按回车键返回主菜单:");getchar();getchar();}页脚内容16void xuehao()//*按学号查询{int i;int j=0;char num[13];printf("\n\t\t****************** 按学号查找******************"); printf("\n\t\t请输入要查学生的学号:");scanf("%s",&num);for(i=0;i<n;i++)if(strcmp(num,stu[i].num)==0){j++;printf("\n\t\t************** 以下是您查找的学生信息**********"); printf("\n\t\t学号:%s",stu[i].num);printf("\n\t\t姓名:%s",stu[i].name);printf("\n\t\t班级:%s",stu[i].cla);页脚内容17printf("\n\t\t年龄:%d",stu[i].age);printf("\n\t\t性别:%s",stu[i].sex);printf("\n\t\t出生年月:%s",stu[i].bir);printf("\n\t\t地址:%s",stu[i].addr);printf("\n\t\t电话:%s",stu[i].tele);printf("\n\t\t课程:%s",stu[i].course);printf("\n\t\t成绩:%d",stu[i].score);printf("\n\t\t************************************************"); printf("\n\t\t是否继续查询?(y/n)");getchar();if (getchar()=='y')xuehao(); //函数的递归调用return ;}if(j==0){printf("\n\t\t未查找该学生信息:");页脚内容18printf("\n\t\t按回车键返回菜单:");getchar();getchar();return;}printf("\n\t\t按回车键返回主菜单:");getchar();getchar();}void xingbie()//按性别查询{int i;int j=0;char sex[4];printf("\n\t\t****************** 按性别查找******************"); printf("\n\t\t请输入要查学生的性别:");页脚内容19scanf("%s",&sex);for(i=0;i<n;i++){for(i=0;i<n;i++)if(strcmp(sex,stu[i].sex)==0){j++;printf("\n\t\t************** 以下是您查找的学生信息**********"); printf("\n\t\t学号:%s",stu[i].num);printf("\n\t\t姓名:%s",stu[i].name);printf("\n\t\t班级:%s",stu[i].cla);printf("\n\t\t年龄:%d",stu[i].age);printf("\n\t\t性别:%s",stu[i].sex);printf("\n\t\t出生年月:%s",stu[i].bir);printf("\n\t\t地址:%s",stu[i].addr);printf("\n\t\t电话:%s",stu[i].tele);printf("\n\t\t课程:%s",stu[i].course);printf("\n\t\t成绩:%d",stu[i].score);页脚内容20printf("\n\t\t************************************************"); }printf("\n\t\t是否继续查询?(y/n)");getchar();if (getchar()=='y')xingbie(); //函数的递归调用return;}if(j==0){printf("\n\t\t未查找该学生信息:");printf("\n\t\t按回车键返回菜单:");getchar();getchar();return;}printf("\n\t\t按回车键返回主菜单:");页脚内容21getchar();getchar();}void xg()/*修改函数*/{char num[13];char name[15];char cla[10];int age;char sex[4];char bir[8];char addr[15];char tele[15];char course[10];char score;int i,j,c;页脚内容22if(n!=0){printf("请输入您要修改的学生的学号:");scanf("%s", &num);printf("\n");for(i=0;i<n;i++)if(strcmp(num,stu[i].num)==0){j=i;printf("请选择您要修改的学生的信息内容:\n");printf("+--------------------------+\n");printf("| 姓名请按1 |\n");printf("| 班级请按2 |\n");printf("| 年龄请按3 |\n");printf("| 性别请按4 |\n");printf("| 出生年月请按5 |\n");printf("| 地址请按6 |\n");printf("| 电话请按7 |\n");页脚内容23printf("| 课程请按8 |\n");printf("| 成绩请按9 |\n");printf("| 取消请按0 |\n");printf("+--------------------------+\n");printf("请输入您的选择:");scanf("%d", &c);printf("\n");switch(c){case 0:break;case 1:printf("请输入新姓名:");scanf("%s",stu[j].name);strcpy(name,stu[j].name); //复制字符串,返回namebreak;case 2:printf("请输入新班级:");scanf("%s",stu[j].cla);页脚内容24strcpy(cla,stu[j].cla);break;case 3:printf("请输入新年龄:");scanf("%d",&stu[j].age);strcpy(age,stu[j].age);break;case 4:printf("请输入新性别:");scanf("%s",stu[j].sex);strcpy(sex,stu[j].sex);break;case 5:printf("请输入新出生年月:");scanf("%s",stu[j].bir);strcpy(bir,stu[j].bir);break;case 6:printf("请输入新地址:");scanf("%s",stu[j].addr);strcpy(addr,stu[j].addr);break;case 7:printf("请输入新电话:");scanf("%s",stu[j].tele);strcpy(tele,stu[j].tele);break;页脚内容25case 8:printf("请输入新课程:");scanf("%s",stu[j].course);strcpy(course,stu[j].course);break;case 9:printf("请输入新成绩:");scanf("%d",stu[j].score);strcpy(score,stu[j].score);break;default:printf("\n无效选项!");break;}}printf("\n\t\t按回车键返回主菜单:");getchar();getchar(); //输入回车键return;}elseprintf("提示:无学生数据,请输入数据!");页脚内容26}void sc()/*删除函数*/{int e=0;char name[15];int j;int i;char id[20];printf("\n\t\t请输入要删除联系人姓名:");scanf("%s",name);getchar();for (i=0;i<n;i++){if (strcmp(stu[i].name,name)==0){printf("\n\t\t以下是您要删除的学生纪录:");页脚内容27e++;printf("\n\t\t****************************");printf("\n\t\t学号:%s",stu[i].num);printf("\n\t\t姓名:%s",stu[i].name);printf("\n\t\t班级:%s",stu[i].cla);printf("\n\t\t年龄:%d",stu[i].age);printf("\n\t\t性别:%s",stu[i].sex);printf("\n\t\t出生年月:%s",stu[i].bir);printf("\n\t\t地址:%s",stu[i].addr);printf("\n\t\t电话:%s",stu[i].tele);printf("\n\t\t课程:%s",stu[i].course);printf("\n\t\t成绩:%d",stu[i].score);printf("\n\t\t****************************");printf("\n\t\t是否删除?(y/n)");if (getchar()=='y'){for (j=i;j<n;j++)页脚内容28stu[j]=stu[j+1];n--;printf("\n\t\t删除成功");printf("\n\t\t是否继续删除?(y/n)");getchar();if (getchar()=='y')sc();}}}if (e==0){printf("\n\t\t没有该学生的纪录");printf("\n\t\t是否继续删除?(y/n)");if (getchar()=='y')sc(); //函数的递归调用}页脚内容29}void hz()/*汇总函数*/{int score;int i;int *p;for(i=0;i<n;i++){for(p=&stu[i].score;p<(stu[i].score+n);p++) //用指针变量指向数组元素printf("%d",*p); //*p即为学生的成绩if(*p<60){printf("\n\t\t************** 以下是不及格学生的信息**********"); printf("\n\t\t学号:%s",stu[i].num);printf("\n\t\t姓名:%s",stu[i].name);printf("\n\t\t班级:%s",stu[i].cla);printf("\n\t\t年龄:%d",stu[i].age);printf("\n\t\t性别:%s",stu[i].sex);页脚内容30printf("\n\t\t出生年月:%s",stu[i].bir);printf("\n\t\t地址:%s",stu[i].addr);printf("\n\t\t电话:%s",stu[i].tele);printf("\n\t\t课程:%s",stu[i].course);printf("\n\t\t成绩:%d",stu[i].score);printf("\n\t\t************************************************"); }}}四、总结页脚内容31在这为期一周的课程设计中,我发现了很多问题,也正是因为发现了问题,我也学到了很多东西。
c语言程序设计水利水电
水利水电是指水资源和水力资源的综合利用,主要包括水资源调配、水库调度、水电站调度等内容。
在实际的水利水电工程中,需要运用计算机技术来实现自动化、智能化管理和控制。
而C语言作为一种高级编程语言,被广泛应用于水利水电工
程的程序设计中,可以编写各种水利水电系统的管理、控制、仿真等软件。
在进行水利水电程序设计时,需要考虑到水资源的供需平衡、水库水电站的调
度策略、水电站的发电效率等因素,以实现对水利水电系统的有效管理和控制。
在C语言程序设计中,可以利用各种数据结构、算法和函数来实现水利水电系统的模拟、优化、调度等功能。
水利水电系统的程序设计可以分为以下几个方面:
1.水库水电站调度系统设计:根据水库水电站的水位、流量、电力需求等数据,设计一个水库水电站调度系统,实现水资源的合理调配和水电的高效利用。
2.水利工程仿真模拟:利用C语言编程,实现水利工程的仿真模拟,包括水库
水电站的水位变化、水流速度、水电站的发电情况等。
3.水电站监控系统设计:设计水电站的实时监控系统,监测水电站的运行状态、水位、水流等参数,保障水电站的安全稳定运行。
4.水资源调配优化算法:设计水资源调配的优化算法,根据水库水电站的水位、水流等数据,自动调整水资源的分配,以实现水资源的高效利用。
通过C语言程序设计水利水电系统,可以提高水资源的利用效率、水电的发电效率,实现水利水电系统的智能化、自动化管理,为水利水电工程的建设和运行提供技术支持。
C语言的灵活性和高效性,使得水利水电系统的程序设计更加简洁、
高效,满足水利水电系统的实际需求。
华水课程设计一、教学目标本课程的教学目标是让学生掌握XX学科的基本知识,理解XX学科的基本原理,培养学生运用XX学科知识解决实际问题的能力。
具体来说,知识目标包括:1.掌握XX学科的基本概念、原理和定律。
2.了解XX学科的发展历程和现状。
3.熟悉XX学科的应用领域和实际应用。
技能目标包括:1.能够运用XX学科知识分析和解决实际问题。
2.具备XX学科的基本实验技能。
3.能够阅读和理解XX学科的相关文献。
情感态度价值观目标包括:1.培养学生对XX学科的兴趣和好奇心。
2.培养学生严谨的科学态度和良好的学术素养。
3.培养学生团队合作精神和创新意识。
二、教学内容根据课程目标,教学内容主要包括XX学科的基本概念、原理和定律,以及实际应用。
具体安排如下:1.第一部分:XX学科的基本概念和原理,包括XX、XX和XX等内容。
2.第二部分:XX学科的实际应用,包括XX、XX和XX等内容。
3.第三部分:XX学科的发展和现状,包括XX、XX和XX等内容。
教学过程中,将结合教材和学生的实际情况,适当调整教学内容和进度。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
具体安排如下:1.讲授法:用于讲解XX学科的基本概念、原理和定律。
2.讨论法:用于探讨XX学科的实际应用和发展趋势。
3.案例分析法:用于分析具体的XX学科案例,培养学生的分析能力。
4.实验法:用于培养学生的实验技能和实际操作能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:选用权威、实用的XX学科教材,作为学生学习的主要参考资料。
2.参考书:推荐学生阅读一些XX学科的经典著作和最新研究成果,拓宽视野。
3.多媒体资料:制作课件、教学视频等多媒体资料,帮助学生更好地理解和学习。
4.实验设备:提供必要的实验设备和材料,让学生亲自动手实践,提高实验技能。
华北水利水电大学C语言实验报告(五)华北水院高级语言程序设计(C语言)实验报告(五)-- 学年第学期级专业:学号:姓名:………………………………………………………………………………………………一、实验题目:函数二、实验目的:(略)三、实验内容:1.程序验证(略)2.程序设计1) 编程实现求两个正整数的最大公约数,要求计算最大公约数用函数fun(int a,int b)实现。
代码:运行结果:#includeint fun(int,int);void main{int A,m,n;printf(“please input two number:”);scanf(“dd”,m,n);A=fun(m,n);printf(“最大公约数=d\n”,A);}int fun(int m,int n){int t,r;if(n>m){t=n;n=m;m=t;}while ((r=mn)!=0){m=n;n=r;}return (n);}2) 编程实现打印出2~n之间的所有素数,要求判断素数过程用自定义函数实现。
代码:运行结果:#includeint isprime (int m){int i;for (i=2;i2)例如:当t=1000时,函数值为:1597。
代码:运行结果:#includeint fun(int t){int n;printf(“Please input n:”);scanf(“d”,n);printf(“n=d,fun=d\n”,n,fun(n));}#includevoid sort(int i)sort(i,n);{int i;for(i=3;fun(i)==fun(i-1)+fun(i-2);n++) if(n<=fun(i))return (fun(i+1));}{int n;printf(“Input n please:”);scanf(“d”,n);printf(“n=d,fun=d\n”,n,fun(n));}。
大一c语言期末课程设计一、课程目标知识目标:1. 理解并掌握C语言的基本语法,包括变量定义、数据类型、运算符、表达式等。
2. 学会使用C语言控制结构,如顺序结构、分支结构、循环结构等,并能运用到实际编程中。
3. 掌握C语言数组、字符串、函数等高级概念,并能灵活运用解决实际问题。
4. 了解C语言文件操作,学会读写文件,为以后的项目开发打下基础。
技能目标:1. 培养学生运用C语言进行程序设计的能力,能独立编写简单的C程序。
2. 培养学生分析问题、解决问题的能力,通过编程解决实际问题。
3. 提高学生的逻辑思维能力,培养良好的编程习惯。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发学习动力。
2. 培养学生的团队合作意识,学会与他人共同解决问题。
3. 培养学生面对困难时勇于尝试、持续改进的精神。
本课程针对大一学生,旨在使他们掌握C语言的基本知识和技能,为后续专业课程打下基础。
结合课程性质、学生特点和教学要求,课程目标具体、可衡量,旨在帮助学生和教师明确课程预期成果,为教学设计和评估提供依据。
通过对本课程的学习,学生将能够具备基本的C语言编程能力,为以后的学习和工作打下坚实基础。
二、教学内容本章节教学内容依据课程目标,围绕以下方面进行选择和组织:1. C语言基本语法:讲解变量定义、数据类型、运算符、表达式等基本概念,对应教材第一章内容。
2. 控制结构:介绍顺序结构、分支结构(if-else)、循环结构(for、while、do-while),对应教材第二章内容。
3. 数组与字符串:讲解一维数组、二维数组、字符串的基本概念和应用,对应教材第三章内容。
4. 函数:介绍函数的定义、调用、参数传递、递归等概念,对应教材第四章内容。
5. 指针:讲解指针的基本概念、指针与数组、指针与函数等,对应教材第五章内容。
6. 文件操作:介绍文件读写、文件定位、文件操作函数等,对应教材第六章内容。
教学大纲安排如下:1. 第一周:C语言基本语法2. 第二周:控制结构3. 第三周:数组与字符串4. 第四周:函数5. 第五周:指针6. 第六周:文件操作教学内容具有科学性和系统性,符合大一学生的学习实际。
《C语言程序设计》实验报告实验一 Visual C++6.0的使用及顺序结构程序设计学号姓名一、实验目的1、掌握启动和退出VC6的方法。
2、熟悉VC6开发环境。
3、初步掌握简单程序的上机操作基本步骤,熟悉C单文件程序的输入、编译、链接和运行过程。
4、初步掌握程序的编辑修改和调试。
5、熟练使用赋值运算、算术运算等表达式。
6、熟练使用标准输入、输出函数及各种数据类型的格式说明符。
二、实验内容1、下面C语言程序,其功能是显示字符串“欢迎同学们来到华北水院计算中心!”。
请同学们按照下面的实验指导学习VisualC++6.0的使用。
1.启动VisualC++6.0开发环境(1)单击“开始”按钮,选择“程序” ——〉“Microsoft Visual Studio 6.0菜单项,单击“MicrosoftVisualC++6.0”,屏幕出现标题为“当时的提示”的窗口。
(2)单击“结束”按钮,关闭窗口,进入VC6.0开发环境的主窗口。
2.使用Visual C++6.0对一个C程序进行编辑、编译、连接和运行。
⑴分析Visual C++6.0中程序的开发过程与其它高级语言的开发过程相仿,都要经过编辑、编译、连接和运行四个步骤。
⑵步骤①编辑New对话框编辑是将C源程序输入计算机的过程。
在Visual C++6.0主界面下,点击File菜单,选择New菜单项,即可出现New对话框,如图1-1所示。
在弹出窗口中的Files标签页下,选择C++ Source File。
在选项卡右面的File编辑框里输入文件名如“Exa.c”,在Location编辑框里输入文件路径,如“d:\test”。
点击OK按钮。
将出现编辑窗口,如图1-2所示。
在图1-2所示的右端编辑窗口里输入以下C源程序并保存文件。
2i ncl ude <st di o.h>voi d m ai n(){pr i nt f("欢迎同学们来到华北水院计算中心!");}编辑窗口②编译编译是使用系统提供的编译器将文本文件Exa.c生成机器语言的过程,结果为Exa.obj,由于没有得到系统分配的绝对地址,还不能直接运行,如图1-3所示。
分类号编号华北水利水电大学North China Institute of Water Conservancy and Hydroelectric Power 课程设计课程名C语言课程设计题目图书信息管理系统院系信息工程学院专业网络工程姓名陈志涵学号201517614指导教师吴慧欣一、课程设计内容(必做题)1.输入一行字符,要求完成:(1)每个单词中的第一个字母改成大写字母(如果原来已是大写字母则不变)。
(2)全变成大写字母(3)全变成小写字母要求:以函数的形式实现,在main函数中调用,要支持输入程序代码:#include<stdio.h>#include<string.h>int main(){void changeone(char a[],int k);void changelwr(char arr[]);void changeuper(char arr[]);int k;char str[50];printf("输入一个字符串:\n");gets(str);k=strlen(str);printf("单词的第一个字母变成大写字母:\n");changeone(str,k);getchar();printf("字母全部转换为大写:\n");changeuper(str);getchar();printf("字母全部转换为小写:\n");changelwr(str);return 0;}void changeone(char a[],int k){int i;if(a[0]>='a'&&a[0]<='z')a[0]=a[0]-32;for(i=1;i<k;i++){if(a[i]==' '&&a[i+1]>='a'&&a[i+1]<='z')a[i+1]=a[i+1]-32;}puts(a);}void changeuper(char arr[]){strupr(arr);puts(arr);}void changelwr(char arr[]){strlwr(arr);puts(arr);}运行结果展示2、编写将a所指字符串中的字符按逆序存放,然后和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。
例如,当a所指字符串中的内容为"abcdefg",b 所指字符串中的内容为"1234"时,c所指数组中的内容应该为"g1f2e3d4cba";而当a所指字符串中的内容为"1234",b所指字符串中的内容为"abcdefg"时,c所指数组中的内容应该为"4a3b2c1defg"。
程序代码:#include<stdio.h>#include<string.h>int main(){void exchange(char *a,char *b,char c[40],int m,int n);int i,j;char str1[20],str2[20],c[40]={'0'},*a,*b;printf("输入字符串a:\n");gets(str1);a=str1;i=strlen(str1);printf("输入字符串b:\n");gets(str2);b=str2;j=strlen(str2);exchange(a,b,c,i,j);return 0;}void exchange(char *a,char *b,char c[40],int m,int n) {int i,j,temp;for(i=0;i<=m/2;i++){temp=*(a+i);*(a+i)=*(a+(m-i-1));*(a+(m-i-1))=temp;}if(m>=n){for(i=0,j=0;i<2*n;j++,i++,i++){c[i]=*(a+j);c[i+1]=*(b+j);}for(i=2*n,j=n;i<(m+n);j++,i++)c[i]=*(a+j);}else{for(i=0,j=0;i<2*m;j++,i++,i++){c[i]=*(a+j);c[i+1]=*(b+j);}for(i=2*m,j=m;i<(m+n);i++,j++)c[i]=*(b+j);}printf("输出组合字符串c:\n");puts(c);}运行结果展示3、某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
要求:以函数的形式实现,在main函数中调用,输入一串数据,输出加密后的数据;程序代码:#include<stdio.h>void jiami(int arr[]){int i,array[4],temp;for(i=0;i<4;i++){ array[i]=(arr[i]+5)%10; }temp=array[0];array[0]=array[3];array[3]=temp;temp=array[1];array[1]=array[2];array[2]=temp;for(i=0;i<4;i++)printf("%d",array[i]);printf("\n");}int main(){int a;int str[4];printf("输入4个数字:\n");for(a=0;a<4;a++){scanf("%d",&str[a]);}printf("加密之后的数据:\n");jiami(str);return 0;}运行结果展示4.猜数游戏编写一个猜数字游戏,游戏规则:(a)使用随机函数产生一个5位数,各位上的数字不重复,从1到9。
(b)按以下提示猜出这个5位数:对每次输入猜测的数据:给出本次共猜对了多少个数字、猜对的数字并且位置正确的个数。
程序代码:#include<stdio.h>#include<stdlib.h>#include<time.h>int random(){int a;srand((unsigned)time(NULL));a=rand()%9+1;getchar();return(a);}int main(){void compare( int a[5],int b[5]);int a,b,c,d,e;int str[5],k,arr[5];printf("猜5个不同的数字(1-9)\n");for(k=0;k<5;k++)scanf("%d",&str[k]);a=random();getchar();b=random();getchar();if(b==a)while(a==b){b=random();}c=random();if(c==a||c==b)while(c==a||c==b){c=random();}getchar();d=random();if(d==a||d==b||b==c)while(d==a||d==b||d==c){d=random();}getchar();e=random();if(e==a||e==b||e==c||e==d)while(e==a||e==b||e==c||e==d){e=random();}getchar();arr[0]=a;arr[1]=b;arr[2]=c;arr[3]=d;arr[4]=e;printf("产生的五位随机数:\n%d%d%d%d%d\n",a,b,c,d,e);compare(str,arr);return 0;}void compare(int a[5],int b[5]){int i,j,flog1=0,flog2=0;for(i=0;i<5;i++)for(j=0;j<5;j++)if(a[i]==b[j]){flog1++;break;}for(i=0;i<5;i++)if(a[i]==b[i])flog2++;printf("一共猜对了%d个数字!\n其中先后顺序一致有%d个!\n\n",flog1,flog2);}运行结果展示二、课程设计内容(选做题)1、图书信息管理系统.图书信息管理系统:采用结构体数组或文件形式存储每本书的信息:每本书应包含如下几方面的信息:主编、出版社、出版年、版次、ISBN书号、书名、定价、拥有本数、借出本数、现余本数。
主要包含以下功能:(1)添加、删除、修改图书的信息;(2)借书(被借之书“借出本数”增1,“现余本数”减1);(3)还书;(4)查找功能(需指定书的某项信息,查找该书目前借出、余存信息); 启动时从文件中读出图书信息,退出时把图书信息写回到文件程序代码:#include<stdio.h>#include<string.h>#include<stdlib.h>struct liberary{ char name[15];char writer[20];char publish[30];long dateout;long IBSN;float price;int sum;int bookout;int bookin;}book[3];void guanli(){int a;void add();void del();void xiugai();printf("可以实现对图书的管理功能:\n(1).添加\t(2).删除\t(3).修改\n\n输入选项:");scanf("%d",&a);if(a==1)add();if(a==2)del();if(a==3)xiugai();}void add(){int i,k;FILE *fp;printf("添加图书的信息:\n输入添加图书的数量:");scanf("%d",&k);printf("书名\t作者\t出版社\t版次\tIBSN书号\t定价\t藏书量\t借出量\t现存\n");for(i=0;i<k;i++){scanf("%s",book[i].name);scanf("%s",book[i].writer);scanf("%s",book[i].publish);scanf("%ld",&book[i].dateout);scanf("%ld",&book[i].IBSN);scanf("%f",&book[i].price);scanf("%d%d%d",&book[i].sum,&book[i].bookout,&book[i].bookin);}if((fp=fopen("book.txt","w"))==NULL)///{printf("无法打开文件!\n");return;}for(i=0;i<k;i++){fprintf(fp,"%s\t%s\t%s\t%ld\t%ld\t%4.1f\t%d\t%d\t%d\n",book[i].name,book[i].writer,book[i].publish,book[i].dateout,boo k[i].IBSN,book[i].price,book[i].sum,book[i].bookout,book[i].bookin);}fclose(fp);}void del(){void read();FILE *fp;char a,name[15];//long k;int i,m=3;read();printf("输入删除的书籍名称:");gets(name);getchar();for(i=0;i<10;i++){if(strcmp(name,book[i].name)==0)break;}printf("确定删除(Y/N)\n");getchar();a=getchar();for(;i<3;i++)//book[i]=book[i+1];if((fp=fopen("book.txt","w"))==NULL){printf("无法打开文件!\n");return;}for(i=0;i<(m-1);i++)fprintf(fp,"%s\t%s\t%s\t%ld\t%ld\t%4.1f\t%d\t%d\t%d\n",book[i].name,book[i].writer,book[i].publish,book[i].dateout,boo k[i].IBSN,book[i].price,book[i].sum,book[i].bookout,book[i].bookin);fclose(fp);printf("删除成功!\n");}void xiugai(){void read();struct liberary k;int i,m=3,a,j;char name[15];//long num;FILE *fp;read();printf("输入修改的书籍名称:");gets(name);getchar();for(i=0;i<3;i++){if(strcmp(name,book[i].name)==0)break;}printf("选择功能:\n\n(1).书名(2).作者(3).出版社\n(4).版次(5).IBSN (6).定价\n(7).总量(8).借出(9).剩余\n(10).修改完成\n");for(j=0;;j++){printf("选择:");scanf("%d",&a);getchar();switch(a){case 1: {printf("书名:\n");gets();getchar();strcpy(book[i].name,);break;}case 2:{printf("作者:\n");gets(k.writer);getchar();strcpy(book[i].writer,k.writer);break;} case 3:{printf("出版社:\n");gets(k.publish);getchar();strcpy(book[i].publish,k.publish);break;} case 4:{printf("版次:\n");scanf("%ld",&k.dateout);book[i].dateout=k.dateout;break;}case 5:{printf("IBSN书号:\n");scanf("%ld",&k.IBSN);book[i].IBSN=k.IBSN;break;}//getchar();case 6:{printf("定价:\n");scanf("%f",&k.price);//getchar();book[i].price=k.price;break;}case 7:{printf("总存量:\n");scanf("%d",&k.sum);//getchar();book[i].sum=k.sum;break;}case 8:{printf("借出:\n");scanf("%d",&k.bookout);book[i].bookout=k.bookout;//getchar();break;}case 9:{printf("现存:\n");scanf("%d",&k.bookin);//getchar();book[i].bookin=k.bookin;break;}case 10:break;}if(a==10)break;getchar();}if((fp=fopen("book.txt","w+"))==NULL){printf("无法打开文件!\n");return;}for(i=0;i<m;i++)fprintf(fp,"%s\t%s\t%s\t%ld\t%ld\t%4.1f\t%d\t%d\t%d\n",book[i].name,book[i].writer,book[i].publish,book[i].dateout,boo k[i].IBSN,book[i].price,book[i].sum,book[i].bookout,book[i].bookin);fclose(fp);printf("修改成功!\n");}void jieyue(){void read();FILE *fp;int i,j,m=0,a;char name[15];read();printf("输入被借阅的书");gets(name);getchar();printf("借阅数:");scanf("%d",&a);for(j=0;j<m;j++){if(strcmp(name,book[j].name)==0)break;}printf("将借阅后的信息存到文件里:");book[j].bookout=book[j].bookout+a;book[j].bookin=book[j].bookin-a;if((fp=fopen("book.txt","w"))==NULL){printf("无法打开文件!\n");return;}for(i=0;i<3;i++){fprintf(fp,"%s\t%s\t%s\t%ld\t%ld\t%4.1f\t%d\t%d\t%d\n",book[i].name,book[i].writer,book[i].publish,book[i].dateout,boo k[i].IBSN,book[i].price,book[i].sum,book[i].bookout,book[i].bookin);}fclose(fp);}void huanshu(){void read();FILE *fp;int i,j,m=0,a;char name[15];read();printf("输入要还的书");gets(name);getchar();printf("数量:");scanf("%d",&a);for(j=0;j<m;j++){if(strcmp(name,book[j].name)==0)break;}printf("将还书后的信息存到文件里:");book[j].bookout=book[j].bookout-a;book[j].bookin=book[j].bookin+a;if((fp=fopen("book.txt","w"))==NULL){printf("无法打开文件!\n");return;}for(i=0;i<3;i++){fprintf(fp,"%s\t%s\t%s\t%ld\t%ld\t%4.1f\t%d\t%d\t%d\n",book[i].name,book[i].writer,book[i].publish,book[i].dateout,bo ok[i].IBSN,book[i].price,book[i].sum,book[i].bookout,book[i].bookin);}fclose(fp);}void search(){int j,m=0;char name[15];void read();read();printf("输入查询的书籍名称:");gets(name);getchar();for(j=0;j<3;j++){if(strcmp(book[j].name,name)==0)break;}{printf("查询的书籍信息:\n");printf("书名:%s,作者:%s,出版社:%s\n",book[j].name,book[j].writer,book[j].publish);printf("版次:%ld ",book[j].dateout);printf("IBSN书号:%ld,定价:%4.1f\n",book[j].IBSN,book[j].price);printf("书存量:%d,",book[j].sum);printf("借出:%d,",book[j].bookout);printf("剩余:%d\n",book[j].bookin);}}void read(){FILE *fp;int j;if((fp=fopen("book.txt","r+"))==NULL)////////////{printf("无法打开文件!\n");return ;}for(j=0;j<3;j++){fscanf(fp,"%s",book[j].name);fscanf(fp,"%s",book[j].writer);fscanf(fp,"%s",book[j].publish);fscanf(fp,"%ld",&book[j].dateout);fscanf(fp,"%ld",&book[j].IBSN);fscanf(fp,"%f",&book[j].price);fscanf(fp,"%d",&book[j].sum);fscanf(fp,"%d",&book[j].bookout);fscanf(fp,"%d",&book[j].bookin);}fclose(fp);}int main(){ FILE *fp;int a,i,j,m;printf("\t\t\t\t\t---------------功能菜单---------------\t\t\t\n");printf("\t\t\t\t\t| |\n");printf("\t\t\t\t\t| |\n");printf("\t\t\t\t\t|\t(1)借阅|\n");printf("\t\t\t\t\t|\t(2)还书|\n");printf("\t\t\t\t\t|\t(3)查询|\n");printf("\t\t\t\t\t|\t(4)管理图书信息|\n");printf("\t\t\t\t\t|\t(5)退出|\n");printf("\t\t\t\t\t| |\n");printf("\t\t\t\t\t| |\n");printf("\t\t\t\t\t-------------------------------------\t\t\t\n\n\n");printf("有没有数据(0/1)\n");scanf("%d",&m);if(m==1)read();for(i=0;;i++){printf("输入想要实现的功能:\n");scanf("%d",&a);getchar();switch(a){case 1:{jieyue();break;}case 2:{huanshu();break;}case 3:{search();break;}case 4:{guanli();break;}case 5:break;}if(a==5)break;getchar();}return 0;}运行结果展示三、课程设计总结课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。