问一道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楼的回答,回得很好,不过不能解决我的困惑。。 展开
#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楼的回答,回得很好,不过不能解决我的困惑。。 展开
6个回答
展开全部
尽量不要使用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()函数里感觉好挤,,,
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()函数里感觉好挤,,,
展开全部
do放前面,while放后面,把判断条件放在while里面啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
printf ("请输入:");
scanf ("%d",&n);
if (n==a) {printf ("对了!你用了%d次。\n",i);break;}
if (n>a) printf ("大了!\n");else printf ("小了!\n");
i++;
}while (i<=10);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
程序写的很好啊 除了那个莫名其妙的 AB : 去掉不就好了么
这个程序本身不就是do...while实现的么? 不明白了
这个程序本身不就是do...while实现的么? 不明白了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先你的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);
}
在你的代码中
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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用永真循环..
设置一个布尔类型的变量.初始值为true,循环永远判断该变量是否为true..
用户输入的时候,可以自己设定一个条件,让布尔变量变false,例如,当用户输入的数值为0的时候,让布尔变量为false,又或者当用户输入的数值不在1-100内的时候询问他是否要结束,如果是,则置false,否则继续让他重新输入
设置一个布尔类型的变量.初始值为true,循环永远判断该变量是否为true..
用户输入的时候,可以自己设定一个条件,让布尔变量变false,例如,当用户输入的数值为0的时候,让布尔变量为false,又或者当用户输入的数值不在1-100内的时候询问他是否要结束,如果是,则置false,否则继续让他重新输入
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询