首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

不知道到底是哪错了?解决方法

2012-03-05 
不知道到底是哪错了?以下是小弟照书(PDF不是很清楚)编的一个猜数字的小游戏,对于文本属性的一些问题还是不

不知道到底是哪错了?
以下是小弟照书(PDF不是很清楚)编的一个猜数字的小游戏,对于文本属性的一些问题还是不大明白,比如像textattr的用法,请大家帮忙看看哪有错误!

#include   <math.h>
#include   <stdio.h>
#include   <stdlib.h>
#include   <process.h>
void   main(void)
{
    int   answer[4],guess=0,a,b,times=0,i,j;                   /*定义数组answer[4]用来放答案,guess用来放玩家所猜出的数,位置和数字都对的用A来表示,只是数字对的用B表示*/
    clrscr();
    for   (i=0;i <=3;i++)
            {
randomize();                                                     /*随机数发生器*/
answer[i]=rand()%10;                                     /*这句就有些不明白了,请达人详解*/
for   (j=0;j <i;j++)
        {
            while   (answer[i]==answer[j])
        {
            answer[i]=rand()%10;
            j=-1;
        }
        }
            }
    window   (0,0,40,11)                                      
    textattr   (YELLOW+(green < <4));           /*这就是最不明白的地方了*/
    cprintf   ( "please   guess\n ");
    while   (a!=4)                                             /*从这里开始进入猜数和答案的对比循环*/
{
    a=0;
    b=0;
    times++;
    do                                             /*为什么要用DO循环??*/
        {
            window   (10,0,40,21);
            cprintf   ( "\r%d ",times);
            cscanf   ( "%d ",&guess);
            if   (guess==0)
  exit   (0);
        }
    while   (guess <0||guess> 9999);
for   (i=3;i> -1;i--)
        {
            for   (j=0;j <4;j++)
    {
        if   ((int)(guess/pow10(i)==answer[j])           /*开始比较最高位的数是否和答案一样*/
              {
  if   (i+j=3)   a=a+1;
  else   b=b+1;
              }
    }
            guess=guess-(int)(guess/pow10(i))*pow10(i);         /*去掉上次比较的那一位数,进入下一位比较*/
        }
window   (20,0,40,31);
cprintf   ( "\n\r%   %dA%dB\n ",a,b);                     /*最后输出是_A_B*/
}
}


[解决办法]
answer[i]=rand()%10; /*这句就有些不明白了,请达人详解*/
-----rand()返回随机数,整句给answer数组产生0到9的随机数
[解决办法]
textattr (YELLOW+(green < <4)); /*这就是最不明白的地方了*/
------大概是给屏幕上的字设定颜色, < <为右移,实际效果为除于16
[解决办法]
函数名: rand
功 能: 随机数发生器
用 法: void rand(void);
程序例:

#include <stdlib.h>
#include <stdio.h>

int main(void)
{
int i;

printf( "Ten random numbers from 0 to 99\n\n ");
for(i=0; i <10; i++)
printf( "%d\n ", rand() % 100);
return 0;
}


[解决办法]
DO循环
适合用在至少需要执行一次的地方
[解决办法]
rand()%10;产生的数字是0-9

textattr (YELLOW+(green < <4)); 这个是设置文本属性的函数,其参数可以用一个字节即8位数来描述-----> [BLINK][R][G][B][I][R][G][B]
闪烁 红 绿 蓝 亮 红 绿 蓝
| | | |
------- ------
| |
背景色 前景色
其中低4位用来设置字符颜色(对应值0~15),4~6位来显示背景色(0~7的颜色值)
YELLOW+(green < <4)表示左移4位,变成4~6位

热点排行