C语言课程设计源程序.docx

上传人:b****4 文档编号:4738053 上传时间:2022-12-08 格式:DOCX 页数:47 大小:30.06KB
下载 相关 举报
C语言课程设计源程序.docx_第1页
第1页 / 共47页
C语言课程设计源程序.docx_第2页
第2页 / 共47页
C语言课程设计源程序.docx_第3页
第3页 / 共47页
C语言课程设计源程序.docx_第4页
第4页 / 共47页
C语言课程设计源程序.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

C语言课程设计源程序.docx

《C语言课程设计源程序.docx》由会员分享,可在线阅读,更多相关《C语言课程设计源程序.docx(47页珍藏版)》请在冰豆网上搜索。

C语言课程设计源程序.docx

C语言课程设计源程序

C语言课程设计源程序

第一天

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,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);

}

voidBubble_sort(inta[],intn)/*冒泡排序*/

{

inti,j,t,flag;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1