计算机课程设计安全过河.docx

上传人:b****8 文档编号:27598272 上传时间:2023-07-03 格式:DOCX 页数:10 大小:92.13KB
下载 相关 举报
计算机课程设计安全过河.docx_第1页
第1页 / 共10页
计算机课程设计安全过河.docx_第2页
第2页 / 共10页
计算机课程设计安全过河.docx_第3页
第3页 / 共10页
计算机课程设计安全过河.docx_第4页
第4页 / 共10页
计算机课程设计安全过河.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

计算机课程设计安全过河.docx

《计算机课程设计安全过河.docx》由会员分享,可在线阅读,更多相关《计算机课程设计安全过河.docx(10页珍藏版)》请在冰豆网上搜索。

计算机课程设计安全过河.docx

计算机课程设计安全过河

计算机技术基础课程设计

C语言

设计报告

 

题目:

安全过河

学院:

工商管理学院

专业:

信息管理与信息系统

班级:

050507班

姓名:

指导教师:

张守伟

设计日期:

2011年12月03日

 

题目:

安全过河问题

一、选题背景:

该游戏是我由一个数学建模题——“安全过河问题”而构思的。

有三个商人带者三个随从和货物过河。

二、设计思路:

船每次最多只能载两个人,要求保证在过河期间商人的人数要大于或等于随从的人数,否则随从杀人抢劫构思:

三:

设计分析:

应用技术点及主要解决问题阐述

用两个数组来表示两岸的商人和随从,其中'A'表示商人,'B'表示随从,数组a表示此岸,数组b表示彼岸;通过输入过河的人数,来改变两个数组中的'A'和'B'的个数,在用文本输出两岸的情况.游戏规则是这样似的:

技术关键

1)输入过河的人数;

2)非法输入按按了退出处理(如:

每次输入的人数不得多于两个;不得输入负数,字母等).

四:

程序流程图

 

 

五:

程序清单

