问一道C语言问题。。求教。

程序4编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,则结束游戏;否则计算机给出提示,告... 程序4 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,则结束游戏;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,则停止本次猜数,然后继续猜下一个数。每次运行程序可以反复猜多个数,直到操作者想停止时才结束。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
AB:
int a,n,k,i=1,random_number;
do{
srand((unsigned)time(NULL));

{
random_number=rand()%100+1;

}

a=random_number;

while (i<=10)
{
printf ("请输入:");
scanf ("%d",&n);
if (n==a) {printf ("对了!你用了%d次。\n",i);break;}
if (n>a) printf ("大了!\n");else printf ("小了!\n");
i++;
}
printf("%d\n",a);
}
while(i>10);

}

程序错了,请问
我的程序怎可以用 DO...WHILE 实现。。
非常感谢4楼的回答,回得很好,不过不能解决我的困惑。。
展开
 我来答
百度网友d57e73d
2010-11-30 · TA获得超过989个赞
知道小有建树答主
回答量:1043
采纳率:0%
帮助的人:863万
展开全部
尽量不要使用do while 特别是你这种不用先do再while循环的时候.

a=random_number;
for(;;)
{
while (i<=10)
{
printf ("请输入:");
scanf ("%d",&n);
if (n==a) {printf ("对了!你用了%d次。\n",i);break;}
if (n>a) printf ("大了!\n");else printf ("小了!\n");
i++;
}
printf("%d\n",a);
i=1;
printf("继续?y/n");
char ch;
ch=getchar();
if(ch='y'||ch='Y')
continue;
else break;
}
在你的第一个while之外再加一个无限循环for(;;)就能实现玩了再玩.
开始的AB莫非是为了使用goto跳转么,虽然跳出2重嵌套循环很方便,不过尽量少用吧.
最后加个判断语句就可以确定是继续玩还是退出了.
还有全部写在一个main()函数里感觉好挤,,,
苦苦行乐僧
2010-11-30
知道答主
回答量:29
采纳率:0%
帮助的人:4.5万
展开全部
do放前面,while放后面,把判断条件放在while里面啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pengduo66
2010-11-30 · TA获得超过114个赞
知道小有建树答主
回答量:282
采纳率:0%
帮助的人:223万
展开全部
do{
printf ("请输入:");
scanf ("%d",&n);
if (n==a) {printf ("对了!你用了%d次。\n",i);break;}
if (n>a) printf ("大了!\n");else printf ("小了!\n");
i++;
}while (i<=10);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
feelmeu
2010-11-30 · TA获得超过617个赞
知道小有建树答主
回答量:402
采纳率:66%
帮助的人:162万
展开全部
程序写的很好啊 除了那个莫名其妙的 AB : 去掉不就好了么

这个程序本身不就是do...while实现的么? 不明白了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mnm121212
2010-11-30
知道答主
回答量:2
采纳率:0%
帮助的人:3286
展开全部
首先你的i的用法错了:
在你的代码中
1.你使用i来计数玩家猜数的次数
2.在do-while中当做判断游戏结束的条件
两种使用都有问题
针对1,你在对一个数的猜数结束之后,没有重置i
针对2,要求是玩家想要结束才能结束,而不是猜对了,就结束,所以这个判断条件本身就是错的。

我随便给你写一点代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
AB:
int a,n,k,i=1,random_number;
do{
srand((unsigned)time(NULL));

{
random_number=rand()%100+1;

}

a=random_number;

while (i<=10)
{
printf ("请输入:");
scanf ("%d",&n);
if(0 == n){printf("游戏结束");return;}
if (n==a) {printf ("对了!你用了%d次。\n",i);break;}
if (n>a) printf ("大了!\n");else printf ("小了!\n");
i++;
}
if(i<=10)
printf("%d\n",a);
else
continue;
}while(1);

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wdjhz
2010-11-30 · TA获得超过3529个赞
知道大有可为答主
回答量:2227
采纳率:41%
帮助的人:686万
展开全部
用永真循环..

设置一个布尔类型的变量.初始值为true,循环永远判断该变量是否为true..

用户输入的时候,可以自己设定一个条件,让布尔变量变false,例如,当用户输入的数值为0的时候,让布尔变量为false,又或者当用户输入的数值不在1-100内的时候询问他是否要结束,如果是,则置false,否则继续让他重新输入
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式