C语言猜数游戏实验报告

C语言猜数游戏实验报告


2024年5月4日发(作者:)

一、 课程设计的目的...........................................2

二、 设计的内容与要求.........................................2

三、 总体设计.................................................2

四、 详细设计.................................................3

五、 调试与测试...............................................9

六、 课程设计的总结...........................................12

七、 附录.....................................................13

1

在本次的课程设计中,由我和肖玉闫合作完成,我主要负责编写程序。

对于流程图我主要负责:产生随机数函数,成绩判断函数,用户输入函数,排序函数,比较

函数。

一、 课程设计的目的

1. 巩固和加深学生对C语言课程的基本知识的理解和掌握

2. 掌握C语言编程和程序调试的基本技能

3. 利用C语言进行基础的软件设计

4. 提高运用C语言解决实际问题的能力

二、 设计的内容与要求

1. 随机产生一个五位数,且没有重复数字

2. 猜数是给出大小提示

3. 记录猜数的次数,最后给出评分

三.总体设计

(1)整个猜数游戏分为3个模块:

1.开始游戏;

2.帮助界面,介如何进行游戏;

3.退出游戏。

(2)算法描述:

1.主函数main():清屏之后运行fun函数;

2.随机数函数rn():产生一个没有重复数字的五位随机数;

3.排序函数choise():对数组进行排序;

4.用户输入函数input():用户可以输入一个五位数;

5.比较函数compare():对用户输入的五位数与系统产生的五位数进行比较;

6.成绩函数grade():根据用户输入的次数进行打分;

7.欢迎界面函数welcome():打印出一个欢迎界面;

8.选择执行函数fun():根据用户的选择来执行对应的功能;

2

四.详细设计

数据的组织描述,系统控制流程图,程序的代码的对应解释。

main()函数

清屏

打印欢迎界面

getch()

fun()

结束

3

rn函数

int b,d;long int c;

unsigned long int a;int array[5]

a接收产生的随机数;c=a

将c的各个位上的数字

放入数组array[5]中

用choise函数对array进行排序

判断array数组的各个数是否相同

return a

结束

4

choise函数(int *num,int n)

int j,k;

i=1

k=num[i];j=i-1

j>0&&num[i]>k?

num[j+1]=num[j];

j--;

num[j+1]=k

结束

5

input函数(long int a)

int c=0;long int b

输出打印相应提示

输出打印次数:c+1;

用户输入五位数,用b接收;

c++;

给出失败

c>67?

提示;

gc();

b=0?

fun函数

compare(a,b)=1?

retun c

结束

6

compare函数(long int a,long int b)

int c

是 给出大

a>b?

于提示;

c=0

是 给出小

a

于提示;

c=0

a=b?

给出等

于提示;

c=1

return c

结束

7

grade函数(int num)

int grade=o

num<4?

grade=100-10*(num-1)

num<8?

grade=80-5*(num-4)

num<68?

grade=60-(num-7)

根据用户输入次数给出提示

结束

8

五,调试与测试

调试

1. 在编程当中,由于要书写大量的程序,所以经常出现一些小错误;

2. 对变量的定义有时会出现错误,比如将long int型写成int型;

3. 最重要的是函数的应用,函数应该应用得当,否则会出现很大的错误。

测试

开始界面:

9

菜单:

10

11

六.课程设计的总结

通过这个课程设计,我们更加牢固的掌握了书本上的知识,并对于以前并不熟悉的知识

有了更加深刻的了解。在完成此次课程设计的过程中,虽然花费了大量的精力,但带给我更

多的收获。C语言是一门实践课,可以说只有自己亲手操作,才能感受到他的魅力。

此次编程设计中,涉及到许多书上没有的知识,而我通过此次设计掌握了这些知识。输

入与调试程序是相当枯燥的,但构思和完善程序的过程是相当有趣的,无论怎么样,当你亲

手完成了一个程序时,还是相当有成就感的。

此次任务的完成,也体现了同学之间的团结精神,实践是检验真理的唯一标准,没有实

践,就不会发现和深刻体会他的真实存在。只有通过检验的真理,在自己的心里,才会认可

他的真实性。理论与实际的相结合才能真正把握所学和所掌握的知识。同时培养了我们的团

队精神,使我们懂得了团队的重要性。在今后的学习工作中我们将会更好的发挥团队精神。

12

总的来说,C语言是一门非常有趣的学科,可以通过人为的设计而让电脑来辅助性的做

一些机械的东西。在今后的学习过程中,我也将更加的认真学习C语言,希望能在今后完成

设计出一个属于自己的有意思的程序。

参考书目

[1]《标准C语言基础教程英文版》<第四版>[M],(美)布朗森著出版社:电子工业出版社 2006

附录:

程序清单

#include

#include

#include

#include

int i;

long int rn();

void fun();

void gc();

int input(long int);

void grade(int);

int welcome();

int compare(long int,long int);

void choise(int *,int);

void main()

{

system("cls");

printf("nnntt* * * * * * * * welcome * * * * * * * *");

printf("nnn");

printf("tttmaker: xiachao xiaoyuyan");

printf("nnntttuse enter to be continue");

getch();

fun();

}

void fun()

{

int b,s,g;

long int a;

system("cls");

3 1

s=welcome();

if(s==1)

{

system("cls");

a=rn();

b=input(a);

grade(b);

gc();

}

if(s==2)

{

system("cls");

printf("nnnnn");

printf("t ---------------------------------------------------------n");

printf("t|game rules: |n");

printf("t| |n");

printf("t|input your number(10000--99999),it will compare to the |n");

printf("t| |n");

printf("t|system's number(10000--99999),and the number doesn't have|n");

printf("t| |n");

printf("t|same digit. |n");

printf("t| |n");

printf("t|if your number as same as system,your win,else ");

printf("t| |n");

printf("t ---------------------------------------------------------");

gc();

}

if(s==3)

{

printf("nntttThanks for your using.n");

printf("ttttBye Bye!");

getch();

exit(0);

}

}

long int rn()

{

int b,d;

long int c;

unsigned long int a;

int array[5];

time_t t;

time(&t);

4 1

srand(t);

loop1:a=10000+rand() % 90000;

c=a;

for(i=0;i<5;i++)

{

array[i]=c%10;

c=c/10;

}

choise(array,5);

b=array[0];

for(i=1;i<5;i++)

{

if(b==array[i])

goto loop1;

else

b=array[i];

}

return a;

}

void choise(int *num,int n)

{

int j,k;

for(i=1;i

{

k=num[i];

j=i-1;

while((j>=0)&&(num[j]>k))

{

num[j+1]=num[j];

j--;

}

num[j+1]=k;

}

}

int compare(long int a,long int b)

{

int c;

if(a>b)

{

printf("tttneed greater!");

printf("( >%ld )n",b);

c=0;

5 1

}

if(a

{

printf("tttneed less!");

printf("( <%ld )n",b);

c=0;

}

if(a==b)

{

printf("tttIt's true!n");

c=1;

}

return c;

}

int input(long int a)

{

int c=0;

long int b;

printf("nnnnn");

printf("tttplease input your number:n");

printf("tttinput 0 back to main menu.");

loop2:printf("nttttimes %d:",c+1);

scanf("%ld",&b);

c++;

if(c>67)

{

printf("ttyou are lose!");

gc();

}

if(b==0)

fun();

else

if(compare(a,b)!=1) goto loop2;

return c;

}

void grade(int num)

{

int grade=0;

printf("tttyou use %d timesn",num);

if(num<4)

grade=100-10*(num-1);

else if(num<8)

6 1

grade=80-5*(num-3);

else if(num<68)

grade=60-(num-7);

printf("tttyour grade is %d",grade);

switch(num)

{

case 1:printf("tyou are so lucky");

break;

case 2:case 3:case 4:printf("tlucky!");

break;

case 5:case 6:case 7:case 8:case 9:printf("tgreat!");

break;

case 10:case 11:case 12:case 13:case 14:case 15:case 16:

printf("tgood!");

break;

case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:

printf("tjust so so.");

break;

default:

printf("tmaybe you can better.");

}

}

int welcome()

{

int s;

printf("nnnn");

printf("tt********************************************n");

printf("tt* *n");

printf("tt* welcome paly the game! *n");

printf("tt* *n");

printf("tt* input 1: start the game *n");

printf("tt* input 2: help information *n");

printf("tt* input 3: quit the game *n");

printf("tt********************************************n");

printf("ttplease select: ");

scanf("%d",&s);

return s;

}

void gc()

{

int a;

printf("nnttinput 1: quit the game;tinput 2: back to menu.n");

printf("nttplease select : ");

7 1

scanf("%d",&a);

if(a==1)

exit(0);

if(a==2)

{

system("cls");

fun();

}

if(a!=1&&a!=2)

{

printf("ttinput error!check your input!nn");

gc();

}

}

8 1


发布者:admin,转转请注明出处:http://www.yc00.com/news/1714816366a2521556.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信