结构与模块描述 描述采用的程序结构,拥有哪几个功能模块函数,描述各个函数的功能与接口
主模块算法流程
这两个不会,求帮助解答!!
以下是程序,就是个猜数字的程序
#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;
}
}