编程先由计算机“想”一个1~100之间的数请人猜,游戏者开始猜每一个数时有基本积分100分,猜错一次扣10分.如果人猜对了,在屏幕上输出人猜对此数获得的积分,以此来反映猜数者“猜”的水

来源:学生作业帮助网 编辑:六六作业网 时间:2024/05/10 07:05:32
编程先由计算机“想”一个1~100之间的数请人猜,游戏者开始猜每一个数时有基本积分100分,猜错一次扣10分.如果人猜对了,在屏幕上输出人猜对此数获得的积分,以此来反映猜数者“猜”的水编程先由计算机“

编程先由计算机“想”一个1~100之间的数请人猜,游戏者开始猜每一个数时有基本积分100分,猜错一次扣10分.如果人猜对了,在屏幕上输出人猜对此数获得的积分,以此来反映猜数者“猜”的水
编程先由计算机“想”一个1~100之间的数请人猜,游戏者开始猜每一个数时有基本积分100分,猜错一次扣10分.如果人猜对了,在屏幕上输出人猜对此数获得的积分,以此来反映猜数者“猜”的水平,则结束游戏;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,积分已经扣完,则停止本次猜数,然后继续猜下一个数.每次运行程序可以反复猜10个数,直到猜完10个数后才结束,游戏最后在屏幕上输出人在猜每个数时得到的相应积分.游戏最后在屏幕上按照积分从高到低排序输出人在猜每个数时序号和积分.问题分析 在程序5的基础上增加数组num,数组元素num[0],num[1],num[2],num[3],……num[i]分别表示猜每个数时的序号.定义函数Play_Game(num,score),记录每次猜数所得的积分,定义函数Play_Sort(num,score) 按照人在猜每个数时所获得的积分从高到低排序,定义函数Play_Print(num,score) 输出人在猜每个数时序号和积分. #include<stdio.h>
 #include<stdlib.h>
 #include<time.h>
 void playgame(int num[],int score[])
 {
\x09int m,guess,count=0,i=0;
\x09srand(time(NULL));
\x09m=rand()%100+1;
\x09printf("input a number:\n");
\x09do
\x09{
\x09\x09score[i]=100;i++;count=0;num[i]=i;
\x09\x09\x09do
            {
\x09\x09\x09\x09scanf("%d",&guess);
\x09\x09\x09    count++;
\x09\x09\x09\x09if(guess>m)
\x09\x09\x09\x09\x09printf("Wrong!Too high!\n");
\x09\x09\x09\x09if(guess<m)
\x09\x09\x09\x09\x09printf("Wrong!Too low!\n");
\x09\x09\x09}while(count<10&&guess!=m);
\x09\x09printf("  %d\n",count);
\x09\x09score[i]=100-count*10;
\x09\x09printf("%d\n",num[i]);
\x09\x09printf("%d\n",score[i]);
\x09}while(i<10);
}
void playsort(int num[],int score[])
{
\x09int i,t;
\x09for(i=0;i<10;i++)
\x09{
\x09\x09num[i]=i++;
\x09\x09if(score[i]<score[i++])
\x09\x09t=score[i++];score[i++]=score[i];score[i]=t;
\x09}
}
void playprint(int num[],int score[])
{
\x09int i;
\x09playsort(int num[],int score[]);
\x09for(i=0;i<10;i++)
\x09\x09printf("%d%d\n",num[i],score[i]);
}
void main()
{
\x09 int score[10],num[10];
\x09 playgame(num,score);
\x09 playsort(num,score);
\x09 playprint(num,score);
}

编程先由计算机“想”一个1~100之间的数请人猜,游戏者开始猜每一个数时有基本积分100分,猜错一次扣10分.如果人猜对了,在屏幕上输出人猜对此数获得的积分,以此来反映猜数者“猜”的水
你的playsort()函数中这一句:
t=score[i++];score[i++]=score[i];score[i]=t;
你的数组大小为10,当你i=9时,i++=10,超出了数组的范围.
还有,我试了一下,你的10个要猜的数是一模一样的,猜对了一个,后面的都知道了,需要改进吧?