2 gegeda123 gegeda123 于 2017.01.03 12:17 提问

C语言求帮助,程序写完了,但这个报告怎么做???求帮助

结构与模块描述 描述采用的程序结构,拥有哪几个功能模块函数,描述各个函数的功能与接口
主模块算法流程
这两个不会,求帮助解答!!
以下是程序,就是个猜数字的程序
#include
#include
#include
void main()
{
char a,s[4];
int sort=100,b=0,c,d=7,r=0,k,i,n,p,o,num1,num2, num3,num4,u=0,y,t,num5,sum6,x,v,helpdex[10] ={0},z,h[4];
begin1:
srand((unsigned)time(NULL));
while ((r=rand()%10000) < 1000);
while(1000<=r&&r<=9999)
{
begin:
printf("*************************************************************\n");
printf("**** 选择提示输入\"H\" 选择猜数输入\"G\" ****\n");
printf("**** 选择重新开始输入\"Q\" 结束程序输入\"E\" ****\n");
printf("**** 您现在得分:%d,您还有%d次机会. ****\n",sort,d);
printf("*************************************************************\n");
scanf("%c",&a);
getchar();

if(a=='G'||a=='g')
{
    printf("请输入猜测的数字:");
    scanf("%d",&b);
    getchar();
    if(b==r)
    {
        printf("恭喜你猜对了");
        v=7-d;
        sort+=pow(2,v);
        printf("你的得分为%d",sort);
        printf("产生的数字为%d",r);
    return ;
    }
    else
    {
        printf("没猜对哦\n");
            d--;
       goto begin;
    }
}

else if(a=='H'||a=='h')
{
printf("========使用帮助一次将扣除当前分数的十分之一================\n");
printf("###### *******************************************************\n");
printf("# C # ①判断输入的数字比产生的数字大还是小\n");
printf("# 语 # ②判读是奇数还是偶数\n");
printf("# 言 # ③判断是不是素数,输出一定范围内的素数\n");
printf(" ^^ # ④判断你所猜中的各位数字对应位置正误情况\n");
printf("#HELP# ⑤判断你所猜中的数中正确数字是什么\n");
printf("# 帮 # ⑥请求输出某位数字是什么\n");
printf("# 助 # ⑦四位数之和\n");
printf("# 功 # ⑧唉~~放弃,告诉我答案\n");
printf("# 能 # ⑨亲~~ 点下看看\n");
scanf("%d",&c);
getchar();
if(b==0)
{
printf("你还没有输入猜测的数字\n");
goto begin;
}
if(c==1)
{
printf("你选择了提示信息1,会扣除当前分数的1/10!\n");
if(b>r)
{
printf("你上次输入的%d大于产生的数字\n",b);
sort-=sort/10;
goto begin;
}
if(b<r)
{
printf("你上次输入的%d小于产生的数字\n",b);
sort-=sort/10;
goto begin;
}

        }
        if(c==2)
        { 
               printf("你选择了提示信息2,会扣除当前分数的1/10!\n");
                   if(b%2==0)
                   {
                       printf("产生的数字是偶数\n");
                   sort-=sort/10;
                   goto begin;
                   }
                   else
                   { 
                       printf("产生的数字是奇数\n");
                   sort-=sort/10;
                   goto begin;
                   }
        }
        if(c==3)
        {               
               printf("你选择了提示信息3,会扣除当前分数的1/10!\n");
                   k=sqrt(b);
               for(i=2;i<=k;i++)
                   if(b%i==0)break;
                   if(i<=k)
                   {
                       printf("产生的数字不是素数\n");
                       sort-=sort/10;
                       goto begin;
                   }
                   else 
                   { 
                       printf("产生的数字是素数:");
                       printf("请输入要获知素数的范围<例如:2000,5000>:\n");
                   scanf("%d,%d",&p,&o);
                       for(n=p;n<=o;n=n+1)
                       {
                           k=sqrt(n);
                       for(i=2;i<=k;i++)
                        if(n%i==0)break;
                        if(i>k+1)
                        {
                            printf("%d",n);
                        }
                       }
                       sort-=sort/10;
                        goto begin;
                   }                
        }
        if(c==4)
        {      num1=b,num2=r;
              printf("你选择了提示信息4,会扣除当前分数的1/10!\n");
             for(i=0;i<=3;i++)
             {

              if(num1%10==num2%10)
                  s[4-i-1]='R';
              else
              {
                  s[4-i-1]='E';
              }
              num1/=10;
              num2/=10;
             }
             printf("你猜的数字是%d,与产生的数各位数字正误对比为:\n",b);
             for(i=0;i<=3;i++)
             {
                 printf("%c ",s[i]);
             }
             sort-=sort/10;
             goto begin;
        }
        if(c==5)
        {    num3=b,num4=r,z=0;
            printf("你选择了提示信息5,会扣除当前分数的1/10!\n");
            for(k=0;k<=3;k++)
            {
            for(i=0;i<=3;i++)
            {
                if(num3%10==num4%10)
                {
                    h[z++]=num4%10;
                        u++;
                }
               num3/=10;    
            }
            num3=b;
            num4/=10;
            }
            printf("你输入的数中有%d个数字正确,正确的数字分别是;\n",u);
            for(z=0;z<u;z++)
             {
                printf("%d ",h[z]);
            }
            sort-=sort/10;
             goto begin;
        }
        if(c==6)
        {    num5=r;
            if(helpdex[1]==6)
            {   
            printf("你已使用过该功能,本功能只能使用一次,不能重复使用\n");
            goto begin;
            }
            else
                helpdex[1]=6;
           printf("你选择了提示信息6,会扣除当前分数的1/10!\n");
           printf("请输入希望得到的某数字位置(从左到右表示为1,2,3,4):\n");
           scanf("%d",&y);
           getchar();
               if(y==1)
               {
                   t=num5/1000;
               printf("产生的数据第1位数是%d\n",t);
               sort-=sort/10;
             goto begin;
               }
               if(y==2)
               {
                   t=num5%1000/100;
                printf("产生的数据第2位数是%d\n",t);
               sort-=sort/10;
             goto begin;
               }
               if(y==3)
               {
                   y=num5%100/10;
                printf("产生的数据第3位数是%d\n",t);
               sort-=sort/10;
             goto begin;
               }
               if(y==4)
               {
                   y=num5%10;
                printf("产生的数据第4位数是%d\n",t);
                sort-=sort/10;
                goto begin;
               }
        }
        if(c==7)
        {   x=0; 
            sum6=r;
            printf("你选择了提示信息7,会扣除当前分数的1/10!\n");
            while(sum6>0)
            {
               x+=(sum6%10);
                sum6/=10;
            }
            printf("四位数之和是%d\n",x);
            sort-=sort/10;
                goto begin;
        }
        if(c==8)
        {
            printf("你选择了提示信息8,你已经放弃猜这个数.\n");
            printf("这个随机数是%d",r);
            printf("@大侠,胜败乃兵家常事,请从头再来\n");
            goto begin1;
        }
        if(c==9)
        {
            printf("强烈推荐你还是直接输入8吧,节省时间\n");
            sort-=sort/10;
                goto begin;
        }
}

else if(a=='Q'||a=='q')
{
d=7;
printf("已退出,重新开始\n");
goto begin1;
}
else if(a=='e' || a=='E')

{
    printf("谢谢使用,你的选择是明智的,去玩点有意思的游戏把\n");
    return ;
}

else
printf("输入有误,请重新输入\n");
goto begin;
}
}

1个回答

sum_TW
sum_TW   2017.01.08 19:29

文档我就不说了,百度一系列。我想说的是你这代码igoto语句太多,破坏程序流程,如果在学校肯定会被老师说的。但是,在底层那些分支结构都是靠goto语句来实现的,最好是少用。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!