程序设计课程设计实验报告
- 格式:docx
- 大小:66.65 KB
- 文档页数:14
c程序课程设计实验报告一、教学目标本课程的教学目标是使学生掌握C程序设计的基本概念、语法和编程技巧,培养学生具备基本的程序设计能力和良好的编程习惯。
具体分解为以下三个方面的目标:1.知识目标:使学生了解C程序设计的基本概念,掌握C语言的基本语法和编程方法,包括变量、数据类型、运算符、控制结构、函数等。
2.技能目标:培养学生具备编写和调试C程序的能力,能运用C语言解决简单的实际问题,培养学生的创新能力和实践能力。
3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,培养学生良好的编程习惯和团队协作精神,提高学生的自主学习和问题解决能力。
二、教学内容本课程的教学内容主要包括C程序设计的基本概念、语法和编程方法。
具体安排如下:1.C程序设计基本概念:介绍计算机编程的基本概念,使学生了解C语言的特点和应用领域。
2.C语言语法:讲解C语言的基本语法,包括变量、数据类型、运算符、控制结构等。
3.C程序设计方法:教授编程方法,包括函数、数组、指针等,并通过实例使学生掌握编程技巧。
4.编程实践:安排一定的实验课时,使学生动手实践,培养学生的编程能力和问题解决能力。
三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性,提高教学效果。
具体方法如下:1.讲授法:讲解C程序设计的基本概念、语法和编程方法,使学生掌握理论知识。
2.案例分析法:通过分析典型案例,使学生了解编程技巧和方法,提高学生的实践能力。
3.实验法:安排实验课,使学生动手实践,培养学生的编程能力和问题解决能力。
4.讨论法:学生进行小组讨论,分享学习心得和经验,提高学生的团队协作能力。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。
具体如下:1.教材:选用权威、实用的教材,为学生提供系统的学习资源。
2.参考书:推荐学生阅读适量的参考书,丰富学生的知识体系。
3.多媒体资料:制作课件、教学视频等多媒体资料,提高教学的趣味性和直观性。
《面向对象程序设计》课程设计实验报告指导教师小组成员:专业班级: 2010级计算机科学与技术专业开设时间:2011-2012(一)目录1.任务1 (2)1.1 任务介绍 (2)1.2 小组成员任务分配 (2)1.3.1设计思想及主要流程图 (2)1.3.1主要程序清单 (2)1.3.1 运行结果及分析 (4)1.3.2设计思想及主要流程图 (2)1.3.2主要程序清单 (2)1.3.2 运行结果及分析 (4)1.3.3设计思想及主要流程图 (2)1.3.3主要程序清单 (2)1.3.3 运行结果及分析 (4)2.任务2 (2)2.1 任务介绍 (2)2.2 小组成员任务分配 (2)2.3设计思想及主要流程图 (2)2.3主要程序清单 (2)2.3 运行结果及分析 (4)3收获、体会和建议 (4)任务1.按照要求设计类 1.根据输出设计类设计类就是根据数据封装的要求,抽象出适合的类。
有如下测试程序和测试程序的输出结果,要求设计类Welcome 。
void main() { Welcome we; Welcome you(we); you.Display();you.Set(“Thank you.”);cout<<you.Get()<<endl; you.talk(); you.Display();}测试程序的输出结果如右: 设计类Welcome 的原则 1)在头文件Cpp1.h 中声明类 2)在Cpp1.cpp 中实现类3)使用内联函数定义Display()函数2.使用类改写程序编写一个求方程02=++c bx ax 的根的程序,用三个函数分别求当ac b 42+大于零、等于零和小于零时方程的根。
要求从主函数输入a 、b 、c 的值并输出结果。
使用面向过程的解法一般是把变量设为double 型,适用库函数cmath 进行计算。
请注意:使用面向对象的方法解决这个问题,首先要从解一元二次方程出发,抽象一个代表一元二次方程的类。
程序设计基础课程设计实验一、课程目标知识目标:1. 让学生理解程序设计的基本概念,掌握编程语言的语法和结构。
2. 培养学生运用程序设计思想解决问题的能力,包括数据表示、逻辑判断和循环控制等。
3. 使学生了解程序设计的流程,学会编写、调试和优化程序。
技能目标:1. 培养学生运用编程工具进行程序设计和调试的能力。
2. 培养学生独立思考和解决问题的能力,提高编程解题技巧。
3. 培养学生团队协作和沟通能力,能够与他人共同完成程序设计任务。
情感态度价值观目标:1. 培养学生对程序设计的兴趣和热情,激发学生学习编程的积极性。
2. 培养学生勇于尝试、不怕失败的精神,提高学生面对编程挑战的自信心。
3. 引导学生认识到编程在科技发展和社会进步中的重要作用,培养学生的社会责任感和创新意识。
课程性质:本课程为程序设计基础课程,旨在让学生掌握编程基本技能,培养编程思维。
学生特点:学生为初中年级,具备一定的逻辑思维能力,好奇心强,对新鲜事物感兴趣。
教学要求:注重理论与实践相结合,以实例为主线,引导学生主动探索,培养实际编程能力。
将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 程序设计基本概念:程序、编程语言、算法等基本概念介绍。
2. 编程环境搭建:安装编程软件,了解编程环境,学会使用开发工具。
3. 语法基础:变量、数据类型、运算符、表达式和语句等。
4. 控制结构:顺序结构、分支结构(if语句)、循环结构(for、while语句)。
5. 函数与模块:函数的定义、调用、参数传递,模块的导入和使用。
6. 数组与列表:数组的概念、使用,列表的创建、操作。
7. 文件操作:文件的打开、读取、写入和关闭。
8. 编程规范与调试:代码风格、命名规则,调试技巧和错误处理。
9. 综合实例分析:分析实际编程案例,学会运用所学知识解决问题。
教学内容安排与进度:第1-2周:程序设计基本概念,编程环境搭建。
第3-4周:语法基础,变量、数据类型、运算符。
移通学院C语言程序设计报告书设计名称:学生成绩管理系统专业:指导老师:班级:姓名:学号:座号:时间一、实验目的1.在编辑应用程序过程中,逐步加深对C语言编程的理解;2.加强实践的能力,动手能力,同时进一步对所学的知识进行巩固;3.培养初步编程的能力,为以后的学习奠定基础;二、实验内容运用所学的C语言知识编辑一个应用程序:学习成绩管理系统三.系统软件环境:本程序主要运行在: Visual C++ 6.0Turbo C/C++ 3.0四.课程设计题目:学生成绩管理系统程序说明:有N个学生,每个学生的数据包含学号不重复、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:1主菜单2各菜单项功能①成绩录入:输入学生的学号、姓名及三门课的成绩;②成绩查询:按学号查询学生记录;③成绩统计:计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序后输出;④退出系统:退出整个系统即主菜单;五.数据结构设计描述:↓int num; /定义学号,变量为整型/char name; /定义姓名,变量为字符型/int score; /定义课程的成绩,变量为整型/float average; /定义平均分,变量为浮点型/七.系统各函数的功能,、相互调用关系1.函数实现功能说明:1menu函数是定义一个菜单函数,其功能在于输出菜单界面供使用者选择;2input函数是定义用于输入学生信息;3select 函数是定义用于查询学生信息;包括学号、姓名及各科成绩;4statistics 函数计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序输出;2.相互调用关系:Main函数调用menu函数;Menu 函数可以调用input 函数、select函数和statistics 函数八.心得体会C语言是一种较为基础和普遍的编程语言,应用相当广泛,这次课程设计的要求与C语言的广泛应用相比较还有很大的差距;我们对于C语言的理解和使用还处在一个初级的阶段,我们要想掌握它,要学习的还很多,同时要懂得创新,许多的编程方法都是人们一步一步总结出来的,我想我们也要努力拓展自己的思维,努力去寻求新的方法,以创造出更为完善的应用程序; 九.程序:include <stdio.h>include <stdlib.h>include <conio.h>define N 3 /学生人数/define M 3 /课程门数/struct student{int num; /学号/char name20; /姓名/int score3; /三门课成绩/float average;}stuN; /学生数/void input; /查询/void select; /统计/void menu;void input{int i,j;printf"\t\t①成绩录入\n\n";fori=0;i<N;i++{printf"请输入学号:";scanf"%d",&stui.num;printf"请输入姓名:";scanf"%s",&;forj=0;j<M;j++{printf"第%d门成绩的分数:",j+1;scanf"%d",&stui.scorej;}printf"\n\n";}printf"\n\n";printf"输入完毕按任意键返回主菜单";}/2.查询/void selectint no{int i;printf"学生%d号: \n",no; printf"学号: %d\n",stuno-1.num; printf"姓名: %s\n",;for i=0;i<M;i++{printf"第%d门课程的成绩为: ",i+1; printf"%d\n",stuno-1.scorei;}printf"\n按任意键返回主菜单";getch;}/3.统计/void statistics{float temp=0;int i=0;/学生成绩平均分/temp=0;printf"\t\t③成绩统计\n\n";forj=0;j<N;j++{fori=0;i<M;i++{temp=temp+stuj.scorei;}stuj.average=temp/N;printf"\n学生%s的成绩平均成绩为:",;printf"%0.2f分",stuj.average;temp=0;}/排序/for j=0;j<N;j++fori=0;i<N-j-1;i++ifstui.average<stui+1.average{ temp=stui.average;stui.average=stui+1.average;stui+1.average=temp;}printf"\n\n学生平均成绩前三名:";fori=0;i<3;i++{printf"\n第%d名:%0.2f分",i+1,stui.average;}printf"\n\n按任意键返回主菜单";getch;}void menu{ int num=0;int n=0;printf"\n\t\t\t学生成绩管理系统\n\n";printf"\n\t\t\t①成绩录入\n\t\t\t②成绩查询\n\t\t\t③成绩统计\n\t\t\t④退出系统\n";printf"\t\t\tchoose:";scanf"%d",#switchnum{case 1:system"cls";input;break;case 2:system"cls";printf"\t\t②成绩查询\n\n"; printf"请输入要查询的学生号1~3:";scanf"%d",&n;selectn;break;case 3:system"cls";statistics;break;case 4:exit0;default:;}}void main{while1{system"cls"; /清屏/menu;}}。
河南城建学院《高级语言程序设计》课程设计报告设计题目:用一个字符数组保存一个英文句子专业:计算机科学与技术班级:设计人员:指导教师:计算机科学与工程学院2015年06 月25日一、课程设计题目13.用一个字符数组保存一个英文句子。
二、设计要求1)删除该英文句子中的前导空格,后导空格,并删除句子中多余的空格(单词之间只留一个空格);2)统计该句子中,单词出现的频率;3)查找并替换某个单词。
三、程序介绍1.去除字符组中间空格。
void zhongjian(char a[]){int i,j,k; /*定义整形变量i,j,k。
i,j 作为函数内循环的控制变量。
定义k用于字符组长度存放。
*/ k=strlen(a); /*将字符组a的长度存放于k 中。
(字符组a即待处理的字符组)*/for(i=0;i<k;) /*循环控制,从第一位循环到字符组结束。
*/if(a[i]!=' 'i++; /*条件控制,若当前字符不为空格,跳到下一位再进行循环。
*/else if(a[i]==' ')if(a[i+1]==' ') /*当连续出现两个空格,需要去除一个空格*/{k=k-1; /*字符串总长度减一。
*/ for(j=i;j<k;j++)a[j]=a[j+1]; /*从第一个空格开始,后续所有字符前提一位,即去除第一个空格。
*/a[k]='\0'; /*去除空格后字符组长度减一,原字符组最后一位需要变为\0。
*/continue; /*去除空格后,继续从该位检测,直至不符合该循环条件。
*/}elsei++; /*若不是连续两个空格,则跳到下个字符再进行循环。
*/printf("%s\n",a); /*输出处理后的字符组。
*/ }2.导入及导出函数void daoru(){FILE *p; /*定义一个指针函数,用于指向需要打开的文件。
计算机程序编程课程设计实验报告1车辆违章实验名称管理系统学院通信工程学院专业班级通信工程系11级25班姓名梁仙友学号52112507任课教师孙大洋实验时间2013/8/12验目的:使用C语言实现交通车辆违章管理系统的违章信息录入、违章情况查询、针对每台车辆统计罚款总金额等基本操作。
进一步巩固C语言的学习,培养一定的综合编程能力。
系统功能模块结构图:1.车辆及违章信息的录入2.基于车牌号查询每台车辆的违章情况3.基于车牌号统计每台车辆的罚款总金额数据结构设计及用法说明:数据结构定义如下:typedef struct Pe{char vno[8]; /*车牌号*/char name[15]; /*车主姓名*/int times1; /*违章停车次数*/int times2; /*闯红灯次数*/int times3; /*超速次数*/}PECCANCY;需要处理的基础数据:设违章种类分为违章停车、闯红灯、超速等三种。
设违章停车每次罚款100元、闯红灯每次罚款200元、超速每次罚款500元。
需处理的车辆及违章基本信息包括:车牌号、车主姓名、违章停车次数、闯红灯次数、超速次数.程序结构(画流程图):开始声明变量i=0,j,b,k;数组m[10];结构体变量PECCANCY PE[500];输入车牌号PE[i].vno,车主姓名PE[i].name,违章停车次数PE[i].times1,闯红灯次数PE[i].times2,超速次数PE[i].times3,输入kk为1返回输入,为2输出输入查找的车牌号,车主姓名,违章停车次数,闯红灯次数,超速次数a<=im=PE[a].vno输出该车主的违章情况没有此人信息结束源程序如下:#include<stdio.h>#include<string.h>typedef struct车牌号*/name[15]; /*车主姓名*/违章停车次数*/闯红灯次数*/超速次数*/罚款总金额*/void main()int i=0,j,b,k;char m[10];PECCANCY PE[500]; /*结构体数组*/printf("如要输入请按1,并按回车\n");/*确认输入*/"%d",&j);printf("请输入车牌号,并按回车\n");scanf("%s",PE[i].vno);printf("请输入车主姓名,并按回车\n");scanf("%s",PE[i].name);printf("请输入违章停车次数,闯红灯次数,超速次数,并按回车\n");scanf("%d,%d,%d",&PE[i].times1,&PE[i].times2,&PE[i].times3);fine=100*PE[i].times1+200*PE[i].times2+500*PE[i].times3;/*计算罚款金额*/ i=i+1;printf("继续输入请按1,否则请按2\n");scanf("%d",&k);if (k==2) break;}}如要查询请按2,并按回车\n");请输入您要查询的车牌号,并按回车");scanf("%s",m);=0;a<=i;a++)p(m,PE[a].vno)==0) /*查询违章情况及罚款情况*/f("车牌号:%s\n",PE[a].vno);("车主姓名:%s\n",PE[a].name);printf("违章停车次数:%d\n",PE[a].times1); ("闯红灯次数:%d\n",PE[a].times2);超速次数:%d\n",PE[a].times3);("罚款总金额:%d\n",PE[a].fine);break;}没有您要查找的信息");测试数据及运行结果如下:实验心得通过该实验,我对结构体数组有了更深层次的了解,输入输出函数分支(if,if``else,if```else if```)和循环结构(for,while,do```while)的几种用法更加熟练。
C语言程序设计课程设计实验报告一、设计名称:学生成绩治理查询系统实验项目性质:综合性所涉及课程:C语言程序设计打算学时:实验学时12二、设计目的:1.通过本课程设计,培育上机动手能力,使学生巩固《C语言程序设计》课程学习的内容,把握工程软件设计的大体方式,强化上机动手能力,闯过编程关;2.为后续各门运算机课程的学习打下坚实基础。
3.明白得程序设计的思路,把握结构化程序设计的方式,综合利用C语言进行程序编写,巩固常常利用的C语言概念,如数组、指针、结构体、链表、文件操作等,注意良好的程序设计风格的培育。
提高编写程序解决实际问题的能力、调试程序的技术。
三、设计环境(软件、硬件及条件)1.硬件:PC机2.软件:Turbo C++四、设计说明:程序系统的结构:用一系列图表列出本程序系统内的每一个程序(包括每一个模块和子程序)的名称、标识符和它们之间的层次结构关系。
主程序:新建:输入记录(遇#号时停止输入)。
插入:在指定位置插入记录。
显示:列出所有记录。
查询:一、按学号查询;二、按名字排序。
删除:一、按学号删除;二、按名字删除;3、删除所有记录。
排序:一、按语文成绩排序;二、按英语成绩排序;3、按数学成绩排序。
保留:保留为任意名字,系统自动加后缀名为.txt。
读取:读取程序目录下的后缀名为.txt的文件。
退出:退出程序。
五、各功能模块的具体实现,用图表表示。
输入记录显示开始:输入学号输入的学号是否为#Y N 结束,返回主菜单输入记录循环输入结束开始p=hp!=NULL输出学生信息;p=p->next结束按学号(姓名)查询信息Y N读取文件六、各模块(函数)的功能介绍,数据结构设计描述,参数说明等。
STUDENT *init(); /*初始化链表*/STUDENT *create(); /*新建链表*/STUDENT *del_no(STUDENT *h);/*按学号删除信息*/STUDENT *del_name(STUDENT *h); /*按姓名删除信息*/void print(STUDENT *h); /*显示信息函数*/void search_no(STUDENT *h); /*按学号搜索*/void search_name(STUDENT *h); /*按姓名搜索*/STUDENT *insert(STUDENT *h); /*插入信息函数*/void sort(STUDENT *h);/* 排序函数*/void save(STUDENT *h);/*保留数据到文件*/void load(STUDENT *h); /*从文件读取数据*/int menu_main(); /*菜单函数*/void inputs(char *prompt,char *s,int count);/*输出信息*/七、程序代码:Enter records\n");printf(" 2. Add records\n");printf(" 3. List records\n");printf(" 4. Search records\n");printf(" 5. Delete records\n");printf(" 6. Sort records\n");printf(" 9. Quit\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~9):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>9); /*选择项不在1~9之间重输*/return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Search records on number\n");printf(" 2. Search records on name\n");printf(" 3. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~3):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>3);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Chinese\n");printf(" 2. English\n");printf(" 3. Math\n");printf(" 4. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>4);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Delete records on number\n");printf(" 2. Delete records on name\n");printf(" 3. Delete all records\n");printf(" 4. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>4);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}.");/*提示*/getch(); /*读入任意字符*/}.\n");getch(); /*读入任意字符*/if(p==h)h=p->next;elseq->next=p->next;free(p); /*释放*/printf("\n%s had been deleted\n",s); }printf("\nPress any key to continue..."); getch(); /*读入任意字符*/return h;}.\n");getch();if(p==h)h=p->next;else q->next=p->next;free(p); /*释放*/printf("\n%s had been deleted\n",s);}printf("\nPress any key to continue...");getch(); /*读入任意字符*/return h;}.");getch(); /*读入任意字符*/}.");getch(); /*读入任意字符*/}xt"};STUDENT *p;FILE *fp; /*指向文件的指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"wb"))==NULL) /*打开文件,并判定打开是不是正常*/ {printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;while(p!=NULL){if(fwrite(p,sizeof(STUDENT)-sizeof(p->next),1,fp)!=1){printf("Error!\n");exit(1);} /*写入*/p=p->next;}fclose(fp); /*关闭文件*/printf("\n------OK------\n");printf("Press any key to continue...");getch(); /*读入任意字符*/}xt"};STUDENT *p,*a1=NULL,*a2=NULL;FILE *fp;/*概念文件指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"rb"))==NULL)/*打开文件*/{printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;a1=a2=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp); while(!feof(fp)){n++;if(n==1)h=a1;else a2->next=a1;a1=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp);}a2->next=NULL;printf("\n------OK------\n");printf("Press any key to continue...");getch(p); /*读入任意字符*/}///////////////////////////////////////////void sort(STUDENT *h) /*排序函数*/{int i=0,j;STUDENT *p,*q,*t,*h1,*z;clrscr(); /*清屏*/printf("Enter you choice :\n");scanf("%d",&j);z=h;h1=h->next;h->next=NULL;while(h1!=NULL){t=h1;h1=h1->next;q=h;while(t->score[--j]<p->score[--j]&&p!=NULL){q=p;p=p->next;}if(p==q){t->next=p;h=t;}else{t->next=p;q->next=t;}}p=h;while(p!=NULL){i++;p=p->next;}h=z;printf("------OK------\n");}//////////////////////////////////////////////////九、体会、总结本课程设计完成了设计一个学生成绩治理系统,学生的学习成绩进行治理,具有查询和检索功能,而且能够对指定文件操作。
程序设计基础课程设计报告
本次课程设计旨在深化我们对程序设计基础的理解和应用。
通过实际操作,我们学习了算法设计、数据结构选择及代码优化等关键技能。
在解决问题的过程中,我们遇到了诸如逻辑错误、运行效率低等问题,但通过团队合作、反复调试和查阅资料,最终成功解决了这些问题。
这次课程设计不仅提高了我们的编程能力,还锻炼了我们的逻辑思维和团队协作能力。
我们深刻认识到,良好的程序设计不仅需要扎实的理论知识,还需要灵活的应用能力和不懈的探索精神。
展望未来,我们将继续巩固和扩展程序设计知识,努力提升编程水平,为解决实际问题和推动科技发展贡献自己的力量。
舉申科按衣專课程实验报告课程名称:面向对象程序设计院系:专业班级:____________学号:__________姓名:_______________指导教师:____________实验一.面向过程的整型栈编程 (1)1. 需求分析 (1)1.1题目要求 (1)1.2需求分析 (1)2. 系统设计 (2)2.1概要设计 (2)2.2详细设计 (3)4. 软件测试 (4)5. 特点与不足 (4)5.1技术特点 (4)5.2不足和改进的建议 (5)6. 过程和体会 (5)6.1遇到的主要问题和解决方法 (5)6.2课程设计的体会 (5)7. 源码和说明 (5)7.1文件清单及其功能说明 (5)7.2用户使用说明书 (5)7.3源代码 (5)实验二.面向对象的整型栈编程 (12)1. 需求分析 (12)1.1题目要求 (12)1.2需求分析 (12)2. 系统设计 (13)2.1概要设计 (13)2.2详细设计 (13)3. 软件开发 (14)4. 软件测试 (14)5. 特点与不足 (14)5.1技术特点 (14)5.2不足和改进的建议 (15)6. 过程和体会 (15)7. ......................................................................................................................................... 源码和说明. (15)7.1文件清单及其功能说明 (15)7.2用户使用说明书 (15)7.3源代码 (15)实验三.基于算符重载的整型栈编程 (19)1. 需求分析 (19)1.1题目要求 (19)1.2需求分析 (19)2. 系统设计 (20)2.1概要设计 (20)2.2详细设计 (20)3. 软件开发 (20)4. 软件测试 (20)5. 特点与不足 (21)5.1技术特点 (21)5.2不足和改进的建议 (21)6. 过程和体会 (21)6.1遇到的主要问题和解决方法 (21)6.2课程设计的体会 (21)7. 源码和说明 (21)7.1文件清单及其功能说明 (21)7.2用户使用说明书 (21)7.3源代码 (21)实验四.面向对象的整型队列编程 (25)1. 需求分析 (25)1.1题目要求 (25)1.2需求分析 (25)2. 系统设计 (26)3. 软件开发 (26)4. 软件测试 (26)5. 特点与不足 (26)5.1技术特点 (26)5.2不足和改进的建议 (26)6. 过程和体会 (26)6.1遇到的主要问题和解决方法 (26)6.2课程设计的体会 (27)7. ..................................................................................................................................... 源码和说明 (27)7.1文件清单及其功能说明 (27)7.2用户使用说明书 (27)7.3源代码 (27)实验五.基于组合的整型队列编程 (31)1. 需求分析 (31)1.1题目要求 (31)1.2需求分析 (31)2. 系统设计 (31)3. 软件开发 (32)4. 软件测试 (32)5. 特点与不足 (32)5.1技术特点 (32)5.2不足和改进的建议 (32)6. 过程和体会 (32)6.1遇到的主要问题和解决方法 (32)6.2课程设计的体会 (32)7. 源码和说明 (33)7.1文件清单及其功能说明 (33)7.2用户使用说明书 (33)7.3源代码 (33)实验六.基于继承的整型队列编程 (37)1. 需求分析 (37)1.1题目要求 (37)1.2需求分析 (38)2. 系统设计 (38)3. 软件开发 (38)4. 软件测试 (38)5. 特点与不足 (38)5.1技术特点 (38)5.2不足和改进的建议 (38)6. 过程和体会 (39)7. .......................................................................................................................................... 源码和说明. (39)7.1文件清单及其功能说明 (39)7.2用户使用说明书 (39)7.3源代码 (39)实验一.面向过程的整型栈编程1. 需求分析1.1题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。
程序设计课程设计实验报告IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】《程序设计》课程设计姓名:学号:班级:软件工程14班指导教师:成绩:1.消除类游戏【问题描述】消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。
当有多处可以被消除时,这些地方的棋子将同时被消除。
【基本要求】现在给你一个n行m列的棋盘(1≤n,m≤30),棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。
请注意:一个棋子可能在某一行和某一列同时被消除。
输入数据格式:输入的第一行包含两个整数n,m,用空格分隔,分别表示棋盘的行数和列数。
接下来n行,每行m个整数,用空格分隔,分别表示每一个方格中的棋子的颜色。
颜色使用1至9编号。
输出数据格式:输出n行,每行m个整数,相邻的整数之间使用一个空格分隔,表示经过一次消除后的棋盘。
如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。
【测试数据】为方便调试程序,可将输入数据先写入一个文本文件,然后从文件读取数据处理,这样可避免每次运行程序时都要从键盘输入数据。
测试数据一输出说明:棋盘中第4列的1和第4行的2可以被消除,其他的方格中的棋子均保留。
测试数据二输出说明:棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。
【功能实现】#include<iostream>#include<>usingnamespacestd;intmain(){intm,n,i,j;inttemp;cin>>n>>m;temp=m;m=n;n=temp;int*map=newint[m*n];int*mark=newint[m*n];int*tmap=map;int*tmark=mark;intdif=0;}printf("请输入要输入数的个数\n");scanf("%d",&n);/*输入要输入数的个数*/for(i=0;i<n;i++){scanf("%d",&[i].number);/*输入n个数*/}data1[0].number=[0].number;data1[0].count++;for(i=1;i<n;i++){for(j=0;j<s;j++)if[i].number==data1[j].number){data1[j].count++;break;}if(j==s){data1[s].number=[i].number;data1[s].count++;s++;}}for(i=1;i<s;i++)for(j=0;j<s-i;j++)if(data1[j].number>data1[j+1].number){data2=data1[j];data1[j]=data1[j+1];data1[j+1]=data2;}printf("结果如下\n");for(i=0;i<s;i++){printf("%d,%d\n",data1[i].number,data1[i].count); }}【结果和截图】2.7【心得体会】通过本次实验,我对c语言编译器和n个数的排序和统计有了更加深刻的认识和了解。
3.画图【问题描述】用ASCII字符来画图是一件有趣的事情,并形成了一门被称为ASCIIArt的艺术。
例如,下图是用ASCII字符画出来的CSPRO字样。
....____..____...___.../.___/.___||.._.\|.._.\./._.\.|.|...\___.\|.|_).|.|_).|.|.|.||.|.|..__/|.._.<|.|_|.|.\____|____/|_|...|_|.\_\\___/.【基本要求】实现一个用ASCII字符来画图的程序,支持以下两种操作:画线:给出两个端点的坐标,画一条连接这两个端点的线段。
简便起见题目保证要画的每条线段都是水平或者竖直的。
水平线段用字符-来画,竖直线段用字符|来画。
如果一条水平线段和一条竖直线段在某个位置相交,则相交位置用字符+代替。
填充:给出填充的起始位置坐标和需要填充的字符,从起始位置开始,用该字符填充相邻位置,直到遇到画布边缘或已经画好的线段。
注意这里的相邻位置只需要考虑上下左右4个方向,如下图所示,字符@只和4个字符*相邻。
.*.*@*.*.输入数据格式如下:第1行有三个整数m,n和q。
m和n分别表示画布的宽度和高度,以字符为单位。
q表示画图操作的个数。
(2≤m,n≤100,0≤q≤100)第2行至第q+1行,每行是以下两种形式之一:0x1y1x2y2:表示画线段的操作,(x1,y1)和(x2,y2)分别是线段的两端,满足要么x 1=x2且y1≠y2,要么y1=y2且x1≠x2。
(0≤x1,x2<m,0≤y1,y2<n)。
1xyc:表示填充操作,(x,y)是起始位置,保证不会落在任何已有的线段上;c为填充字符,是大小写字母。
(0≤x<m,0≤y<n)。
画布的左下角是坐标为(0,0)的位置,向右为x坐标增大的方向,向上为y坐标增大的方向。
这q个操作按照数据给出的顺序依次执行。
画布最初时所有位置都是字符.(小数点)。
输出数据格式如下:输出有n行,每行m个字符,表示依次执行这q个操作后得到的画图结果。
【测试数据】测试数据一测试数据二【功能实现】#include<>voiddrawline(chara[][100],intm,intn,intx1,inty1,intx2,inty2) {if(x2==x1&&y2!=y1){if(y1<=y2){for(inti=n-1-y2;i<=n-1-y1;i++){if(a[i][x1]=='-')a[i][x1]='+';elsea[i][x1]='|';}}else{for(inti=n-1-y1;i<=n-1-y2;i++){if(a[i][x1]=='-')a[i][x1]='+';elsea[i][x1]='|';}}}if(x2!=x1&&y2==y1){if(x2>=x1){for(inti=x1;i<=x2;i++){if(a[y2][i]=='|')a[y2][i]='+';elsea[y2][i]='-';}}else{for(inti=x2;i<=x1;i++){if(a[y2][i]=='|')a[y2][i]='+';elsea[y2][i]='-';}}}}voidfillchar(chara[][100],intm,intn,intx,inty,charb){intright=x,left=x,top=y,low=y;if(a[n-1-y][x]!='|'&&a[n-1-y][x]!='-'&&a[n-1-y][x]!='+'&&a[n-1-y][x]!=b) {a[n-1-y][x]=b;right++;left--;top++;low--;if(right<m){fillchar(a,m,n,right,y,b);}if(left>=0){fillchar(a,m,n,left,y,b);}if(top<n){fillchar(a,m,n,x,top,b);}if(low>=0){fillchar(a,m,n,x,low,b);}}}voidprintcanvas(chara[][100],intn,intm){for(inti=0;i<n;i++){for(intj=0;j<m;j++)printf("%c",a[i][j]);printf("\n");}}voidmain(){charcanvas[100][100],b;inti,k,x1,y1,x2,y2;intn,m,q;printf("请输入n,m,q:\n");scanf("%d%d%d",&m,&n,&q);for(intii=0;ii<n;ii++)for(intj=0;j<m;j++)canvas[ii][j]='.';for(i=0;i<q;i++){scanf("%d",&k);if(k==0){scanf("%d%d%d%d",&x1,&y1,&x2,&y2);drawline(canvas,m,n,x1,y1,x2,y2);}elseif(k==1){scanf("%d%d%c",&x1,&y1,&b);fillchar(canvas,m,n,x1,y1,b);}}printcanvas(canvas,n,m);}【结果和截图】【心得体会】通过本次实验,我对c语言编译器和图形坐标和关系上的处理有了更加深刻的认识和了解。
4.送货【问题描述】为了增加公司收入,F公司新开设了物流业务。
由于F公司在业界的良好口碑,物流业务一开通即受到了消费者的欢迎,物流业务马上遍及了城市的每条街道。
然而,F公司现在只安排了小明一个人负责所有街道的服务。
任务虽然繁重,但是小明有足够的信心,他拿到了城市的地图,准备研究最好的方案。
城市中有n个交叉路口,m条街道连接在这些交叉路口之间,每条街道的首尾都正好连接着一个交叉路口。
除开街道的首尾端点,街道不会在其他位置与其他街道相交。
每个交叉路口都至少连接着一条街道,有的交叉路口可能只连接着一条或两条街道。
【基本需求】小明希望设计一个方案,从编号为1的交叉路口出发,每次必须沿街道去往街道另一端的路口,再从新的路口出发去往下一个路口,直到所有的街道都经过了正好一次。
输入数据格式输入的第一行包含两个整数n,m(1≤n≤10,n-1≤m≤20),表示交叉路口的数量和街道的数量,交叉路口从1到n标号。