本文目录一览:
C语言实训心得
通过这次C语言实训,提高了我掌握和利用C语言进行程设计的能力, 而且进一步理解和运用结构化程设计的思想和方法。初步掌握了开发一个小型实用系统的基本方法。学会了调试一个较长程序的基本方法。学会了利用流程图或N-S图表示算法。掌握了书写程设计开发文档的能力.为以后的实训打下坚实的基础。
c语言程序设计题。实验报告。高分。
车票系统,与你的第2题要求略有不同,你自己修改吧
#includestdio.h
#includestdlib.h
#includedos.h
#includetime.h
#includeconio.h
#includestring.h
const int MAX=20;
const int N=50;
const int MAXFILENAME=100;
enum {FALSE,TRUE};
struct time
{
int hour;
int minutes;
};
struct ticket
{
int SerialNumber;
struct time SetOut;
char DeparturePoint[MAX];
char TerminalPoint[MAX];
float LastTime;
int FixNumber;
int FixedNumber;
}car[N];
int RecordNumber;
int FLAG=FALSE;
/**********************************************/
int ShowMessage(void); //载入原始数据
void mainmenu(void); //主菜单
void InsertMessage(void); //录入班次信息
void SearchMenu(void); //查询路线子菜单
void SearchByNumber(void); //按班次号查询
void SearchByAddress(void); //按终点站查询
void TicketManagement(void); //车票售出与退回
void TicketOrder(void); //售票
void TicketDelete(void); //退票
void exit(void); //退出该系统
/********************************************/
int main(void)
{
RecordNumber=ShowMessage();
if(1)
do{
mainmenu();
}while(FLAG==FALSE);
return 0;
}
void mainmenu(void)
{
system("color 1f");
system("mode con: cols=140 lines=130");
char functionNumber;
printf(" 车票管理系统\n\n");
printf(" 制作:hmm182007\n");
printf(" 日期:2007/11/25/19:57\n");
printf("============================================================================\n");
printf(" 1.录入班次信息\t\n");
printf(" 2.浏览班次信息\t\n");
printf(" 3.查询行车路线\t\n");
printf(" 4.售票与退票系统\t\n");
printf(" 5.退出该系统\t\n");
printf("============================================================================\n");
printf("请选择你所需要的功能:");
scanf("%c",functionNumber);
switch(functionNumber)
{
case '1':
{
InsertMessage();
printf("\n按任意键回主菜单......\n");
getchar();
getchar();
}
break;
case '2':
{
ShowMessage();
printf("\n按任意键回主菜单......\n");
getchar();
getchar();
}
break;
case '3':
{
SearchMenu();
printf("\n按任意键回主菜单......\n");
getchar();
getchar();
}
break;
case '4':
{
TicketManagement();
getchar();
getchar();
}
break;
case '5':FLAG=TRUE;exit();break;
default:
{
printf("输入错误,请确保你的输入为1--5.\n");
printf("按任意键回主菜单......\n");
getchar();
getchar();
}
}//switch ends
FLAG=FALSE;
}
void InsertMessage(void)
{
FILE *fp;
char filename[MAXFILENAME];
int i;
printf("请输入文件名或者文件路径名:");
scanf("%s",filename);
if((fp=fopen(filename,"r"))==NULL)
{
printf("文件%s不可读,请确认文件%s存在或者文件路径正确.\n\n",filename,filename);
mainmenu();
}
for(i=RecordNumber;!feof(fp)!ferror(fp);i++)
{
fscanf(fp,"%d%d%d",car[i].SerialNumber,car[i].SetOut.hour,car[i].SetOut.minutes);
fscanf(fp,"%s%s%f%d%d",car[i].DeparturePoint,car[i].TerminalPoint,car[i].LastTime,car[i].FixNumber,car[i].FixedNumber);
}
int count=i;
printf("班次\t发车时间\t起点\t终点\t行车时间(小时)\t额定载量\t已定票人数\n");
for(i=0;icount;i++)
{
printf("%d\t%d:%d\t\t",car[i].SerialNumber,car[i].SetOut.hour,car[i].SetOut.minutes);
printf("%s\t%s\t\t%.1f\t %d\t\t%d\n",car[i].DeparturePoint,car[i].TerminalPoint,car[i].LastTime,car[i].FixNumber,car[i].FixedNumber);
}
fclose(fp);
}
int ShowMessage(void)
{
int i;
FILE *fp;
if((fp=fopen("add.txt","r"))==NULL)
{
printf("读取数据失败,请检查文件add.txt是否存在.\n");
exit(-1);
}
for(i=0;!feof(fp)!ferror(fp);i++)
{
fscanf(fp,"%d%d%d",car[i].SerialNumber,car[i].SetOut.hour,car[i].SetOut.minutes);
fscanf(fp,"%s%s%f%d%d",car[i].DeparturePoint,car[i].TerminalPoint,car[i].LastTime,car[i].FixNumber,car[i].FixedNumber);
}
int count=i;
printf("班次\t发车时间\t起点\t终点\t行车时间(小时)\t额定载量\t已定票人数\n");
for(i=0;icount;i++)
{
printf("%d\t%d:%d\t\t",car[i].SerialNumber,car[i].SetOut.hour,car[i].SetOut.minutes);
printf("%s\t%s\t\t%.1f\t %d\t\t%d\n",car[i].DeparturePoint,car[i].TerminalPoint,car[i].LastTime,car[i].FixNumber,car[i].FixedNumber);
}
return count;
}
void SearchMenu(void)
{
system("color 1f");
system("mode con: cols=140 lines=130");
char functionNumber;
printf(" 查询子菜单\n");
printf("============================================================================\n");
printf(" 1.按班次号查询\t\n");
printf(" 2.按终点站查询\t\n");
printf(" 3.返回主菜单\t\n");
printf("============================================================================\n");
printf("请选择你所需要的功能:");
scanf("%*c%c",functionNumber);
switch(functionNumber)
{
case '1':SearchByNumber();break;
case '2':SearchByAddress();break;
case '3':
getchar();
mainmenu();
break;
default:
printf("输入错误,请确保你的输入为1--3.\n");
printf("按任意键回查询子菜单......\n");
getchar();
getchar();
SearchMenu();
}
}
void SearchByNumber(void)
{
int SearchNumber;
printf("请输入要查询的班次号:");
scanf("%d",SearchNumber);
printf("班次\t发车时间\t起点\t终点\t行车时间(小时)\t额定载量\t已定票人数\n");
printf("%d\t%d:%d\t\t",car[SearchNumber-1].SerialNumber,car[SearchNumber-1].SetOut.hour,car[SearchNumber-1].SetOut.minutes);
printf("%s\t%s\t\t%.1f\t %d\t\t%d\n",car[SearchNumber-1].DeparturePoint,car[SearchNumber-1].TerminalPoint,car[SearchNumber-1].LastTime,car[SearchNumber-1].FixNumber,car[SearchNumber-1].FixedNumber);
}
void SearchByAddress(void)
{
int i;
char Address[MAX];
printf("请输入终点站的名称:");
scanf("%s",Address);
printf("班次\t发车时间\t起点\t终点\t行车时间(小时)\t额定载量\t已定票人数\n");
for(i=0;iRecordNumber;i++)
{
//对比终点站记录,找到并输出
if((strcmp(Address,car[i].TerminalPoint))==0)
{
printf("%d\t%d:%d\t\t",car[i].SerialNumber,car[i].SetOut.hour,car[i].SetOut.minutes);
printf("%s\t%s\t\t%.1f\t %d\t\t%d\n",car[i].DeparturePoint,car[i].TerminalPoint,car[i].LastTime,car[i].FixNumber,car[i].FixedNumber);
}
}
}
void TicketManagement(void)
{
char functionNumber;
system("color 1f");
system("mode con: cols=140 lines=130");
printf(" 订票与退票菜单\n");
printf("============================================================================\n");
printf(" 1.订票\t\n");
printf(" 2.退票\t\n");
printf(" 3.返回主菜单.\n");
printf("============================================================================\n");
printf("选择你需要的功能:");
scanf("%*c%c",functionNumber);
switch(functionNumber)
{
case '1':
{
TicketOrder();
//getchar();
//getchar();
}
break;
case '2':TicketDelete();break;
case '3':
{
getchar();
mainmenu();
}
break;
default:
{
printf("输入错误,请确保你的输入为1--3.\n");
printf("按任意键回主菜单......\n");
getchar();
getchar();
mainmenu();
}
}
}
void TicketOrder(void)
{
int i;
printf("请输入要订购的车票的班次:");
scanf("%d",i);
if(i0||iRecordNumber)
{
printf("对不起,今天没有这趟车,请明天再来,谢谢使用!\n");
printf("按任意键回主菜单......\n");
getchar();//getchar();
TicketManagement();
}
time_t tval;
struct tm *now;
tval = time(NULL);
now = localtime(tval);
if((now-tm_hour==car[i].SetOut.hournow-tm_mincar[i].SetOut.minutes)||(now-tm_hourcar[i].SetOut.hour))
{
if(car[i].FixedNumbercar[i].FixNumber)
{
car[i].FixedNumber++;
printf("你的订票成功,请按时上车,谢谢使用!\n");
}
else printf("对不起,今天的这趟车的票已卖完,请明天再来,谢谢合作!\n");
}
else printf("对不起,今天的这趟车已发出,请明天再来,谢谢合作!\n");
printf("班次\t发车时间\t起点\t终点\t行车时间(小时)\t额定载量\t已定票人数\n");
printf("%d\t%d:%d\t\t",car[i-1].SerialNumber,car[i-1].SetOut.hour,car[i-1].SetOut.minutes);
printf("%s\t%s\t\t%.1f\t %d\t\t%d\n",car[i-1].DeparturePoint,car[i-1].TerminalPoint,car[i-1].LastTime,car[i-1].FixNumber,car[i-1].FixedNumber);
//printf("按任意键回主菜单......\n");
//getchar();getchar();
}
void TicketDelete(void)
{
int i;
printf("请输入要退购的车票的班次:");
scanf("%d",i);
if(i0||iRecordNumber)
{
printf("对不起,今天没有这趟车,无法完成退票.谢谢使用!\n");
getchar();
//getchar();
TicketManagement();
getchar();
}
time_t tval;
struct tm *now;
tval = time(NULL);
now = localtime(tval);
if((now-tm_hour==car[i].SetOut.hournow-tm_mincar[i].SetOut.minutes)||(now-tm_hourcar[i].SetOut.hour))
{
if(car[i].FixedNumber=1)
{
car[i].FixedNumber--;
printf("退订车票成功,谢谢使用!\n");
}
else printf("对不起,今天的这趟车的票尚未卖出,无法完成退票!\n");
}
else printf("对不起,今天的这趟车已发出,无法完成退票!\n");
printf("班次\t发车时间\t起点\t终点\t行车时间(小时)\t额定载量\t已定票人数\n");
printf("%d\t%d:%d\t\t",car[i-1].SerialNumber,car[i-1].SetOut.hour,car[i-1].SetOut.minutes);
printf("%s\t%s\t\t%.1f\t %d\t\t%d\n",car[i-1].DeparturePoint,car[i-1].TerminalPoint,car[i-1].LastTime,car[i-1].FixNumber,car[i-1].FixedNumber);
getchar();//getchar();
}
void exit(void)
{
printf("\n\n*********************谢谢使用本系统,欢迎下次继续使用***********************\n");
exit(0);
}
计算机实训报告范文5篇
实训 报告 是对实训的收获和成长的一种 总结 性报告,那么计算机实训报告应该怎么写呢?我精选了一些计算机实训 报告 范文 _计算机基础实训报告,一起来看看吧。希望能够帮助到您!
↓↓↓点击下方链接获取“计算机实训报告”相关内容↓↓↓
★★ 计算机实习报告范文3000字 ★★
★★ 计算机专业实习报告范文 ★★
★★ 计算机实习心得2000字3篇 ★★
★★ 计算机专业学生毕业工作实习 ★★
★★ 计算机毕业实习日记10篇 ★★
计算机基础实训报告1
实训时间:__年12月26日—12月28日
实训目的:通过上机操作形式,潜移默化地进行综合操作素质的训练,增强学 生综合运用所学知识解决实际问题的能力。
实训内容:word文档与e_cel表格的编辑与操作。
短短三天的计算机实训结束了,通过这三天的实训,我学到了很多的知识,我深深体会到计算机办公的神奇和奥妙;也掌握了许多的计算机办公技能。
老师布置了一些的作业给我们操练,在老师精心的指导下我已把E_cel,word,等操作的很好了!现在我们已步入大学,经过半年的在校学习,对计算机的一些相关操作还只是初步的认识和理解,在这学期期间,一直忙于理论知识的学习,虽然我是计算机系的学生,但我们的专业课程也只是学习了C语言的程序编辑,所以在实训之前,计算机办公对我们来说是比较抽象的,但通过这次实训,我们揭开了她神秘的面纱,离我们不再遥远!据我了解,大多数同学都以前接触过电脑,也有玩过一些游戏,却不懂操作一些对我们以后工作有用的办公软件。对于我们所学的计算机知识渗透较少,之前都是老师操作为主。此次实训就不同了,同学们都作了充分准备,在活动中同学们都提前来到教室上课,每位同学都认真的操作、练习;听着“嗒嗒”的打字声,心里真的不亦乐乎!指导我们实训的是卞老师,卞老师在实训中给我们做了充分的指导,并且做详细的讲解,这次实训活动十分成功,除了各位同学的充分准备,还要感谢卞老师的授业解惑和系里领导的大力支持。
通过这次实训,我们对电脑有了更深刻的认识,做二十一世纪现代人不但要有过硬的理论知识,良好的心理素质,健康的体魄,还要有超强的电脑操作能力,正所谓“秀才不出门,便知天下事”为一名计算机专业学生来说,更应掌握更多的计算机操作技能,所以要把电脑作为一个重点来抓!
开始我以为实训只是应付了事,走马观花之作。然而,在我参加培训的第一天,我就发现自己错了,此次的电脑培训与以前参加过的培训大相径庭。以前的培训都是应付考试的,实用性不强,而且那时学的东西,在工作中用的不多,时间长了不用也就忘记了。而这次培训的内容最显著的特点,就是实用性和工具性很强,都是平时工作中经常用到的。参加培训的第一课时,我就专心致志地听讲,把学习内容与以前操作不规范或不熟练的地方进行对比,感觉学习效果很好,受益匪浅。特别是E_CEL的学习,因为平时用得比较少,掌握的也不多,不想去进一步的学习,所以对E_CEL的操作不熟悉。这一次正好帮我解决了这一问题。通过次培训,使我的E_CIL的操作有了新的认识,也掌握了几种 方法 。还有幻灯片的制作,原来从没有制作过,通过这次学习发现也不是想象中的那么难。简单的制作我已经基本上掌握。现在想起来这种培训是必要的,正所谓“磨刀不误砍柴工”。
正因为学习上有所收获,思想上也就豁然开朗起来。说实话,近几年,觉得自已也不再年轻了,还学什么啊?得过且过吧。虽然对待工作还是尽心尽力地去做,但对于学习的态度则是能应付就应付,不想应付就是偷点懒吧。因为这种思想的存在,在学习上的动力就不足了。通过这次培训,我觉得要改变这一错误的思想,想把各项工作做好,就必需要不断的学习,不断的充电,也只有不断的学习、充电,才能提高自已的工作能力。古人云,“活到老、学到老”,这句话是很有道理的。
计算机办公实训暂告一个段落,闲暇之余,我开始静静地长思。由于组织的信任,我从本学期中段到自律会工作。尽管我全力以赴,不辞辛苦,做了很多的工作,但我知道自已离“出色”还有很大的一段距离,离组织对我的期望还相去甚远。固然有能力、水平、 经验 、性格等原因,但是最重要的原因还是思想上的对学习不重视,导致了有的工作不能出色的完成。由于自律会工作的特殊性,要求工作人员思维严密、灵活应付,要能够迅速理解组织,领导的意图,沉着应对复杂的局面,为广大同学提供更优质的服务,这样才不致于在完成工作时,总是手忙脚乱、丢三落四。通过这次培训,我认识到只有沉下身来,静下心来认真学习,踏实做事,多用心,多动脑,才能让工作有好的起色。为我系的发展奉献我微薄的一份力量 社会的竞争是激烈的,我想我们应该好好把握住大学学习的时间,充实、完善自我,全面发展,攻破电脑,争取做一名出色的现代人!
计算机基础实训报告2
时间过得真快,转眼间为期一周的实训已经结束。经过这一周的实训练习让我们学到了许多知识,回头想想实训这几天我们确实是有很大收获的。
一周,看似很简短的时间,实际上按小时计算120小时却是个不小的数字,也许有些牵强。但是简短的时间仍是有效的,因为在这一周中我们学到了很多东西,并且接触了从没有制作过的文件和一些演示文稿。这一周我们在学习的同时,也进一步懂得了操作的重要性,实训过程中自己有很多的不懂,很多的问题,都是通过老师或同学的帮助完成的,这次实训让我明白了实训的主要目的是让我们同过不断的实习来积累经验,进而才能把书本的知识转换为技能。实践出真理,在这一周的实训确实有些累,不知从哪开始入手,但是累的有价值。学海无涯,有很多很多的东西在向我们招手,等待我们去努力的学习。在以后的工作、生活和学习中,发展自己的优势,弥补自己的不足和缺陷。
我们兴高采烈的进入到我们实训的计算机机房,打开各自的实训电脑,老师发来我们当天的实训内容。在操作中才知道自己会的只有书本上的知识,到实际操作时什么都不会。自己慢慢的从书上找,结果不是操纵不对就是做不出来结果不对,这些问题我和同学还有老师说过,在老师和同学的帮助下我知道自己的不足之处,并且我改正自己的不足并牢记它。
就这样,我们实训了一周,但是收获不小,在实训中改正自己操作中的不足之处,让我知道实际操作并不是那么简单,实际操作是需要牢固的基础知识,两者是不可分开的。
老师布置了一些的作业给我们操练,在老师精心的指导下我已把E_cel,word,网络,powerpoint等操作的很好了!现在我们已步入大学,经过半年的在校学习,对电脑还只是初步的认识和理解,但在这学期期间,一直忙于理论知识的学习,没能有机会放开课本,真正切身感受计算机魅力,所以在实训之前,电脑对我们来说是比较抽象的,但通过这次实训,我们揭开了她神秘的面纱,离我们不再遥远!据我了解,大多数同学都以前接触过电脑,也有玩过一些游戏,却不懂操作一些对我们以后工作有用的系统。对于我们所学的计算机知识渗透较少,之前都是老师操作为主。此次实训就不同了,同学们都作了充分准备,在活动中同学们都提前来到教室上课,每位同学都认真的操作、练习;听着“嗒嗒”的打字声,心里真的不亦乐乎!和我们一同参与实训的还有张尼奇老师和赵志茹老师,在实训中也分别给予了我们指导,并且做详细的讲解,这次实训活动十分成功,除了各位同学的充分准备,还要感谢学院和国际 教育 交流中心系的各位领导及专业老师,没有他们做出努力,给学生手操的平台。
经过这次的实训,我领悟到了任何东西都要“学以致用”,学习了还不行还要看自己掌握了没,掌握了还不行还要看自己熟练没,熟练了还不行还要作出一定的成果。这次的实训,让我们对电脑有了更深刻的认识,做二十一世纪现代人不但要有过硬的理论知识,良好的心理素质,健康的体魄,还要有超强的电脑操作能力、较广的社交圈和开阔的知识面,所以要把电脑作为一个重点来抓! 让我认识到静下心来认真学习,踏实做事,多用心,多动脑,才能让工作有好的起色。为教育事业奉献我微薄的一份力量
社会的竞争是激烈的,我想我们应该好好把握住大学学习的时间,充实、完善自我,全面发展,攻破电脑,争取做一名出色的现代人! 在此再次感谢学院领导和国际教育交流中心系的各位领导及专业老师给我们这次实训的机会,我们会再接再励,更努力的学习!
计算机上机实训的总结
一.实习目的:
本次CAD上机实习是为了利用计算机绘图软件autoCAD进行工程制图,把握auto CAD用于工程制图的基本操作,掌握该软件的基本使用方法,提高学生运用所学知识解决问题的能力,达到严谨工作科学素质的培养。
二、实习任务:
通过老师的讲解、演示及学生自己的实际上机操作,学生能够掌握AutoCAD的一些基本操作方法绘图命令、编辑方法、标注类型,具有一般工程制图的能力。
本次实习要求掌握以下几个方面:
1) 基本绘图方法
2) 基本编辑方法
3) 尺寸标注
4) 基本3D操作练习
三、实习时间:2013年12月30号——2014年1月3号
四、实习内容:
要点一:基本绘图方法
1、绘制直线(Line):
执行画线命令Line一次可画一条线段,也可以连续画多条线段。直线段是由起点和终点坐标来确定的,可以通过鼠标或键盘来决定起点和终点。
启动Line命令,可通过绘图工具栏中直线图标或在命令窗口输入 “Line”(或简称L)命令等方法。Line命令启动后,操作过程为:
第一步指定第一点(起点),然后指定第二点(或放弃),指定下一点(或放弃),指定下一点(闭合或放弃)指定下一点(闭合或放弃)。
从操作过程中可以看出,第一点给定后,只要输入下一点坐标,则可以连续划线;当开始画第三条线时,系统会增加提示闭合选项,这时如选择“C”,则最后一条线终点与第一点重合,构成一个闭合图形;如果过程中按下回车键(或取消键),则命令结束。
绘制直线时,点可以通过光标选定,也可以给出点的坐标。
2、绘制圆(Circle):
AutoCAD提供了几种画圆方式,圆心和半径(直径)定圆;两点(三点)定圆;相切、相切、半径定圆。这些是根据圆心、半径、直径和圆上的点等参数来控制的。
画圆的命令为Circle,下面简单地介绍圆心直径画圆和圆心半径画圆两种方法,Circle(简称C)命令启动后,操作过程为:
指定圆心;指定圆的半径[或直径]。
第一步指定圆心,若使用圆心半径画圆,则直接输入半径值,然后圆绘制完成,命令自动结束。第一步指定圆心后,若想使用直径画圆,则需输入“D”,然后提示指定圆的直径后,输入直径,则绘制圆,命令自动结束。
3、绘制圆弧 (Arc):
三点方式画弧:三点;起点、圆心、端点;起点、圆心、角度;起点、圆心、长度;
4、绘制椭圆(Ellipse):
中心和两轴端点方式;两轴方式;同样利用该命令可以指定任意角度的椭圆弧。
5、绘制多边形(Polygon):
内接方式;外切方式;边长个数。
6、绘制点(Point):
除了用point命令、用鼠标在坐标系中选点或输入坐标值画点之外,还可以在格式/点样式菜单项设置所画点的样式和大小。
要点二:基本编辑方法
对已经绘制的图形进行编辑,既可先选图形再进行编辑,也可先选命令再选择编辑目标,操作时可通过修改菜单、编辑工具栏、输入命令等方式。
图形编辑:
与手工绘图相比,采用AutoCAD绘图最突出的优点就是图形修改、增减十分方便,AutoCAD提供了强大的图形编辑工具,以便用户灵活快捷地修改、编辑图形。
下面对这些编辑命令的使用进行简单说明。
偏移命令一般是对指定的直线、圆弧、圆等对象作同心偏移复制, 其它 图形编辑命令名称与功能基本一致,在使用时根据提示操作,一
般不会出错。编辑命令的启动可通过点击按钮或输入命令名称等方法。下面对修剪、拉伸等命令的使用只做简要介绍。
AutoCAD提供了修剪命令,使得用户可以方便快速地利用边界对图形实体进行修剪。该命令要求用户首先定义一个剪切边界,然后再用此边界剪去实体的一部分。剪切边界可以使用窗口或交叉方式选择多个。
而拉伸命令则使用户可对图形进行拉伸(或压缩)。该命令要求用户首先选择实体目标,然后确定基点和终点,基点表示AutoCAD将实体目标从什么位置开始拉伸,终点表明选择的实体目标拉伸到什么新位置处。这里基点和终点是一个相对位置,拉伸(或压缩)实体时,必须使用交叉选择方式。
镜像命令一般是对对称图形进行快速操作的,选择镜像对象后,再选择镜像点即对称线,即可完成镜像命令。
旋转命令则是对已完成图形进行修改的命令,它可以对方向做错的图形快速修正或者对不易控制的角度进行调节,可以精确达到作图目标。
要点三:尺寸标注
尺寸标注的基础知识:
一个完整的尺寸应包括尺寸界线、尺寸线和尺寸数字三个基本要素。
计算机实训报告
一、实验目的
1. 熟悉Office软件的编辑制作环境;熟练掌握 PowerPoint演示文稿图形程序,掌握课件基本动态的设置和交互创建方法。
2.熟悉多媒体课件的开发流程,形成初步的多媒体课件的设计、开发能力; 提高学生的合作意识,培养学生创新能力。
二、实验环境
多媒体计算机; Windows _P 操作系统
三、实验内容
实验内容:利用PowerPoint程序设计与制作一个内容相对完整的自学演示型课件。结合自己的专业,选择了比较合适的教学内容,有利于让学生更好的接受该课程,更好的理解该课程教学的重难点,学习更多的知识。
四、操作步骤
1.首先准备好要做成模版的图片,打开PowerPoint并新建一个空白的文档。
2.视图→母版→幻灯片母版,进入母版编辑状态。??点击绘图工具栏上的“插入图
片”按钮(或按“插入→图片→来自文件”),选中要做为模版的图片,确定。并调整图片大小,使之与母版大小一致。 ??
3.在图片上点击鼠标右键,叠放次序→置于底层,使图片不能影响对母版排版的编辑。
4.幻灯片版式选择只有标题,然后进行文字编辑,再插入一张图片调整大小,然后叠放层次—置于顶层
5.插入新幻灯片,插入图片,在图片上点击鼠标右键,叠放次序→置于底层,选择标题和文本版式,进行文字编辑
6.插入新幻灯片,插入图片,在图片上点击鼠标右键,叠放次序→置于底层,选择标题和两栏文本版式,进行文字编辑
7.插入新幻灯片,插入图片,在图片上点击鼠标右键,叠放次序→置于底层,选择标题和文本版式,进行文字编辑
8.观看放映
9.保存
五、实验体会与总结
通过这次的实验操作,使我学会了利用Office软件的PowerPoint演示文稿
图形程序设计与制作一个内容相对完整的自学演示型课件,熟练掌握PowerPoint演示文稿图形程序的几种常用演示的制作方法;如何处理文字,图片,声音,动画及视频等,熟悉演示课件的开发流程,形成初步的多媒体课件的设计、开发能力;提高同伴之间的合作意识,培养自我的创新能力。
计算机实训报告范文
一、实训目的
1、 贯彻坚强实践环节和理论联系实际的教学原则,增加学生对专业感性认识的深广度,运用所学知识和技能为后续课程奠定较好的基础。
2、通过实习,开阔学生眼界和知识面,获得计算机硬件安装和系统维护的感性认识。与此同时安排适量的讲课或讲座,促进理论同实践的结合,培养学生良好的学风。
3、实习中进行专业思想与职业道德教育,使学生了解专业、热爱专业,激发学习热情,提高专业适应能力,初步具备职业道德观念。
4、通过对专业、行业、社会的了解,认识今后的就业岗位和就业形式,使学生确立学习方向,努力探索学习与就业的结合点,而发挥学习的主观能动性。
二、实训内容
实习的主要内容为计算机硬件组装,故障检测, BIOS 系统的设置,简单硬件故障的排除,硬件工作原理的了解,系统的安装与备份,系统还原,软件的安装与调试,系统维护等,并撰写实训报告。此次实训由专业教师陈莉莉、梁金宏同志负责。此次实训主要安排以下几个方面的任务:
1、 计算机硬件工作原理的了解,硬件之间的相互协调性了解。
2、 计算机硬件组装,故障检测与排除。
3、 BIOS系统设置
4、 硬盘的分区与格式化
5、 系统的安装、备份、还原
6、 常用软件的安装与调试,系统维护。
7、 撰写实训报告。
第一节:计算机组装维修
1.1计算机系统的基本组成及各部件的主要功能
1.1.1 计算机系统的基本组成
一个完整的计算机系统是由计算机硬件系统和计算机软件系统两部分组成。硬件是计算机的实体,又称为硬设备,是所有固定装置的总称。它是计算机实现其功能的物质基础,其基本配置可分为:主机、键盘、 显示器 、光驱、硬盘、软盘驱动器、打印机、鼠标等。软件是指挥计算机运行的程序集,按功能分系统软件和应用软件。如图1.2.1所示。
1.1.2 存储程序控制的基本概念
“存储程序控制”的概念,是美籍匈牙利数学家冯 · 诺伊曼等,如图1.2.2所示。于1946年提出的设计电子数字计算机的一些基本思想,概括起来有如下一些要点:
1. 由运算器、控制器、存储器、输入装置和输出装置五大基本
部件组成计算机,并规定了这五个部分的基本功能。
2. 采用二进制形式表示数据和指令。
3. 将程序和数据事先放在存储器中,使计算机在工作时能够自动
高速地从存储器中取出指令加以执行。这就是存储程序概念。
这样一些概念奠定了现代计算机的基本结构,并开创了程序设计的时代。半个多世纪以来,虽然计算机结构经历了重大的变化,性能也有了惊人的提高,但就其结构原理来说,至今占有主流地位的仍是以存储程序原理为基础的冯 · 诺依曼型计算机。如图1.2.3所示。
图1.2.2 冯 · 诺伊曼结构计算机
输入设备
控制器
运算器
存储器
输出设备
程序数据
结果
1.1.3 计算机硬件各部件的主要功能
计算机系统的硬件主要是由运算器、控制器、存储器、输入、输出设备等几部分组成。由于运算器、控制器、存储器三个部分是信息加工、处理的主要部件,所以把它们合称为“主机”,而输入、输出设备及存储器则合称为“外部设备”。又因为运算器和控制器不论在逻辑关系上或是在结构工艺上都有十分紧密的联系,往往组装在一起,所以将这两个部分称为“中央处理机”(CPU)。
下面对计算机硬件的几个基本部分作简单介绍。
1. 运算器
运算器是一个用于信息加工的部件,它用来对二进制的数据进行算术运算和逻辑运算,所以也叫做“算术逻辑运算部件”(ALU)。
它的核心部分是加法器。因为四则运算加、减、乘、除等算法都归结为加法与移位操作,所以加法器的设计是算术逻辑线路设计的关键。
2. 控制器
控制器产生各种控制信号,指挥整个计算机有条不紊地工作。它的主要功能是根据人们预先编制好的程序,控制与协调计算机各部件自动工作。控制器按一定的顺序从主存储器中取出每一条指令并执行,执行一条指令是通过控制器发出相应的控制命令串来实现的。因此,控制器的工作过程就是按预先编好的程序,不断地从主存储器取出指令、分析指令和执行指令的过程。
3. 存储器
存储器是用来存放指令和数据的部件。对存储器的要求是不仅能保存大量二进制信息,而且能快速读出信息,或者把信息快速写入存储器。一般对计算机存储系统划分为两级,一级为内存储器(主存储器),如半导体存储器,它的存取速度快,但容量小;另一级为外存储器(辅助存储器),如磁盘存储器,它的存储速度慢,但容量很大。在运算过程中,内存直接与CPU交换信息,而外存不能直接与 CPU交换信息,必须将它的信息传送到内存后才能由CPU进行处理,其性质和输入输出设备相同,所以一般把外存储器归属于外部设备。
4. 输入输出设备
输入输出设备是实现人与计算机之间相互联系的部件。其主要功能是实现人—机对话、输入与输出以及各种形式的数据变换等。
如前所述,计算机要进行信息加工,就要通过输入设备把原始数据和程序存入计算机的存储器中。输入设备的种类很多,如键盘、软磁盘、U盘、光盘等等。
输出设备是将计算机中的二进制信息转换为用户所需要的数据形式的设备。它将计算机中的信息以十进制、字符、图形或表格等形式显示或打印出来,也可记录在磁盘或光盘上。输出设备可以是打印机、CRT显示器、绘图仪、磁盘、光盘等等。它们的工作原理与输入设备正好相反,它是将计算机中的二进制信息转换为相应的电信号,以十进制或其它形式记录在媒介物上。许多设备既可以作为输入设备,又可以作为输出设备。
1.2 计算机软件
从广义上说,软件是指为运行、维护、管理、应用计算机所编制的所有程序合数据的总和。通常按功能分为系统软件和应用软件。
1.2.1 系统软件
所谓系统软件,就是用来扩大计算机的功能,提高计算机的工作效率以及方便用户使用计算机的软件,如操作系统、故障诊断程序、语言处理程序等。
操作系统是维持计算机运行的必备软件,它具有三大功能:管理计算机硬、软件资源,使之能有效地被应用;组织协调计算机各组成部分的运行,以增强系统的处理能力;提供各种实用的人机界面,为用户操作提供方便。操作系统软件包括进程管理、存储管理、设备管理、文件管理和作业管理等五个部分。
故障诊断程序负责对计算机设备的故障及对某个程序中的错误进行检测、辨认和定位,以便操作者排除和纠正。
编译程序将高级语言编写的源程序翻译成由机器语言组成的目标程序。高级语言是一种通用的程序设计语言,它不依赖于具体的计算机,具有较好的可移植性。但高级语言必须配置了相应的编译程序后才能在计算机上使用,例如C语言等。
事实上,系统软件正在迅速发展且日趋丰富,因此,计算机的功能越来越强,人机界面也更加友好。
计算机实训报告范文相关 文章 :
★ 计算机实训报告范文精选5篇
★ 计算机实习报告范文精选5篇
★ 计算机实习报告范文5篇
★ 计算机实训报告范文3篇
★ 计算机专业实习报告范文5篇
★ 2020计算机专业实习报告3000字范文5篇精选
★ 计算机实训总结5篇精选
★ 计算机实践报告优秀范文3篇
★ 计算机专业实习报告800字范文5篇
★ 大学生计算机专业实习报告范文5篇
var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = ""; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();
C语言课程设计实习报告 投票程序系统
#include iostream.h
main()
{int x,j,i,a2=0,b2=0,c2=0; //x投票人数 a b c分别代表三个候选人 a2 b2 c2分别是他们的得分
int max,p=0; // p作废票数
char m[100][4],w;
cout"请输入投票人数"endl;
cinx;
cout"请参加投票的人开始投票"endl;
for(i=0;ix;i++)
{
cout"第"i+1"个:";
for(j=0;j3;j++)
cinm[i][j];
}
for(i=0;ix;i++)
{
if(m[i][0]==m[i][1]||m[i][0]==m[i][2]||m[i][1]==m[i][2])
{
p++;
continue;
}
if(m[i][0]=='a') a2+=5;
else if(m[i][1]=='a') a2+=3;
else if(m[i][2]=='a') a2+=2;
if(m[i][0]=='b') b2+=5;
else if(m[i][1]=='b') b2+=3;
else if(m[i][2]=='b') b2+=2;
if(m[i][0]=='c') c2+=5;
else if(m[i][1]=='c') c2+=3;
else if(m[i][2]=='c') c2+=2;
}
max=a2;
w='a';
if(maxb2) {max=b2; w='b';}
if(maxc2) {max=c2; w='c';}
cout"今年足球先生是"wendl;
cout"得了"max"分,祝贺获得冠军"endl;
cout"作废票数为"pendl;
return 0;
}
我测试了 已经通过了
不好意思 我看了你的题目后 跟我刚才回答的题类似 就稍微的改动了一下给你
我按你的要求重写了一个 如何你的要求了 你看看
#include iostream.h
main()
{int x,j,i,a2=0,b2=0,c2=0; //x投票人数 a b c分别代表三个候选人 a2 b2 c2分别是他们的得分
int max;
char m[100][4],w;
cout"请输入投票人数"endl;
cinx;
cout"请参加投票的人开始投票"endl;
for(i=0;ix;i++)
{
cout"第"i+1"个:";
for(j=0;j3;j++)
cinm[i][j];
}
for(i=0;ix;i++)
if(m[i][0]==m[i][1]||m[i][0]==m[i][2]||m[i][1]==m[i][2])
{
cout"输入有误,请重新输入"endl;
cout"第"i+1"个:";
cinm[i][j];
}
for(i=0;ix;i++)
{
if(m[i][0]=='a') a2+=5;
else if(m[i][1]=='a') a2+=3;
else if(m[i][2]=='a') a2+=2;
if(m[i][0]=='b') b2+=5;
else if(m[i][1]=='b') b2+=3;
else if(m[i][2]=='b') b2+=2;
if(m[i][0]=='c') c2+=5;
else if(m[i][1]=='c') c2+=3;
else if(m[i][2]=='c') c2+=2;
}
max=a2;
w='a';
if(maxb2) {max=b2; w='b';}
if(maxc2) {max=c2; w='c';}
cout"今年足球先生是"wendl;
cout"得了"max"分,祝贺获得冠军"endl;
return 0;
}
C语言实习报告
C语言实习报告
一、实习目的
1。掌握在集成环境中编辑、编译、连接和运行C程序的方法。
(1)运行TC
(2)启动TC集成环境,输入一个源程序,编译并运行。
2。掌握单步执行、设置/去除断点,观察变量或表达式的值。
(3)在该程序中按CTRL+F7单步招待并在观察窗口中查看变量和表达式的值。
(4)设置/去除断点,继续调试。1、熟练掌握if.switch分支语句的使用。
2、熟练掌握for.while.do.while循环语句的使用。
3、熟练掌握函数的定义、说明、参数传递及嵌套和递归调用方法。
4、熟练掌握一维数组、二维数组、字符数组的定义、说明和使用方法。
熟练掌握结构体和指针的综合应用链表的操作
二、实习地点
北京交通干部管理学院计算机系机房十三号.
三、实习成果
熟练掌握TC集成环境的使用方法。认真编写实习报告和实习总结,描述实习操作和心得体会,总结在这次实习中的业务收获,作出自我评价。熟练掌握并应用TC程序设计的各个知识点。掌握结构体和指针的联合使用,学会链表的构造和常用操作方法,认真编写实习日志和实习体会。并通过各种途径查找所需资料,拓宽视野,培养自学能力。
四、实习心得
在短短一周的实习期间使我获取了不少新知识也巩固了许多老知识。我体会到了老师和同学们的热心帮助,无论面对学习中多大的困难,同学们都会帮助你,老师也会帮助你,大家就像兄弟姐妹一样。老师安排我们有具有的分工:
首先,在计算机机房里同学们积极的对C语言进行巩固与实习,老师热心的讲解同学们提出的问题和实习过程中应该注意的事项和同学们的任何。老师把我们分为几组,每一组十一个人,并且分配了具体的任务,在我们实习结束后每一组的同学都把自己组里的成果展示给大家一起分享,告诉大家编程的原理、方法等,使同学们既有动手能力,又能提高语言表达能力。
然后同学们把自到自己的小组里,大家具体分工,你编这道题,我编这道题……我们不会的地方就去问学习比较好一些的同学,或者去问老师,老师和同学们总是那么的热心,只要你还不明白,不论你问多少次,老师和同学们都会耐心地给你细心的讲解,直到讲会为止。
最后我们把每天收获到的知识和心得都以实习日志的形式写好,最后交给老师。我们把自己的成果交给老师,就这样,这次实习圆满结束。
这次实习是有益的,它不仅让我们学习到了C语言的知识,更让我们学习到了同学们之间的那种团队精神,为我以后踏入社会工作准备了很多良好的知识与经验。
(本人水平有限,我们也正好交报告,是我今天用了一下午的时间才写好的,希望对你有用!!)
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==0x%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日星期算法(百年%40)
其公式为:
某年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==0x%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;im;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;iy;i++)
sum+=numofYear(i);
for(i=1;im;i++)
sum+=numofMonth(y,i);
/* ++sum;*/
i=sum%7;
week=(week+i)%7;
return week;}
void empty(int n){
int i;
for(i=0;in;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;iy2;i++)
sum+=numofYear(i);
if(y1==y2){ sum-=d1;
for(i=m1;im2;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(sm0||sm3);
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=(inkey0xFF00)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;I5;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(ab);
printf(“a is larger than b\n”);
for(i=0;i10;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;i10;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〕大连理工大学出版