| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 764 人关注过本帖, 1 人收藏
标题:这个程序怎么写
只看楼主 加入收藏
C语言菜女
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-5-1
收藏(1)
 问题点数:0 回复次数:7 
这个程序怎么写
输入两个四位数,其中任一个数的各位上的数字都不一样,
问,这两个数对应位上的数一样的有多少个,用A表示,数字一样但位置不同的又有多少个,用B表示
如1234 1352
就是1A2B
这个程序怎么写比较简单?
搜索更多相关主题的帖子: 数字 位数 位置 输入 
2008-05-01 16:06
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
很遗憾,我很久前写的猜数字游戏找不到了。。

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-05-01 16:20
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
核心大概是这个样子
假设你已经把4位数保存在数字a[4],b[4]中
程序代码:
A=B=0;
for(i=0;i<4;i++)
{
    for(j=0;j<4;j++)
    {
        if(a[i]==b[j])
        {
            B++;
            if(i==j)
                A++;
        }
    }
}

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-05-01 16:28
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
收藏
得分:0 
......................
2008-05-01 16:34
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
给你一个没完成的代码(同学等我吃饭 不能不去 所以没写完)
2008-05-01 17:22
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>

#define NUM_LEN     4
#define ESC         27
#define BACK        8

typedef struct
{
    int A ;
    int B ;
} NumRightAB;

enum level{easy = 30, normal = 20, hard = 10, esc = 0} gameLevel;

int init(void) ;
level startChoose(void) ;
void initNum(int num[]) ;
void inputNum(int num[]) ;
NumRightAB checkNum(int inNum[], int num[]) ;
int outReslut(NumRightAB reslut) ;
int outWin(void) ;
int outLose(void) ;



int main(void)
{
    int num[4] = {0} ;
    int inNum[4] = {0} ;
    NumRightAB reslut ;
    int gameCount ;
   
    init() ;
    initNum(num) ;
    if(!(gameLevel = startChoose()))
    {
        printf("游戏结束!") ;
        return 1 ;
    }
    else
    {
        system("cls") ;
        printf("\t猜数字游戏\n") ;
        printf("数字长度:%d/t最多机会:%d\n", NUM_LEN, gameLevel) ;
        gameCount = gameLevel ;
    }
    do
    {
        inputNum(inNum) ;
        reslut = checkNum(inNum, num) ;
        outReslut(reslut) ;
        gameCount-- ;
    }while(reslut.A != NUM_LEN && gameCount) ;
   
    if(gameCount)
    {
        outWin() ;
    }
    else
    {
        outLose() ;
    }

    return 0 ;
}

//init()函数
//说明:对整个游戏进行图像和随机开始点等设置进行初始化
int init(void)
{
    srand(time(NULL)) ;
    system("cls") ;

    return 0 ;
}

//startChoose()函数
//说明:选择游戏难度 1,2,3选择难度 4和ESC退出整个游戏
level startChoose(void)
{
    while(1)
    {
        system("cls") ;
        printf("\t猜数字游戏\n") ;
        printf("请选择游戏难度\n1。简单\n2。正常\n3.困难\n") ;
        switch(getch())
        {
        case    '1':
                return easy ;
        case    '2':
                return normal ;
        case    '3':
                return hard ;
        case    '4':
        case    ESC:
                return esc ;
        default:printf("输入有误!请按照正确要求输入!") ;
        }
    }
}

//initNum()函数
//说明:对游戏目标数组num进行初始化
void initNum(int num[])
{
    int i ;
   
    for(i = 0;i < NUM_LEN;i++)
    {
        num[i] = rand()%10 ;
    }
}

//inputNum()函数
//说明:等待用户输入猜测数组
void inputNum(int inNum[])
{
    int i ;
    char tchar = 0, ch = 0 ;
    char numChar[NUM_LEN] = "" ;
   
    for(i = 0;i < NUM_LEN;)
    {
        ch = getch() ;
        //确定输入的数字为0~9
        //0~9的ASCII码为 48~57 (ASC(0~9)+2)/ 10的值为 5
        tchar = (ch+2)/10 ;
        switch(tchar)
        {
        case    5:
                putchar(ch) ;
                inNum[i] = ch-'0' ;
                numChar[i] = ch ;
                i++ ;
                break ;
        case    BACK:
                numChar[i] = 0 ;
                i-- ;
                printf("\r%s", numChar) ;
                break ;
        default:break ;
        }
    }
}

//checkNum()函数
//说明:对输入的数组和目标数组进行对比 返回对比结果
NumRightAB checkNum(int inNum[], int num[])
{
    NumRightAB reslut = {0,0} ;

    printf("\n%dA%dB\n", reslut.A, reslut.B) ;

    return reslut ;
}

//outReslut()函数
//说明:输出对比结果
int outReslut(NumRightAB reslut)
{
    return 0 ;
}

//outWin()函数
//说明:胜利事件
int outWin(void)
{
    return 0 ;
}

//outLose()函数
//说明:失败事件
int outLose(void)
{
    return 0 ;
}
2008-05-01 17:22
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>

