【迁移自人人网】Is there no one to rescue me?
相信大家都是这个实力帮助我解答这个问题……
同时对你们的无私的奉献感到由衷的敬佩……
帮人一忙胜于拯救全世界……
那些编程高手呢,比如说袁岩峰、袁振龙、王若宇、李珂、于慧、还有程汉龙、马玉君、孙艺豪等等,你们要是看了这篇文章不回答我的话,你……我就不说你们什么了……(哈哈,直接点名,够阴险吧?)
下面开始我们的正题阿:
昨天下午上选修课的时候,我选修的是“大学生文化之道”,这门课听起来似乎不错的样子, 但是我们的这个课的老师实际上是一个教哲学的老师,说话那么抽象,刚要睡觉,一摸书包,里面还有以给电子词典,于是我心血来潮玩了n分钟的游戏,于是我想到了自己编程序……
由于“猜数字”这个游戏的原理比较简单我便开始便这个程序……
费了我整整半个下午以及一个晚上便出来的程序今天上午运行时没有错误,但是就有点思维混乱,我也不想再在上面花费脑筋了,于是找你们求救,相信你们会有这个实力的!
这是我的程序的源代码,希望你们能够运行一下并帮助我分析一下有哪些错误需要改正,真的谢谢阿:
#include <stdio.h>
#include<stdlib.h>
#include <math.h>
#define M 3276.7
void main()
{
int r,cla,max,pass1,pass2,pass3,q,i,j;
int a[50],b[50],t[50][4],key[4];
int rand();
char c;
pass1=pass2=pass3=1;
mk:printf(“欢迎你来到猜数字小游戏中来!\n请您选择小游戏的难度:\n1、简单\n2、中等\n3、困难\n4、自定义\n9、帮助信息\n”);
scanf(“%d”,&cla);
switch (cla)
{
case 1:max=15;break;
case 2:max=10;break;
case 3:max=6;break;
case 4:
{
printf(“请输入你想要尝试的次数,一定要小于50才能有效!按回车键确认!\n”);
while (pass1)
{scanf(“%d”,&max);
if (max>0&&max<=50) pass1=0;
else printf(“你刚才输入错误,请重新输入一个数,记得是一个小于50的整数哦!\n”);
}
break;
}
case 9:{
printf(“在这个游戏的提示当中,a表示数字与位置都猜对了的个数,\n而b表示只是数字正确,位置并不正确的。\n在刚才的选项中,表示可以猜测的次数,\n”);
printf(“其中,简单级别的次数为15次,一般级别的次数为十次,\n困难级别的为六次,选择4可以自定义级别,\n如果还不会的话请联系刘文浩 \n“);
}
break;
default: {
printf(“Error input!”);
goto mk;}
}
r=0;
key[0]=rand()/M;
pass1=pass2=1;
while (pass1)
{
key[1]=rand()/M;
if (key[1]!=key[0])
pass1=0;
}
while (pass2)
{
key[2]=rand()/M;
if (key[2]!=key[0]&&key[2]!=key[1])
pass2=0;
}
pass1=1;
pass2=1;
while (pass1)
{
key[3]=rand()/M;
if (key[3]!=key[0]&&key[3]!=key[1]&&key[3]!=key[2])
pass1=0;
}
pass1=1;
pass2=1;
a[r]=0;
b[r]=0;
q=1;
while ((r+1)<=max&&pass3==1)
{
while (pass2)
{printf(“请输入四个一位数,各个数字之间用回车间隔起来,数字之间不能有重复的哦!\n”);
for (i=0;i<=3;i++)
scanf(“%d”,&t[r][i]);
if (t[r][0]!=t[r][1]&&t[r][0]!=t[r][2]&&t[r][0]!=t[r][3]&&t[r][1]!=t[r][2]&&t[r][1]!=t[r][3]&&t[r][2]!=t[r][3]&&t[r][0]>=0&&t[r][0]<10&&t[r][1]>=0&&t[r][1]<10&&t[r][2]>=0&&t[r][2]<10&&t[r][3]>=0&&t[r][3]<10)
pass2=0;
}
for (i=0;i<=3;i++)
{
if (t[r][i]==key[i]) a[r]++;
}
if (a[r]==4)
{pass3=0;
goto mk2;
}
for (i=0;i<=3;i++)
for (j=0;j<=3;j++)
{if (t[r][i]==t[r][j])
b[r]++;
}
b[r]-=a[r];
printf(“你选择%d-%d-%d-%d的结果是%dA %dB\n”,t[r][0],t[r][1],t[r][2],t[r][3],a[r],b[r]);
printf(“您是否需要查看战斗情况?建议你看一下哦……\nY.需要\nN.不需要\n”);
c=getchar();
if (c==’Y’||c==’y’)
{
printf(“战斗状态列表:\n”);
for (i=0;i<=r;i++)
printf(“您在第%d局第%d次输入了%d-%d-%d-%d,结果是%dA %dB”,q,(i+1),t[i][0],t[i][1],t[i][2],t[i][3],a[i],b[i]);
printf(“现在已经进行了%d轮,你还有%d次机会,祝你成功,加油啊!——刘文浩友情提示\n”,(r+1),(max-r-1));
}
else printf(“你很强嘛,不过建议你选择y,刘文浩会全力为你服务!你千万不能输啊。失败了会很惨的哦!\n”);
r++;
}
mk2:if (pass3==1&&max<10)
printf(“很好,虽然你输了,但是你的超人的能力与勇气深深的感动了我,你有能力挑战极限,\n我为你加油!\n”);
else if (pass3==1&&max>=10&&max<15)
printf(“虽然你失败了,但是你的坚强的作风是值得表扬的,努力学习中将会获得成功,\n希望你能够向更高处挺进!\n”);
else if (pass3==1&&max>=15)
printf(“你是个大白痴,这么多次的试验都失败了,我服了你了,赶紧给我退出程序,\n找个地方呆着,不要在这里丢人,丢我们中国人的脸!\n听见了没有?快点!\n”);
else if (pass3==0&&max<=9)
printf(” 你太强了,简直是超人!对你的能力赶到由衷的赞赏,为你骄傲,我为你献上一首小诗以作为回报:\n”);
else if (pass3==0&&max>=10&&max<15)
printf(” 你真的真的很强大,恭喜你,希望你以后更加努力,向更高处发起挑战!\n”);
else if (pass3==0&&max>=15)
printf(“你虽然胜利了,值得庆贺,但是现在你的水平还处在初级阶段,望你加油啊!\n”);
else printf(“系统错误! \n请联系刘文浩(lwh9005@163.com)作进一步的调试!\n”);
printf(“想看答案吗?\n1、想看啊,肯定啦,这个还用说了?\n2、不想了,谢谢哦\n”);
scanf(“%d”,&i);
if (i==1) printf(“答案是%d-%d-%d-%d,没有想到吧?\n”,key[0],key[1],key[2],key[3]);
else printf(“不想看就算了,反正你这么强,已经知道了。\n刘文浩全力为您服务!\n”);
printf(“还想要来一局吗?\n1、是的,我还要来一局\n2、不来了,我想走了,谢谢刘文浩的服务……\n”);
scanf(“%d”,&i);
if (i==1)
{
q++;
goto mk;
}
else
{
printf(“*********************************************************\n”);
printf(” 猜数字小游戏\n”);
printf(” 搞 精 刺 好\n”);
printf(” 笑 彩 激 玩\n”);
printf(” …………刘文浩全力为您服务…………\n”);
printf(” 联系方式:15871689418\n”);
printf(” 电邮:lwh9005@163.com\n“);
printf(“*********************************************************\n”);
printf(” 程序已经为您退出了,欢迎下次再来,”);
}
}
有一点点长,实在麻烦你们了……
运行混乱阿
建议你们写一下这个游戏的算法,或许能对你们有帮助……