[计算机类论文精品]C语言课程设计源程序.doc_第1页
[计算机类论文精品]C语言课程设计源程序.doc_第2页
[计算机类论文精品]C语言课程设计源程序.doc_第3页
[计算机类论文精品]C语言课程设计源程序.doc_第4页
[计算机类论文精品]C语言课程设计源程序.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

c语言课程设计源程序第一天21输入学生成绩并显示22显示输入数据33日历源程序3第二天4字符排序4第三天5指法练习5第四天7汉诺塔(2)7第五天11排序(2)11第六天17模拟时钟(3)17第七、八、九天261贪吃蛇游戏262学生管理系统31第一天1输入学生成绩并显示 # include struct studentchar number6;char name6;int score3; stu2;void output(struct student stu2);void main()int i, j;for(i=0; i2; i+)printf(请输入学生%d的成绩:n, i+1);printf(学号:);scanf(%s, stui.number);printf(姓名:);scanf(%s, );for(j=0; j3; j+)printf(成绩 %d. , j+1);scanf(%d, &stui.scorej);printf(n);output(stu);void output(struct student stu2)int i, j;printf(学号 姓名 成绩1 成绩2 成绩3n); for(i=0; i2; i+)printf(%-6s%-6s, stui.number, );for(j=0; j3; j+)printf(%-8d, stui.scorej);printf(n);2显示输入数据#include#define a * * *#define b * *#define c * #define d *main()static char *head510=a,d,a,a,b,a,a,a,a,a,b,d,d,d,b,c,c,d,b,b,b,d,a,a,a,a,a,d,a,a,b,d,c,d,d,d,b,d,b,d,a,d,a,a,d,a,a,d,a,a;int num,i,j;char str5;scanf(%d,&num);itoa(num,str,10);for(i=0;i5;i+)printf(%10s, );for(j=0;j4;j+) printf(%s ,headistrj-0); putchar(n); 3日历源程序#includemain()int week,day,month,maxday;int year;int i;printf(input year and month);scanf(%d%d,&year,&month);printf(input weekday and daysum:);scanf(%d%d,&week,&maxday);printf(n=%d year%2d month=n,year,month);printf( sun mon tue web tur fri satn);for(i=0;iweek;i+)printf(%4c,);for(day=1;day=maxday;day+) printf(%4d,day); week=(week+1)%7; if(week=0) printf(n); 第二天字符排序输入一个字符串,可将字符串中的字符由小到大排列#include #include bubble(strings,count)char *strings;int count;register int m,n;register char s;for(m = 1;m= m;-n)if(stringsn-1stringsn)s = stringsn-1;stringsn-1 = stringsn;stringsn = s;int main(void)int count;char str200;printf(请输入字符串:n);gets(str);count = strlen(str);bubble(str,count);printf(排序之后的字符串是:n);printf(%s.n,str);return 0;第三天指法练习/*模拟指法测试程序: 完成输入文字后,统计输入的正确率和输入速度。*/#include#include#include#define size 30win() clrscr(); gotoxy(20,2);printf(*-*); gotoxy(20,3);printf(* fingering training system *); gotoxy(20,4);printf(* designed by prove *); gotoxy(20,5);printf(* 2005-09-06 *); gotoxy(20,6);printf(*-*); gotoxy(16,7);printf(.press any key to entry the system.); getch(); clrscr(); gotoxy(5,2);printf(input original text:n); gotoxy(5,22);printf(-); gotoxy(5,23);printf( correctrate:%); gotoxy(33,23);printf(speed: w/s);main() char o1150,o2size,o3size,o4size;/*每一行原文,最多150字符*/ char i1150,i2size,i3size,i4size;/*每一行输入*/ int i; long error = 0,correct = 0; float crate; double speed; double ti; char flag; struct time t1,t2; start:win(); gotoxy(5,4);printf(-); gotoxy(5,3);gets(o1); gotoxy(5,6);printf(-); gotoxy(5,5);gets(o2);strcat(o1,o2); gotoxy(5,8);printf(-); gotoxy(5,7);gets(o3);strcat(o1,o3); gotoxy(5,10);printf(-); gotoxy(5,9);gets(o4);strcat(o1,o4); gotoxy(5,11);printf(start now!n); gotoxy(5,13);printf(-); gettime(&t1); /*计时开始*/ gotoxy(5,12);gets(i1); gotoxy(5,15);printf(-); gotoxy(5,14);gets(i2);strcat(i1,i2); gotoxy(5,17);printf(-); gotoxy(5,16);gets(i3);strcat(i1,i3); gotoxy(5,19);printf(-); gotoxy(5,18);gets(i4);strcat(i1,i4); gettime(&t2);/*计时结束*/ for(i = 0;i strlen(o1);i+) if(o1i != i1i) error+; else correct+; crate =(float) correct / (float)strlen(i1) * 100; ti = (double)(t2.ti_hour * 3600 + t2.ti_min * 60 + t2.ti_sec ) - (t1.ti_hour * 3600 + t1.ti_min * 60 + t1.ti_sec ); speed = (double)strlen(i1) / (double)ti; gotoxy(20,23);printf(%f,crate); gotoxy(40,23);printf(%lf,speed); gotoxy(5,20);printf(continue or not(y/n) ?); flag = getch(); if(flag = y | flag = y) goto start; else clrscr(); gotoxy(26,7);printf(welcome to use!); gotoxy(19,8);printf(.press any key to exit.); getch(); exit(1); getch(); 第四天汉诺塔(2)#include #include char dd1020,space20;int a11,b11,c11;init()int i,j;for(i=0;i20-1;i+) spacei= ;spacei=0;for(i=0;i10;i+) for(j=0;j20-1;j+)ddij= ; ddij=0; for(j=9-i;j=9+i;j+)ddij=a+i;for(i=0;i10;i+) ai=i,bi=-1,ci=-1;a10=2,b10=25,c10=50;for(i=0;i10;i+)gotoxy(a10,10+i);cprintf(%s,ddi);move(int *s,int *d) int i,j; for(i=0;si=-1&i10;i+); gotoxy(s10,10+i); cprintf(%s,space); for(j=0;dj=-1&j10;j+); j-; gotoxy(d10,10+j); cprintf(%s,ddsi); dj=si;si=-1; getche();void hanoi(int n,int *s,int *w,int *d)int i;if(n= =1)move(s,d);elsehanoi(n-1,s,d,w);move(s,d);hanoi(n-1,w,s,d);main()clrscr();init();getche();hanoi(10,a,b,c);getche();/* 源程序2*/*汉诺塔2*/#include struct h int data15;/*存放每个盘的代号*/ int top;/*每个塔的具体高度*/num3;/*三个塔*/void move(char x,char y,struct h num3);/*移动的具体过程*/void hanoi(char x,char y,char z,int n,struct h num3);/*递归*/void init(void);/*初始化*/void close(void);/*图形关闭*/int computer=1;/*自动控制与手动控制的标志*/int speed=0;/*全局变量speed主要是演示过程的速度*/void main(void) init();/*初始状态*/ close();/*图形关闭*/ exit(0);void init(void)/*初始化*/ int gd=detect,gm; int i,n,color; clrscr(); printf(please input n(n=10): );/*输入要演示的盘子数*/ scanf(%d,&n); printf(please input 1 or 2:puter 2.peoplen); scanf(%d,&i); if(i=2)/*选择手动控制标志为0*/ computer=0; if(n10) n=10;/*越界的话n当10处理*/ if(computer)/*如果是自动控制的话输入速度*/ printf(please input speed: );/*输入速度*/ scanf(%d,&speed); initgraph(&gd,&gm,c:tc); cleardevice(); for(i=0;i3;i+) numi.top=-1;/*三个地方的高度开始都为-1*/ for(i=0;i); outtextxy(310,30,num2); settextstyle(0,0,2); setfillstyle(solid_fill,black);/*把原来的地方移去涂黑*/ bar(100+150*(x-97)-(33-3*numx-97.datanumx-97.top),400-20*numx-97.top-8,100+150*(x-97)+(33-3*numx-97.datanumx-97.top),400-20*numx-97.top+8); numy-97.top+;/*入栈,目标点的top加1*/ numy-97.datanumy-97.top=numx-97.datanumx-97.top;/*在目标点盘子的代号与源点盘子的代号相同*/ numx-97.top-;/*出栈,原来地方的top减1*/ setfillstyle(solid_fill,numy-97.datanumy-97.top+1);/*盘子颜色代码是栈顶盘子代号加1*/ bar(100+150*(y-97)-(33-3*numy-97.datanumy-97.top),400-20*numy-97.top-8,100+150*(y-97)+(33-3*numy-97.datanumy-97.top),400-20*numy-97.top+8); if(computer)/*自动控制就用delay*/ delay(speed);/*延时函数*/ else getch();/*手动控制的话就自己按键盘来控制*/void hanoi(char one,char two,char three,int n,struct h num3)/*递归n为盘子数,num为堆栈*/ if(n=1) move(one,three,num);/*如果盘子为1,将这个盘子从塔座a移动到塔座c*/ else hanoi(one,three,two,n-1,num);/*将塔座a的前n-1个盘子移到塔座b*/ move(one,three,num);/*将塔座a的第n个盘子移到塔座c*/ hanoi(two,one,three,n-1,num); /*将塔座b的n-1个盘子移到塔座c*/ void close(void)/*图形关闭*/ getch(); closegraph();第五天排序(2)/*1. 源程序*/-冒泡排序法#include # include #define n 8 /*定义排序数据为8个*/void init(int a);/*初始状态*/void close(void);/*图形模式结束*/void pr(int a,int n);/*输出数组*/void drawchange(int i,int j);/*画交换箭头*/void bubble_sort(int a,int n);/*冒泡排序*/void main(void) int i,an; printf(please enter 8 int numbern); /*输入8个整数*/ for(i=0;in;i+) scanf(%d,&ai); init(a);/*初始状态*/ bubble_sort(a,8);/*具体排序*/ close();/*图形模式结束*/ exit(0);void init(int a)/*初始状态*/ int gd=detect,gm,i; initgraph(&gd,&gm,);/*初始化图形系统*/ cleardevice(); /*清屏*/ setcolor(yellow); /*设置颜色*/ outtextxy(210,10,any key to continue); /*显示压任意键继续*/ pr(a,40);/*第一次输出数组*/ getch(); /*等待压任意键*/void close (void) /*图形模式结束*/ getch(); /*等待压任意键*/ closegraph(); /*关闭图形模式*/void pr(int a,int n)/*输出数组*/ int i; char num5; settextstyle(0,0,2); /*设置输出样式*/ setcolor(green); /*设置输出颜色*/ for(i=100;i500;i+=50)/*i控制显示位置和计算数组下标*/ sprintf(num,%d,a(i-100)/50); /*将数值转化为字符串*/ outtextxy(i,n,num); /*输出字符串*/ void drawchange(int i,int j)/*画交换箭头,画五根线组成一双向箭头线*/ setcolor(6); line(j*50+120,i+8,j*50+140,i+8); /*按给出的坐标位置画直线*/ line(j*50+120,i+8,j*50+120+5,i+4); line(j*50+120,i+8,j*50+120+5,i+12); line(j*50+140,i+8,j*50+140-5,i+4); line(j*50+140,i+8,j*50+140-5,i+12);void bubble_sort(int a,int n)/*冒泡排序*/ int i,j,t,flag; char num15,num25; for(i=0;in-1;i+)/*冒泡排序*/ flag=0; /*设置数据交换标志*/ for(j=0;jaj+1)/*如果前面的大于后面的*/ flag=1; /*置交换标志*/ drawchange(i*40+80,j);/*画交换箭头*/ setcolor(red); outtextxy(100+j*50,i*40+80,num1); outtextxy(100+(j+1)*50,i*40+80,num2); t=aj;/*交换*/ aj=aj+1; aj+1=t; sleep(1); setfillstyle(solid_fill,black);/*黑巨型的方式把这行给删除*/ bar(0,i*40+60,640,i*40+100); pr(a,i*40+80); /*输出数*/ sleep(1); if(flag=0)break; /*如果本次比较没有发生交换则跳出循环*/ /*2. 源程序*/-/*二分查找程序*/#include #include #define n 15 /*结点数设为15*/void find(int x,int y,int z);/*具体查找过程*/void init(int x,int *n);/*图形初始化*/void close();/*图形关闭*/void put(int x,int y);/*输出数值*/void up(int x);/*画上箭*/void down(int x);/*画下箭*/void mid(int x);/*画中间箭*/void clr(int x);/*擦除画面上的一些内容*/void sort(int x,int n);/*对随机数组排序*/void main(void) int an,x; init(a,&x);/*x为要查找的数*/ put(a,n); find(a,x,n); close(); exit(0);void mid(int n)/*画中间键*/ setcolor(white);/*中间箭的颜色为白色,以下三条线画成了箭头,以下两个函数一样*/ line(25+n*40,120,25+n*40,80); line(25+n*40,120,20+n*40,110); line(25+n*40,120,30+n*40,110);void down(int n)/*画上箭*/ setcolor(6); line(25+n*40,120,25+n*40,80); line(25+n*40,120,20+n*40,110); line(25+n*40,120,30+n*40,110);void up(int n)/*画下箭*/ setcolor(6); line(25+n*40,180,25+n*40,220); line(25+n*40,180,20+n*40,190); line(25+n*40,180,30+n*40,190);void clr(int y)/*擦除画面上的一些内容*/ setfillstyle(solid_fill,0);/*每次演示的时候先将下面显示的文字给去处掉*/ bar(0,y+50,640,y-50);/*这里是用矩形的方式*/void put(int a,int n)/*输出数值*/ int i; char num5; setcolor(green); settextstyle(0,0,2);/*设置字体的大小*/ for(i=0;in;i+) sprintf(num,%d,ai);/*将数字转换成字符串输出*/ outtextxy(20+i*40,150,num); settextstyle(0,0,1); setcolor(blue); outtextxy(250,250,anykey to continue); getch();void find(int a,int y,int n)/*具体的查找*/ int low,high,mid,i; char str15,str25; sprintf(str1,%d,y); low=0; high=n-1; setcolor(red); settextstyle(0,0,2); outtextxy(200,10,find); outtextxy(330,10,str1); while(low=high) clr(250); clr(80); clr(230);/*这里三个clr是为了把屏幕上的箭头和文字删了*/ mid=(high+low)/2;/*计算中间位置*/ up(high); /*显示上边箭头*/ down(low); /*显示右边箭头*/ mid(mid);/*画好了三个箭头后开始查找*/ if(amid=y) /*如果找到跳出循环*/ break; if(amidy) low=mid+1; /*修改左边界*/ sprintf(str2,%d,amid); outtextxy(250,250,str2); /*显示比较数据的情况*/ outtextxy(300,250,); outtextxy(350,250,str1); sleep(2);/*间隔一秒好执行下一次*/ setcolor(11); if(low=high)/*找到*/ outtextxy(250,350,find); else/*没找到*/ outtextxy(250,350,not find);void sort(int a,int n)/*冒泡排序,自上而下*/ int i,j,t; for(i=0;in-1;i+) for(j=0;jaj+1) t=aj; aj=aj+1; aj+1=t; /*数据交换*/void init(int a,int *x)/*图形驱动*/ int i; int gd=detect,gm; randomize();/*随机函数*/ for(i=0;in;i+)/*随机生成数组*/ ai=random(100); /*生成100以内的数*/ sort(a,n);/*排序*/ for(i=0;i=1;i-) alpha=(a0+30*(11-i)*pi/180); x=x0+cos(alpha)*r0-16; y=y0-sin(alpha)*r0; sprintf(s,%2d,i); settextstyle(0,0,2); outtextxy(x,y,s); /*input second*/ for(i=60;i=1;i-) alpha=(a0+6*(60-i)*pi/180); x=x0+cos(alpha)*(r0-20); y=y0-sin(alpha)*(r0-20); setcolor(14); if(i%5=0) circle(x,y,5); else circle(x,y,2); floodfill(x,y,14); setlinestyle(0,0,3); void sec(void) /*/ int x,y,i,j,k,xj,yj,xk,yk,xi,yi,x0=320,y0=240,r0=150; union regs r; unsigned char *shijie=; unsigned char *daa=; struct time tim; struct date dat; float alphai,alphak,alphaj,a0=90; xi=x0;yi=y0;xj=x0;yj=y0;xk=x0;yk=y0; do /*intput the time*/ x=38;y=12; gettime(&tim); sprintf(shijie,%02d:%02d:%02d,tim.ti_hour,tim.ti_min,tim.ti_sec); setfillstyle(solid_fill,0); bar(245,190,375,210); setcolor(15); outtextxy(245,190,shijie); /*input the date*/ /*/ getdate(&dat); sprintf(daa,%02d-%02d-%02d,dat.da_year,dat.da_mon,dat.da_day); /*setfillstyle(solid_fill,3);*/ bar(225,290,395,310); setcolor(red); outtextxy(225,290,daa); x=190;y=430; setcolor(red); outtextxy(x-26,y,designed by guoliuta0); setcolor(lightred); outtextxy(x+76,y0+20,nba game); setlinestyle(0,0,3); k=tim.ti_hour; j=tim.ti_min; i=tim.ti_sec; alphak=(a0+30*(12-k)-j*5/60.*6)*pi/180; alphaj=(a0-6*j)*pi/180; /*write second hand*/ alphai=(a0+6*(60-i)*pi/180; x=x0+cos(alphai)*(r0-32); y=y0-sin(alphai)*(r0-32); setcolor(black); line(x0,y0,xi,yi); setcolor(yellow); line(x0,y0,x,y); xi=x; yi=y; /*write minute hand*/ x=x0+cos(alphaj)*(r0-60); y=y0-sin(alphaj)*(r0-60); setcolor(black); line(x0,y0,xj,yj); setcolor(blue); line(x0,y0,x,y); xj=x; yj=y; /*write hour hand*/ x=x0+cos(alphak)*(r0-99); y=y0-sin(alphak)*(r0-99); setcolor(black); line(x0,y0,xk,yk); setcolor(red); line(x0,y0,x,y); xk=x; yk=y; delay(10000); while(!kbhit(); 模拟时钟2:源代码#include#include#include#includeint x1;int y1;#define pi 3.1415926int sec8=0,-180,8,-50,-8,-50,-8,-50;/*定义秒针的初始位置*/int min8=0,-150,20,-125,0,-142,-20,-125;/*定义分针的初始位置*/int hor8=0,-180,5,-155,0,-160,-5,-155;/*定义时针的初始位置*/struct time ttime,t;main()int gd=vga,gm=vgahi,m;void secminhor(int,int posi8,int,int,int);/*根据系统时间画出秒、分、时针*/void mytmkd(void);/*画出表盘*/void hitc(void);/*画出撞钟*/void secsound();/*秒针走动时的响声*/void horsound();/*整点报时的声音*/void hitmood();/*画出撞钟的木头*/void bright();/*当秒钟指向表盘上的圆时,圆发出黄色亮光*/void digsec(int);/*在圆中用数字显示秒数*/ initgraph(&gd,&gm,); x1=get

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论