标题:给100分,能准确运行的时候就行,诚心感谢
只看楼主
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
结帖率:84.38%
已结贴  问题点数:100 回复次数:25 
给100分,能准确运行的时候就行,诚心感谢
不要其他的代码。就是找出这段代码的问题。运行咋有问题,我找累了
程序代码:
#include<stdio.h>
#include <string.h>
#include <time.h>
#include <conio.h>
#include <stdlib.h>

 int numbe2[4]={0};
     int numb2[4];
void init()//产生随机数种子 
{
    srand(time(0));
}
int *creat()//产生4个各不相同的随机数函数 ,把四个数保存在数组中,返回值是该数组的首地址 
{
     int flag[10]={0};
     
      int *p;
      p=numbe2;
     int tem=0,i=5,j=4;
     
     while(i)
     {
         tem=rand()%10;
         if(flag[tem]==0)
         {
             numbe2[j]=tem;
             flag[tem]=1;
              j--,i--;
         };
         }
          return p;
         }
int check(int *numbb,int *numbb2)//比较随机数数组和保存输入4个数的函数  
   {  int x=0,y=0,m,n;
       for( n=0;n<4;n++)
        for( m=0;m<4;m++)
            { if(numbb[n]==numbb2[m])
            {
            if(n==m)
            {
            x++;
            }
            else y++;
              }
           
       }
       if(x==4)
       {
            printf("恭喜你答对了!猜中的数字是%d%d%d%d",numbb[0],numbb[1],numbb[2],numbb[3]);
           return x;
           }
       
       else{
           printf("%dA%dB",x,y);
           return 0;
             }
       
   }
void start()//游戏开始 
{   int *numb;

    char numb3='\0';//结束标志保存在字符变量numb3中 
    int i=0;
    numb=creat();
   while(i<7)
   {

      fflush(stdin);//清空缓存 
       printf("请输入4个数,这是你第%d次猜\n",i+1);
    while(1)
    {        
        if((scanf("%d%d%d%d",&numb2[0],&numb2[1],&numb2[2],&numb2[3])==4)&&(numb3==getchar()))// scanf格式读取四个数,正确输入第5个应该是'\0' 
        {
         break;
        }
        
        else  {
                   fflush(stdin);
            printf("输入错误,请重新输入\n"); 
         
             }
        printf("按Q/q退出\n");
        if('Q'==getch()||'q'==getch())
        exit(0);
        
    }
   if(check(numb,numb2))//调用check函数,返回值是4的话,退出while(i<7)循环 
   {
  
   break;
   }
   else//返回值是0的话就i++,然后继续内循环while 
    {
        i++;
        continue;
    }
   }
   
    
}
int main(void)
{
        init();
        start();
}


[ 本帖最后由 a271885843 于 2012-7-2 22:01 编辑 ]
搜索更多相关主题的帖子: 100分 
2012-07-02 21:45
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:0 
char ch;
ch=getch();
if(('Q'==ch)||('q'==ch))

[ 本帖最后由 embed_xuel 于 2012-7-2 21:53 编辑 ]

总有那身价贱的人给作业贴回复完整的代码
2012-07-02 21:51
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
得分:0 
以下是引用embed_xuel在2012-7-2 21:51:05的发言:

char ch;
ch=getch();
if(('Q'==ch)||('q'==ch))

嗯。还有问题。就是输入4个数字或输入其他的字符串,回车没反应。验证输入是否正确那里有问题

认为事物非黑即白是缺智慧的表现……
2012-07-02 21:56
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:50 
回复 3楼 a271885843
不知道对不对,我在手机上看的,你试试下面
charnumb3='\0'改成
charnumb3='\n'

总有那身价贱的人给作业贴回复完整的代码
2012-07-02 22:11
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
得分:0 
以下是引用embed_xuel在2012-7-2 22:11:05的发言:

不知道对不对,我在手机上看的,你试试下面
charnumb3='\0'改成
charnumb3='\n'

妹的。在格式控制输入哪里%1d就行了。%d默认应该是几位。还是有点问题,还需要改进,还是有问题,还是有问题

[ 本帖最后由 a271885843 于 2012-7-2 22:45 编辑 ]

认为事物非黑即白是缺智慧的表现……
2012-07-02 22:30
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
得分:0 
以下是引用a271885843在2012-7-2 22:30:44的发言:


妹的。在格式控制输入哪里%1d就行了。%d默认应该是几位。还是有点问题,还需要改进,还是有问题,还是有问题

还是有问题

[ 本帖最后由 a271885843 于 2012-7-2 23:05 编辑 ]

认为事物非黑即白是缺智慧的表现……
2012-07-02 22:52
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
得分:0 
以下是引用a271885843在2012-7-2 22:52:20的发言:


还是有问题

主要的问题就是VS运行有点问题,CFREE没问题了,还有就是是不是比较两数组的算法有问题?

认为事物非黑即白是缺智慧的表现……
2012-07-03 00:03
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:0 
这什么代码呀?两个数组是全局变量,还用指针做入参干吗,还有个函数返回数组首地址,冗余的操作

总有那身价贱的人给作业贴回复完整的代码
2012-07-03 08:35
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:0 
int*creat()//产生4个各不相同的随机数函数 ,把四个数保存在数组中,返回值是该数组的首地址{intflag[10]={0};int*p;      p=numbe2;inttem=0,i=5,j=4;while(i)     {         tem=rand()%10;if(flag[tem]==0)         {             numbe2[j]=tem; //前面j初始化为4,那么这句就是number2[4]=tem,数组越界了,numbe2下标只能从0到3

总有那身价贱的人给作业贴回复完整的代码
2012-07-03 08:42
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:50 
又不知道你想干什么,你自己觉得有问题就仔细调试,解决不了就把问题说清楚,不要把整个东西发上来叫人猜,要么把需求写清楚。

授人以渔,不授人以鱼。
2012-07-03 17:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-372682-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.077024 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved