c语言源程序经典.docx
- 文档编号:8691914
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:48
- 大小:30.32KB
c语言源程序经典.docx
《c语言源程序经典.docx》由会员分享,可在线阅读,更多相关《c语言源程序经典.docx(48页珍藏版)》请在冰豆网上搜索。
c语言源程序经典
C语言课程设计源程序(精编)
第一天2
1输入学生成绩并显示2
2显示输入数据3
3日历源程序3
第二天4
字符排序4
第三天5
指法练习5
第四天7
汉诺塔
(2)7
第五天11
排序
(2)11
第六天17
模拟时钟(3)17
第七天26
1贪吃蛇游戏26
2学生管理系统31
第一天
1输入学生成绩并显示
#include
structstudent
{
charnumber[6];
charname[6];
intscore[3];
}stu[2];
voidoutput(structstudentstu[2]);
voidmain()
{
inti,j;
for(i=0;i<2;i++)
{
printf("请输入学生%d的成绩:
\n",i+1);
printf("学号:
");
scanf("%s",stu[i].number);
printf("姓名:
");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{
printf("成绩%d.",j+1);
scanf("%d",&stu[i].score[j]);
}
printf("\n");
}
output(stu);
}
voidoutput(structstudentstu[2])
{
inti,j;
printf("学号姓名成绩1成绩2成绩3\n");
for(i=0;i<2;i++)
{
printf("%-6s%-6s",stu[i].number,stu[i].name);
for(j=0;j<3;j++)
printf("%-8d",stu[i].score[j]);
printf("\n");
}
}
2显示输入数据
#include
#defineA"***"
#defineB"**"
#defineC"*"
#defineD"*"
main()
{staticchar*head[5][10]={{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}};
intnum,i,j;
charstr[5];
scanf("%d",&num);
itoa(num,str,10);
for(i=0;i<5;i++)
{printf("%10s","");
for(j=0;j<4;j++)
printf("%s",head[i][str[j]-'0']);
putchar('\n');
}}_
3日历源程序
#include
main()
{intweek,day,month,maxday;
intyear;
inti;
printf("inputyearandmonth");
scanf("%d%d",&year,&month);
printf("inputweekdayanddaysum:
");
scanf("%d%d",&week,&maxday);
printf("\n============%dyear%2dmonth================\n",year,month);
printf("SUNMONTUEWEBTURFRISAT\n");
for(i=0;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; intcount; { registerintm,n; registerchars; for(m=1;m for(n=count-1;n>=m;--n) { if(strings[n-1]>strings[n]) { s=strings[n-1]; strings[n-1]=strings[n]; strings[n]=s; } } } intmain(void) { intcount; charstr[200]; printf("请输入字符串: \n"); gets(str); count=strlen(str); bubble(str,count); printf("排序之后的字符串是: \n"); printf("%s.\n",str); return0; } 第三天 指法练习 /*模拟指法测试程序: 完成输入文字后,统计输入的正确率和输入速度。 */ #include #include #include #defineSIZE30 win() { clrscr(); gotoxy(20,2);printf("*------------------------------*"); gotoxy(20,3);printf("*FingeringTrainingSystem*"); gotoxy(20,4);printf("*DesignedByPrOve*"); gotoxy(20,5);printf("*2005-09-06*"); gotoxy(20,6);printf("*------------------------------*"); gotoxy(16,7);printf("...PressanykeytoentrytheSystem..."); getch(); clrscr(); gotoxy(5,2);printf("Inputoriginaltext: \n"); gotoxy(5,22);printf("------------------------------------------------------"); gotoxy(5,23);printf("CorrectRate: %"); gotoxy(33,23);printf("Speed: w/s"); } main() { charo1[150],o2[SIZE],o3[SIZE],o4[SIZE];/*每一行原文,最多150字符*/ chari1[150],i2[SIZE],i3[SIZE],i4[SIZE];/*每一行输入*/ inti; longerror=0,correct=0; floatcrate; doublespeed; doubleti; charflag; structtimet1,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("StartNow! \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 { if(o1[i]! =i1[i]) 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("ContinueorNot(Y/N)? "); flag=getch(); if(flag=='y'||flag=='Y') gotostart; else { clrscr(); gotoxy(26,7);printf("Welcometouse! "); gotoxy(19,8);printf("...Pressanykeytoexit..."); getch(); exit (1); } getch(); } 第四天 汉诺塔 (2) #include #include chardd[10][20],space[20]; inta[11],b[11],c[11]; init() { inti,j; for(i=0;i<20-1;i++)space[i]=''; space[i]='\0'; for(i=0;i<10;i++) {for(j=0;j<20-1;j++)dd[i][j]=''; dd[i][j]='\0'; for(j=9-i;j<=9+i;j++)dd[i][j]='a'+i; } for(i=0;i<10;i++)a[i]=i,b[i]=-1,c[i]=-1; a[10]=2,b[10]=25,c[10]=50; for(i=0;i<10;i++) {gotoxy(a[10],10+i); cprintf("%s",dd[i]); } } move(int*s,int*d) {inti,j; for(i=0;s[i]==-1&&i<10;i++); gotoxy(s[10],10+i); cprintf("%s",space); for(j=0;d[j]==-1&&j<10;j++); j--; gotoxy(d[10],10+j); cprintf("%s",dd[s[i]]); d[j]=s[i];s[i]=-1; getche(); } voidhanoi(intn,int*s,int*w,int*d) {inti; if(n==1)move(s,d); else {hanoi(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 structH { intdata[15];/*存放每个盘的代号*/ inttop;/*每个塔的具体高度*/ }num[3];/*三个塔*/ voidmove(charx,chary,structHnum[3]);/*移动的具体过程*/ voidhanoi(charx,chary,charz,intn,structHnum[3]);/*递归*/ voidInit(void);/*初始化*/ voidClose(void);/*图形关闭*/ intcomputer=1;/*自动控制与手动控制的标志*/ intspeed=0;/*全局变量speed主要是演示过程的速度*/ voidmain(void) { Init();/*初始状态*/ Close();/*图形关闭*/ exit(0); } voidInit(void)/*初始化*/ { intgd=DETECT,gm; inti,n,color; clrscr(); printf("pleaseinputn(n<=10): ");/*输入要演示的盘子数*/ scanf("%d",&n); printf("Pleaseinput1or2: \puter2.people\n"); scanf("%d",&i); if(i==2)/*选择手动控制标志为0*/ computer=0; if(n<1||n>10) n=10;/*越界的话n当10处理*/ if(computer)/*如果是自动控制的话输入速度*/ { printf("pleaseinputspeed: ");/*输入速度*/ scanf("%d",&speed); } initgraph(&gd,&gm,"c: \\tc"); cleardevice(); for(i=0;i<3;i++) num[i].top=-1;/*三个地方的高度开始都为-1*/ for(i=0;i { num[0].top++;/*栈的高度加1*/ num[0].data[num[0].top]=i;/*最大的盘子代号为0,依次为1,2,…n-1*/ color=num[0].data[num[0].top]+1;/*盘子的颜色代码为栈顶盘子代号加1*/ setfillstyle(SOLID_FILL,color); bar(100-(33-3*num[0].data[num[0].top]),400-20*i-8,100+ (33-3*num[0].data[num[0].top]),400-20*i+8);/*画矩形*/ } setcolor(YELLOW); outtextxy(180,450,"anykeytocontinue"); settextstyle(0,0,2); outtextxy(90,420,"A");/*塔座标志*/ outtextxy(240,420,"B"); outtextxy(390,420,"C"); getch();/*接收字符后就执行递归操作*/ hanoi('a','b','c',n,num); } voidmove(charx,chary,structHnum[3])/*移动的具体过程*/ { inti; charnum1[3],num2[3]; sprintf(num1,"%c",x-32);/*将小写变成大写,并转换成字符串输出*/ sprintf(num2,"%c",y-32); setfillstyle(SOLID_FILL,BLACK);/*把原来的地方移去涂黑*/ bar(0,0,640,60); setcolor(RED); outtextxy(150,30,num1);/*输出移动过程*/ outtextxy(200,30,"--->"); outtextxy(310,30,num2); settextstyle(0,0,2); setfillstyle(SOLID_FILL,BLACK);/*把原来的地方移去涂黑*/ bar(100+150*(x-97)-(33-3*num[x-97].data[num[x-97].top]), 400-20*num[x-97].top-8,100+150*(x-97)+(33-3* num[x-97].data[num[x-97].top]),400-20*num[x-97].top+8); num[y-97].top++;/*入栈,目标点的top加1*/ num[y-97].data[num[y-97].top]=num[x-97].data[num[x-97].top];/*在目标点盘子的代号与源点盘子的代号相同*/ num[x-97].top--;/*出栈,原来地方的top减1*/ setfillstyle(SOLID_FILL,num[y-97].data[num[y-97].top]+1);/*盘子颜色代码是栈顶盘子代号加1*/ bar(100+150*(y-97)-(33-3*num[y-97].data[num[y-97].top]), 400-20*num[y-97].top-8,100+150*(y-97)+ (33-3*num[y-97].data[num[y-97].top]),400-20*num[y-97].top+8); if(computer)/*自动控制就用delay*/ delay(speed);/*延时函数*/ else getch();/*手动控制的话就自己按键盘来控制*/ } voidhanoi(charone,chartwo,charthree,intn,structHnum[3])/*递归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*/ } } voidClose(void)/*图形关闭*/ { getch(); closegraph(); } _ 第五天 排序 (2) /*1.源程序*/--------------------------冒泡排序法 #include #include #defineN8/*定义排序数据为8个*/ voidInit(inta[]);/*初始状态*/ voidClose(void);/*图形模式结束*/ voidPr(inta[],intn);/*输出数组*/ voidDrawChange(inti,intj);/*画交换箭头*/ voidBubble_sort(inta[],intn);/*冒泡排序*/ voidmain(void) { inti,a[N]; printf("Pleaseenter8intnumber\n");/*输入8个整数*/ for(i=0;i scanf("%d",&a[i]); Init(a);/*初始状态*/ Bubble_sort(a,8);/*具体排序*/ Close();/*图形模式结束*/ exit(0); } voidInit(inta[])/*初始状态*/ { intgd=DETECT,gm,i; initgraph(&gd,&gm,"");/*初始化图形系统*/ cleardevice();/*清屏*/ setcolor(YELLOW);/*设置颜色*/ outtextxy(210,10,"anykeytocontinue");/*显示压任意键继续*/ Pr(a,40);/*第一次输出数组*/ getch();/*等待压任意键*/ } voidClose(void)/*图形模式结束*/ { getch();/*等待压任意键*/ closegraph();/*关闭图形模式*/ } voidPr(inta[],intn)/*输出数组*/ { inti; charnum[5]; settextstyle(0,0,2);/*设置输出样式*/ setcolor(GREEN);/*设置输出颜色*/ for(i=100;i<500;i+=50)/*i控制显示位置和计算数组下标*/ { sprintf(num,"%d",a[(i-100)/50]);/*将数值转化为字符串*/ outtextxy(i,n,num);/*输出字符串*/ } } voidDrawChange(inti,intj)/*画交换箭头,画五根线组成一双向箭头线*/ { 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,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 源程序 经典