| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1158 人关注过本帖
标题:C语言程序题
只看楼主 加入收藏
辕飞鸟
Rank: 1
等 级:新手上路
帖 子:6
专家分:1
注 册:2010-1-29
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:11 
C语言程序题
   用户从键盘输入4位不重复的数,来匹配计算机给出的4位随机数,若数字和位置均等同,表示用户赢了。每猜一次,计算机均给出提示信息(x,y),x表示数字、位置都匹配的个数;y表示数字匹配但位置不匹配的个数。
   这个题目有高手会编吗?
搜索更多相关主题的帖子: C语言 
2010-01-29 19:15
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:2 
看下随机的帖。。。

想象力征服世界
2010-01-29 19:48
xinjinlong
Rank: 3Rank: 3
来 自:河南南阳
等 级:论坛游侠
帖 子:61
专家分:117
注 册:2010-1-19
收藏
得分:2 
我写了一个小程序,也没有太多注释,还请笑纳:
程序代码:
#include <stdio.h>
#include <math.h>
int rand();
void fun1(int n)
{
    int a,b,c,d;
    int a1,b1,c1,d1;
    int x,y;
    int num;
    //printf("n=%d\n",n);
    a=n%1000;
    b=n%100/10;
    c=n%10/100;
    d=n/1000;
    while(1)
    {
        printf("输入你的数字:\n");
        scanf("%d",&num);
        a1=num%1000;
        b1=num%100/10;
        c1=num%10/100;
        d1=num/1000;
        x=y=0;
        if(a==a1)
            x++;
        else
            y++;
        if(b==b1)
            x++;
        else
            y++;
        if(c==c1)
            x++;
        else
            y++;
        if(d==d1)
            x++;
        else
            y++;
        printf("相同x=%d,不相同y=%d\n",x,y);
        if(x==4)
        {
            printf("恭喜你猜对!");
            printf("你猜到的书是:%d\n",num);
            break;
        }
    }
}
void fun()
{
    int n;
    int a,b,c,d;
    int flag=1;
    while(flag)
    {
        while((n=rand()%10000)<1000);
        a=n%1000;
        b=n%100/10;
        c=n%10/100;
        d=n/1000;
        if(a!=b&&a!=c&&a!=d&&b!=c&&b!=d&&c!=d)
        {
            fun1(n);
            flag=0;
        }
    }
}
int main()
{
    fun();
    return 0; 
}
2010-01-29 22:10
chf0532051
Rank: 1
等 级:新手上路
帖 子:2
专家分:4
注 册:2010-1-30
收藏
得分:2 
不懂
2010-01-30 17:20
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
收藏
得分:2 
/*-----------
   用户从键盘输入4位不重复的数,来匹配计算机给出的4位随机数,
   若数字和位置均等同,表示用户赢了。每猜一次,计算机均给出提示信息(x,y),x表示数字、
   位置都匹配的个数;y表示数字匹配但位置不匹配的个数。
-------------*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
    int a[4],b[4],i=0,j,x,y;

    srand(time(0)); //随机初始化函数
    while(i<4)
    {
        a[i]=rand()%10; //随机函数
        x=1;
        for(j=0;j<i;j++)
            if(a[i]==a[j]){x=0;break;}
        if(x)i++;
    }

    while(1)
    {
        printf("输入你的数字:\n");
        for(i=0;i<4;i++)
            scanf("%1d",&b[i]);

        x=y=0;
        for(i=0;i<4;i++)
            for(j=0;j<4;j++)
                if(a[i]==b[j])
                {
                    if(i==j)x++;
                    else y++;
                }
        if(x==4)
        {
            printf("恭喜你猜对了!");
            printf("你猜到的数是:");
            for(i=0;i<4;i++)
                printf("%d",b[i]);
            printf("\n");   
            printf("计算机给的4个数字为:");
            for(i=0;i<4;i++)
                printf("%d",a[i]);
            printf("\n");
            break;
        }
        else
            printf("匹配x=%d,仅位置不匹配y=%d\n",x,y);
    }

    return 0;
}
2010-01-30 21:59
Devon_Ye
Rank: 4
来 自:广东
等 级:业余侠客
帖 子:124
专家分:282
注 册:2010-1-7
收藏
得分:2 
作业题,闪了
2010-01-30 22:44
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
以下是引用Devon_Ye在2010-1-30 22:44:40的发言:

作业题,闪了



这题你可以做做。 不过,我觉得,你未必做的出来。
2010-01-30 23:00
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:2 
程序代码:
#include<iostream>
#include<map>
#include<cstdlib>// just for rand
using namespace std;
class Guess{
private:
    map<char,int> theMap;
    char buf[4];
protected:
    bool evalue()
    {
        int x,y;
        x=y=0;
        for( int i =0 ; i<4;i++)
        {
        map<char,int>::iterator iter=theMap.find(buf[i]);
        if( iter->second== i )
            x++;
        else if ( iter != theMap.end())
            y++;
        }
        cout<<"( "<<x<<", "<<y<<" )"<<endl;
        if ( x== 4)
        return true;
        return false;
    }
public:
    Guess(){
    for( int i=0;i<4;i++)
    {
        theMap.insert(make_pair((char)(rand()%10+'0'),i));
    }
    }
    void function()
    {
        while(1){
        cin>>buf;
        if ( true == evalue())
            break;
        }
    }
};
int main()
{
    Guess guess;
    guess.function();
    return 0;
}
2010-01-30 23:03
Alen0128
Rank: 4
等 级:业余侠客
帖 子:171
专家分:222
注 册:2009-12-26
收藏
得分:2 
回复 3楼 xinjinlong
你输入的是一个4位数,判断每位的位数是否同随机数相同。
但题目要求不是输入4个数吗?

-不想让你发现我 凌乱的脚步 ,我努力 跟上你的速度
2010-01-31 11:15
Devon_Ye
Rank: 4
来 自:广东
等 级:业余侠客
帖 子:124
专家分:282
注 册:2010-1-7
收藏
得分:0 
以下是引用Devil_W在2010-1-30 23:00:12的发言:

 
 
 
这题你可以做做。 不过,我觉得,你未必做的出来。
有错误,请指教!
#include "Stdio.h"
#include "stdlib.h"
#include "time.h"

/* 取4位随机数 */
int rander(void)
{
  int num;
  time_t t;
   srand((unsigned)time(&t));
   num=rand()%10000;
   return num;
}

void main()
{
   int x,z,num,num1,i,j;
   char c,st[10];
   char st1[10];
   c='A';
   while(c!='Q')
   {
   x=0;
   z=0;
   num=rander();
   itoa(num,st,10);
   printf("please input 4 numbers: ");
   scanf("%d",&num1);
   itoa(num1,st1,10);
   for(i=0;i<4;i++)
   {
      for(j=0;j<4;j++)
      {
        if(st[i]==st1[j])
          z++;
      }
      if(st[i]==st1[i])
        x++;
   }
   printf("%d,%d\n",x,z-x);
   if(x!=4)
   printf("Lost%c%c%c \n\n",1,1,1);
     else
       printf("Win \n\n");
   printf("Press R to contine or Press Q quit\n");
   c=getch();
   }
   return 0;
}
2010-01-31 17:04
快速回复:C语言程序题
数据加载中...
 
   



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

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