C语言猜数游戏实验报告

 一、

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

 二、

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

 三、

 总体设计 .................................................2

 四、

 详细设计 .................................................3

 五、

 调试与测试 ....................... ........................9

 六、

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

 七、

 附录 .....................................................13 3

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

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

  一、

 课程设计的目的

 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():根据用户的选择来执行对应的功能;

 四.详细设计

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

 main()函数 清屏 打印欢迎界面 getch() fun() 结束

  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 否 结束

  choise 函数(int *num,int n) int j,k; i=1 k=num[i];j=i-1j>0&&num[i]>k? 是 num[j+1]=num[j]; j--; num[j+1]=k 否 结束

 input 函数(long int a) int c=0;long int b 输出打印相应提示 输出打印次数:c+1; 用户输入五位数,用 b 接收; c++; b=0? compare(a,b)=1? 否 是 是 retun c 结束 否 c>67? 给出失败提示; gc(); 是 fun 函数

 compare 函数(long int a,long int b) int c a<b? a>b? a=b? 给 出 大于提示; c=0 给 出 小于提示; c=0 给 出 等于提示; c=1 return c 结束 是 是 是 否 否 否

 grade 函数(int num) int grade=o num<4? num<8? num<68? grade=100-10*(num-1) grade=80-5*(num-4) grade=60-(num-7) 根据用户输入次数给出提示 是 结束 否 是 否 是

  五,调试与测试

 调试 1. 在编程当中,由于要书写大量的程序,所以经常出现一些小错误; 2. 对变量的定义有时会出现错误,比如将 long int 型写成 int 型; 3. 最重要的是函数的应用,函数应该应用得当,否则会出现很大的错误。

 测试

 开始界面:

  菜单:

  六. 课程设计的总结

 通过这个课程设计,我们更加牢固的掌握了书本上的知识,并对于以前并不熟悉的知识有了更加深刻的了解。在完成此次课程设计的过程中,虽然花费了大量的精力,但带给我更多的收获。C 语言是一门实践课,可以说只有自己亲手操作,才能感受到他的魅力。

 此次编程设计中,涉及到许多书上没有的知识,而我通过此次设计掌握了这些知识。输入与调试程序是相当枯燥的,但构思和完善程序的过程是相当有趣的,无论怎么样,当你亲手完成了一个程序时,还是相当有成就感的。

 此次任务的完成,也体现了同学之间的团结精神,实践是检验真理的唯一标准,没有实践,就不会发现和深刻体会他的真实存在。只有通过检验的真理,在自己的心里,才会认可他的真实性。理论与实际的相结合才能真正把握所学和所掌握的知识。同时培养了我们的团队精神,使我们懂得了团队的重要性。在今后的学习工作中我们将会更好的发挥团队精神。

 总的来说,C 语言是一门非常有趣的学科,可以通过人为的设计而让电脑来辅助性的做一些机械的东西。在今后的学习过程中,我也将更加的认真学习 C 语言,希望能在今后完成设计出一个属于自己的有意思的程序。

 参考书目

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

 2006年

  附录:

  程序清单 #include <stdio.h> #include <math.h> #include <stdlib.h> #include <time.h> 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("\n\n\n\t\t* * * * * * * * welcome * * * * * * * *");

 printf("\n\n\n");

 printf("\t\t\tmaker: xiachao

  xiaoyuyan");

 printf("\n\n\n\t\t\tuse enter to be continue");

 getch();

 fun(); }

 void fun() {

 int b,s,g;

 long int a;

 system("cls");

  s=welcome();

 if(s==1)

 {

  system("cls");

  a=rn();

  b=input(a);

  grade(b);

  gc();

 }

 if(s==2)

 {

  system("cls");

  printf("\n\n\n\n\n");

  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 try again.|\n");

  printf("\t|

  |\n");

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

  gc();

 }

 if(s==3)

 {

  printf("\n\n\t\t\tThanks for your using.\n");

  printf("\t\t\t\tBye 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);

  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<n;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("\t\t\tneed greater!");

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

  c=0;

  }

 if(a<b)

 {

  printf("\t\t\tneed less!");

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

  c=0;

 }

 if(a==b)

 {

  printf("\t\t\tIt"s true!\n");

  c=1;

 }

 return c; }

 int input(long int a) {

 int c=0;

 long int b;

 printf("\n\n\n\n\n");

 printf("\t\t\tplease input your number:\n");

 printf("\t\t\tinput 0 back to main menu.");

 loop2:printf("\n\t\t\ttimes %d:",c+1);

 scanf("%ld",&b);

 c++;

 if(c>67)

 {

  printf("\t\tyou 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("\t\t\tyou use %d times\n",num);

 if(num<4)

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

 else if(num<8)

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

 else if(num<68)

  grade=60-(num-7);

 printf("\t\t\tyour 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("\n\n\n\n");

 printf("\t\t********************************************\n");

 printf("\t\t*

 *\n");

 printf("\t\t*

 welcome paly the game!

 *\n");

 printf("\t\t*

 *\n");

 printf("\t\t* input 1: start the game

 *\n");

 printf("\t\t* input 2: help information

 *\n");

 printf("\t\t* input 3: quit the game

  *\n");

 printf("\t\t********************************************\n");

 printf("\t\tplease select: ");

 scanf("%d",&s);

 return s; } void gc() {

 int a;

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

 printf("\n\t\tplease select : ");

  scanf("%d",&a);

 if(a==1)

  exit(0);

 if(a==2)

 {

  system("cls");

  fun();

 }

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

 {

  printf("\t\tinput error!check your input!\n\n");

  gc();

 } }