#include

 #include

 #include

 

 voidhelpf()

 {

 clrscr();

 gotoxy(6,3);

 printf("该游戏是由一个数学建模题——安全过河问题而构思的。

\n\n有三个商人带者三个随从和货物过河,船每次最多只能载两个人,要求保证在过河期间\n\n商人的人数要大于或等于随从的人数,否则随从杀人抢货。

\n\n游戏规则是这样似的:

\n\n1)输入过河的人数;\n\n2)非法输入按按了退出处理");

 printf("祝君好运!

\n");

 printf("\t\t\t作者:

纪影\n");

 printf(“\t\t\t作的不好请多多指教“);

 }

 chara[6];

 charb[6];

 voidprintcase(chara[],charb[])

 {inti,j,xa,xb,x0,ya,yb,y0;

 xa=xb=x0=ya=yb=y0=0;

 gotoxy(1,4);

 printf("此岸\t\t    彼岸\n");

 for(i=0;i<6;i++){

  if(a[i]=='A')

   xa++;

  elseif(a[i]=='B')

   xb++;

  elseif(a[i]=='0')

   x0++;

 }

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

 printf("商人 ");

 printf("\n");

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

 printf("随从 ");

 printf("\n");

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

 printf("  ");

 printf("\n");

 for(j=0;j<6;j++){

 if(b[j]=='A')

  ya++;

 elseif(b[j]=='B')

  yb++;

 elseif(b[j]=='0')

  y0++;

 }

 gotoxy(25,5);

 for(j=1;j<=ya;j++)

 printf("商人");

 gotoxy(25,6);

 for(j=1;j<=yb;j++)

 printf("随从");

 gotoxy(25,7);

 for(j=1;j<=y0;j++)

  printf("  ");

 if(xa==0&&xb==0&&ya==3&&yb==3) {

 printf("\n\n你已成功帮助商人安全过河!

");

 exit(0);

 }

 }

 voidmain()

 {

 inti,x,y,key,ca,cb,j,aA,aB,bA,bB;

 helpf();

 getch();

 clrscr();

 window(1,1,25,80);

 textbackground

(1);

 textcolor(14);

 clrscr();

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

 a[i]='A';

 for(i=3;i<6;i++)

 a[i]='B';

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

 b[i]='0';

 printcase(a,b);

 while

(1){

 gotoxy(20,10);

 printf("输入去此岸商人的人数:

");

  scanf("%d",&x);

 gotoxy(22,10);

 printf("输入去此岸随从的人数:

");

  scanf("%d",&y);

 for(ca=0,cb=0,i=0;i<6;i++){

  if(a[i]=='A')

   ca++;

  elseif(a[i]=='B')

   cb++;

 }

 if(x<0||x>ca||y<0||y>cb||x+y<1||x+y>2){

  printf("输入有误!

");

  exit(0);

 }

 for(i=1;i<=x;i++){

  for(j=0;j<6;j++)

   if(a[j]=='A'){

    a[j]='0';

    break;

   }

 }

 for(i=1;i<=x;i++){

  for(j=0;j<6;j++)

   if(b[j]=='0'){

    b[j]='A';

      break;

   }

 }

 for(i=1;i<=y;i++){

  for(j=0;j<6;j++)

   if(a[j]=='B'){

    a[j]='0';

    break;

   }

 }

 for(i=1;i<=y;i++){

  for(j=0;j<6;j++)

   if(b[j]=='0'){

    b[j]='B';

    break;

   }

 }

 for(aA=0,aB=0,i=0;i<6;i++){

  if(a[i]=='A')

   aA++;

  elseif(a[i]=='B')

   aB++;

 }

 for(bA=0,bB=0,i=0;i<6;i++){

  if(b[i]=='A')

   bA++;

  elseif(b[i]=='B')

   bB++;

 }  

 

 if((aA==3)||(bA==3)||(aA==aB)||(bA==bB)) {

     clrscr();

     printcase(a,b);

            }

 else{

  clrscr();

  printf("商人被杀,再来一次吧!

!

!

!

\n\n\n\n");

       printcase(a,b);

    getch();

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

            a[i]='A';

  for(i=3;i<6;i++)

   a[i]='B';

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

   b[i]='0';

 clrscr();

 printcase(a,b);

 continue;

 }

 gotoxy(20,10);

 printf("输入回此岸商人的人数:

");

  scanf("%d",&x);

 gotoxy(22,10);

 printf("输入回此岸随从的人数:

");

  scanf("%d",&y);

 for(ca=0,cb=0,i=0;i<6;i++){

  if(b[i]=='A')

   ca++;

  elseif(b[i]=='B')

   cb++;

 }

 if(x<0||x>ca||y<0||y>cb||x+y<1||x+y>2){

   printf("输入有误!

");

  exit(0);

 }

 for(i=1;i<=x;i++){

  for(j=0;j<6;j++)

   if(b[j]=='A'){

    b[j]='0';

    break;

   }

 }

 for(i=1;i<=x;i++){

  for(j=0;j<6;j++)

   if(a[j]=='0'){

    a[j]='A';

    break;

   }

 }

   for(i=1;i<=y;i++){

  for(j=0;j<6;j++)

   if(b[j]=='B'){

    b[j]='0';

    break;

   }

 }

 for(i=1;i<=y;i++){

  for(j=0;j<6;j++)

   if(a[j]=='0'){

    a[j]='B';

    break;

   }

 }

 

 

 for(aA=0,aB=0,i=0;i<6;i++){

  if(a[i]=='A')

   aA++;

  elseif(a[i]=='B')

   aB++;

 }

 for(bA=0,bB=0,i=0;i<6;i++){

  if(b[i]=='A')

   bA++;

  elseif(b[i]=='B')

   bB++;

 }

 

 if((aA==3)||(bA==3)||(aA==aB)||(bA==bB)){

  clrscr();

  printcase(a,b);

  

 }

 else{

  

  clrscr();

  printf("商人被杀,再来一次吧!

!

!

!

\n\n\n\n");

       printcase(a,b);

  getch();

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

            a[i]='A';

  for(i=3;i<6;i++)

   a[i]='B';

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

   b[i]='0';

 clrscr();

 printcase(a,b);

 continue;

 }

     }

 }

六、设计自评

设计优点:

本程序运用了所学的条件语句、使得程序模块化,简明而易懂。

给人一种层次感。

那个模化想互独立又相互嵌套。

如发现错误可以很快的改正。

有利于程序的扩充。

设计不足:

没有运用到数组等方面的知识。

由于能力的限制,功能还不够全面,有待于进一步提高。

同时内聚性不高。

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

当前位置:首页 > 高等教育 > 艺术

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

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