#define NUM_LEN     4
#define ESC         27
#define BACK        8

typedef struct
{
    int A ;
    int B ;
} NumRightAB;

enum level{easy = 30, normal = 20, hard = 10, esc = 0} gameLevel;

int init(void) ;
level startChoose(void) ;
void initNum(int num[]) ;
void inputNum(int num[]) ;
void checkNum(int inNum[], int num[], NumRightAB *reslut) ;
void outReslut(NumRightAB reslut) ;
void outWin(int gameCount) ;
void outLose(int num[]) ;

int main(void)
{
    int num[4] = {0} ;
    int inNum[4] = {0} ;
    NumRightAB reslut = {0, 0};
    int gameCount ;
   
    init() ;
    initNum(num) ;
    if(!(gameLevel = startChoose()))
    {
        printf("游戏结束!") ;
        return 1 ;
    }
    else
    {
        system("cls") ;
        printf("\t猜数字游戏\n") ;
        printf("数字长度:%d/t最多机会:%d\n", NUM_LEN, gameLevel) ;
        gameCount = gameLevel ;
    }
    do
    {
        inputNum(inNum) ;
        checkNum(inNum, num, &reslut) ;
        outReslut(reslut) ;
        gameCount-- ;
    }while(reslut.A != NUM_LEN && gameCount) ;
   
    if(gameCount)
    {
        outWin(gameCount) ;
    }
    else
    {
        outLose(num) ;
    }

    return 0 ;
}

//init()函数
//说明:对整个游戏进行图像和随机开始点等设置进行初始化
int init(void)
{
    srand(time(NULL)) ;
    system("cls") ;

    return 1 ;
}

//startChoose()函数
//说明:选择游戏难度 1,2,3选择难度 4和ESC退出整个游戏
level startChoose(void)
{
    while(1)
    {
        system("cls") ;
        printf("\t猜数字游戏\n") ;
        printf("请选择游戏难度\n1。简单\n2。正常\n3。困难\n") ;
        switch(getch())
        {
        case    '1':
                return easy ;
        case    '2':
                return normal ;
        case    '3':
                return hard ;
        case    '4':
        case    ESC:
                return esc ;
        default:printf("输入有误!请按照正确要求输入!") ;
        }
    }
}

//initNum()函数
//说明:对游戏目标数组num进行初始化
void initNum(int num[])
{
    int i ;
    int tNum[10] = {0} ;
   
    for(i = 0;i < NUM_LEN;i++)
    {
        if(!tNum[i])
        {
            num[i] = rand()%10 ;
            tNum[num[i]] = 1 ;
        }
    }
}

//inputNum()函数
//说明:等待用户输入猜测数组
void inputNum(int inNum[])
{
    int i ;
    char tchar = 0, ch = 0 ;
    char numChar[NUM_LEN] = "" ;
   
    for(i = 0;i < NUM_LEN;)
    {
        ch = getch() ;
        //确定输入的数字为0~9
        //0~9的ASCII码为 48~57 (ASC(0~9)+2)/ 10的值为 5
        tchar = (ch+2)/10 ;
        if(tchar == 5)
        {
            putchar(ch) ;
            inNum[i] = ch-'0' ;
            numChar[i] = ch ;
            i++ ;
        }
        switch(ch)
        {
        case    BACK:               
                i-- ;
                numChar[i] = 0 ;
                printf("\r%s", numChar) ;
                break ;
        default:break ;
        }
    }
}

//checkNum()函数
//说明:对输入的数组和目标数组进行对比 返回对比结果
void checkNum(int inNum[], int num[], NumRightAB *reslut)
{
    int i, j ;

    reslut->A = 0 ;
    reslut->B = 0 ;

    for(i = 0;i < NUM_LEN;i++)
    {
        for(j = 0;j < NUM_LEN;j++)
        {
            if(inNum[i] == num[j])
            {
                reslut->B ++ ;
                break ;
            }
        }
        if(inNum[i] == num[i])
        {
            reslut->A ++ ;
        }
    }
}

//outReslut()函数
//说明:输出对比结果
void outReslut(NumRightAB reslut)
{
    printf("\n%dA%dB\n", reslut.A, reslut.B) ;
}

//outWin()函数
//说明:胜利事件
void outWin(int gameCount)
{
    printf("恭喜你猜对这%d个数\n", NUM_LEN) ;
    printf("你用了%d步机会!\n", gameCount) ;
}

//outLose()函数
//说明:失败事件
void outLose(int num[])
{
    int i ;
    
    printf("你输掉了这次机会!") ;
    for(i = 0;i < NUM_LEN;i++)
        printf("答案:%d\n", num[i]) ;
}
2008-05-01 20:02
DoNO1
Rank: 1
等 级:新手上路
帖 子:155
专家分:0
注 册:2008-3-27
收藏
得分:0 
顶顶顶顶顶顶
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
2008-05-02 22:33
快速回复:这个程序怎么写
数据加载中...
 
   



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

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