发新话题
打印

[TIPS]C学习笔记 发少量谭浩强C程序设计SE课后题答案

我现在看“printf”感觉不习惯,还是习惯“cout <<”。
当初学C语言的时候老师强制让我们保存为".cpp"。
你的笔记注释真够详细的。 [s:17]

TOP

printf cout 是完全不同的两个东西(废话)
但是我要说的和您想的不同:)
在您不了解对象的内部情况的时候可以使用cout比较好 这显示出了C++的优势 所以您只需要接口就可以了...
其实说cout是打印数据和转译其中的内容 并不准确 在C99的定义中 cout的官方解释是:将程序插入输出数据流...

承让了:)
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

两段代码功能一样
复制内容到剪贴板
代码:
#include "stdio.h"

int main(void)
{
    int x,y;
    for(x=0;x<10;x++,printf("\n"))
        for(y=0;y<10;y++)
            printf("X");
        return 0;
}
复制内容到剪贴板
代码:
#include "stdio.h"

int main(void)
{
    int x,y;
    for(x=0;x<10;x++)
    {
        for(y=0;y<10;y++)
        {
            printf("X");
        }
        printf("\n");
    }
        return 0;
}
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

注释是无锋之刃做的
复制内容到剪贴板
代码:
#include "stdlib.h"
#include "stdio.h"

// 前置声明
void do_heading(char *filename);

// 全局变量
int line=0, page=0;

int main(int argv, char *argc[])
{
    char buffer[256];
    FILE *fp;

    // 如果没有命令行参数,则在控制台上输入
    if(argv<2)
    {
        fprintf(stderr, "\nProper Usage is:");
        fprintf(stderr, "\n\nprint_it filename.ext\n");
        return(1);
    }

// 打开文件出错
if((fp=fopen(argc[1],"r")) == NULL)
{
    // 在标准错误台上输出信息
    fprintf(stderr, "Error opening file, %s!", argc[1]);
    // 结束程序
    return(1);
}

page=0;
line=1;
do_heading(argc[1]);

// 读出256个字符
while(fgets(buffer,256, fp)!=NULL)
{
    // 正好是55个字符的话
    if(line%55 == 0)
        do_heading(argc[1]);
}

    fprintf(stdprn, "\f");
    fclose(fp);
    return 0;
}

void do_heading(char *filename)
{
    // 页数加1
    page++;

        // 如果页数大于1,输出一个控制符
        if(page>1)
            fprintf(stdprn, "\f");

        // 输出一些信息
        fprintf(stdprn, "page: %d, %s\n\n",page, filename);
}
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

复制内容到剪贴板
代码:
//Program to calculate the product of two numbers.
#include <stdio.h>

int val1, val2, val3;

int product(int x, int y);

int main( void )
{
  //Get the first number
  printf("Enter a number between 1 and 100: ");
  scanf("%d", &val1);

  //Get the second number
  printf("Enter another number between 1 and 100: ");
  scanf("%d", &val2);

  //Calculate and display the product
  val3 = product(val1, val2);
  printf ("%d times %d = %d\n", val1, val2, val3);

  return 0;
}

//Function returns the product of the two values provided
int product(int x, int y)
{
   return (x * y);
}
复制内容到剪贴板
代码:
//Program to calculate the product of two numbers.
#include <stdio.h>


int product(int x, int y);

int main(void)
{
    int a1=0, a2=0, a3=0;

    printf("Please input a number between 1 and 100: ");
    scanf("%d",&a1);

    printf("Please input another number between 1 and 100: ");
    scanf("%d",&a2);

    a3 = product(a1, a2);
    printf("%d times %d is %d\n", a1, a2, a3);

    return 0;
}

int product(int x, int y)
{
    return(x * y);
}
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

子函数练习
复制内容到剪贴板
代码:
#include <stdio.h>

void display_line(void);

int main(void)
{
    display_line();
    printf("I hate this word.\n");
    display_line();

    return 0;
}

//print asterisk line fucntion
void display_line(void)
{
    int count;
    for(count=0;count<30;count++)
    {
        printf("*");
    }

    printf("\n");
}
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

strlen
复制内容到剪贴板
代码:
#include <stdio.h>
#include <string.h>

int main(void)
{
    char buffer[256];

    printf("Enter your name and press <Enter>:\n");
    gets( buffer );

    printf("\nYour name has %d character and spaces!", strlen(buffer));

    return 0;
}
复制内容到剪贴板
代码:
#include <stdio.h>
#include <string.h>

int main(void)
{
    char *string = "Fuck you gliet!";
    printf("%d\n", strlen(string));

    return 0;
}
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

学习到变量和常量存储信息的地方
下面的程序我加了注释 如果回头来自己看不懂是什么功能 那就去死
复制内容到剪贴板
代码:
//demonstrates variables and constants
#include <stdio.h>

//define a constant to convert from pounds to grams
#define GRAMS_PER_POUND 454

//define a constant for the start of the next century
const int TARGET_YEAR=2010;


int main(void)
{
    //declare the needed variables
    long weight_in_grams, weight_in_pounds;
    int year_of_birth, age_in_2010;

    //input data for user
    printf("Enter your weight in pounds: ");
    scanf("%d", &weight_in_grams);
    printf("\nEnter your year of birth: ");
    scanf("%d", &year_of_birth);

    //perform conversions

    weight_in_grams = weight_in_pounds * GRAMS_PER_POUND;
    age_in_2010 = TARGET_YEAR - year_of_birth;

    //display results on the screen

    printf("\nYour weight in grams = %ld", weight_in_grams);
    printf("\nIn 2010 you will be %d years old.\n", age_in_2010);

    return 0;
}
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

等会后面有个程序要想看懂 就必须要一些前置知识 其中有time和srand两个函数我不是很懂 找了资料
time函数
time_t time(time_t *thetime);
功能是取得系统的时间 需要包含头文件#include <time.h>
thetime:指向time_t变量的可选指针 在这个变量中存放当前的日期和时间 如果是NULL着忽略 代码举例如下
复制内容到剪贴板
代码:
#include <time.h>
#include <stdio.h>
#incude <dos.h>

int main(void)
{
       time_t t;
       time(&t);
       printf("The number of seconds since January 1, 1970 is %ld", t);
       return 0;
}
srand函数 原型
void srand(unsigned seed);
它的功能是 用来初始化随机数发生器 以便让随机数发生器产生可以预测的随即序列(nnd这JB叫什么解释呀)
头文件是#include <stdlib.h>
参数说明
seed是无符号整数 指明随机数序列的最小起点 注意是没有返回值的 下面来个演示程序
复制内容到剪贴板
代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
  int i;
  time_t t;
  srand((unsigned) time(&t));
  printf("Three random numbers from 0 to 99:");

  for(i=0;i<3;i++)
  printf("%d\n", rand()%100);
  return 0;
}
好 前置知识解决了 下面来看一个猜数字游戏 本来这个游戏是只要求能输入运行查看结果的 很不幸 我读懂了 比第一天有进步 第一天的程序是无锋帮我分析的
复制内容到剪贴板
代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define NO    0
#define YES   1

int main(void)
{
    int guess_value = -1;
    //要猜测的数字
    int number;
    //猜测次数
    int nbr_of_guesses;
    //这里必须要先等于NO 以便下面的while可以继续
    int done = NO;

    printf("\n\nGetting a random number......\n");

    //嘿嘿 上面的那个就是这里了
    srand( (unsigned) time( NULL ) );
    //取随机数字让你猜的那个
    number = rand();

    //猜测次数
    nbr_of_guesses = 0;
    while (done == NO)
    {
        printf("\nPick a number between 0 and %d>", RAND_MAX);
            scanf("%d", &guess_value);

        nbr_of_guesses++;
        //这里就是本单元学的if...else结构 用来判断你猜对没
        if ( number == guess_value)
        {
            done = YES;
        }
        else if(number < guess_value)
        {
            printf("\nYou guessed high!");
        }
        else
        {
            printf("\nYou guessed low!");
        }
    }

    printf("\nCongratulateions! You guessed right in %d Guesses!", nbr_of_guesses);
    printf("\nThe number was %d\n\n",number);


    return 0;
}
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

简单的递归调用
复制内容到剪贴板
代码:
# include <stdio.h>

unsigned int f, x;
unsigned int factorial(unsigned int a);

int main(void)
{
    puts("Enter an integer value between 1 and 8: ");
    scanf("%d", &x);

    if(x>8||x<1)
    {
        printf("Only values from 1 to 8 are acceptable!");
    }
    else
    {
        f = factorial(x);
        printf("%u factorial equals %u\n", x, f);
    }


    return 0;
}

unsigned int factorial(unsigned int a)
{
    if(a == 1)
        return 1;
    else
    {
        a*=factorial(a-1);
        return a;
    }
}
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

使用多条return语句的作业
原来的例子
复制内容到剪贴板
代码:
//Demonstrates using multiple return statements in a function.

#include <stdio.h>

int x, y, z;

int larger_of( int a, int b);

int main( void )
{
   puts("Enter two different integer values: ");
   scanf("%d%d", &x, &y);

   z = larger_of(x,y);

   printf("\nThe larger value is %d.", z);

  return 0;
}

int larger_of( int a, int b)
{
   if (a > b)
      return a;
   else
      return b;
}
要求子函数中只包含一条return 如下
复制内容到剪贴板
代码:
//Demonstrates using multiple return statements in a function.

#include <stdio.h>

int x, y, z;

int larger_of( int a, int b);

int main( void )
{
   puts("Enter two different integer values: ");
   scanf("%d,%d", &x, &y);

   z = larger_of(x,y);

   printf("\nThe larger value is %d.", z);

  return 0;
}

int larger_of( int a, int b)
{
   int re;
    re=a>b?a:b;

    return re;
}
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

求数组里的最大值 最小值 输入0终止接收
复制内容到剪贴板
代码:
#include <stdio.h>

#define MAX 100

int array[MAX];
int count = -1, maximum, minimum, num_entered, temp;

int main(void)
{
    puts("Enter interger values one per line.");
    puts("Enter 0 when finished.");

    //input the values
    do
    {
        scanf("%d", &temp);
        array[++count] = temp;
    }while ( count < (MAX-1) && temp !=0 );

    num_entered = count;

    //find the largest and smallest

    maximum = -32000;
    minimum = 32000;

    for ( count = 0; count <= num_entered && array[count] != 0; count++ )
    {
        if ( array[count] > maximum )
            maximum = array[count];

        if ( array[count] < minimum )
            minimum = array[count];
    }

    printf("\nThe maximum value is %d", maximum);
    printf("\nThe minimum value is %d\n", minimum);

    return 0;
}
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

成绩管理系统
复制内容到剪贴板
代码:

#include<stdio.h>      /* head file*/
#include<stdlib.h>
#include<graphics.h>
#include<conio.h>
#include<bios.h>
#include<time.h>
#define LEFT  70      /* the cursor&#39;s place */
#define RIGHT  78
#define UP    72
#define DOWN  80
#define ESC  283
#define ENTER  7181
#define F10 17408      /* enter menu */
#define F1 15104       /* help*/
#define len sizeof(Fname)

long a_sta[50];       /*answer stack*/
union key           /*use bioskey*/
{char sym[2];
int  sym2;
}KEY,Choose,ans;
union inkey
{int c;
char ch[2];
}sc,key;
static int bx=45,by=5,ex,ey;    /*cursor&#39;s place*/
FILE *fp,*fp2;             /*FILE pointer*/
char filename[20];
int wrong[50];             /*Wrong answer&#39;s number*/
struct fname              /*student&#39;s information*/
{
char filename[20];
char name[20];
int  level;
int  score;
struct fname *next;
}*message,*head;
typedef struct fname Fname;


void choose_menu(void);       /* used funtion*/
void place(int ,int );
void re(int,int);
void Screen(void);
void SFile(void);
void Stest(void);
void Scheck(void);
void choose_act(void);
char *save(void);
void load(void);
void lv1(int,int,int,int,int,int);
void lv2(int,int,int,int,int,int);
void lv3(void);
int ans1(int,int,int,int,int,int,int,int);
void fangkuai(void);
char *intext(int,int);
void loadfile(void);
Fname *save_name(Fname*);
Fname *load_name(Fname*);
Fname *input(Fname*);
void print_list(Fname*);
Fname *sread(Fname*);
void Sl(void);
void pw(void);
void sename(void);
void selv(void);
void sesc(void);
void menu(void);
void Last(void);
void help(void);

void main()
{int i,gdr=DETECT,gmo;
head=(Fname*)malloc(len);
head=NULL;
  {if((fp2=fopen("wuxi.txt","rb"))!=NULL)  /*information file*/
   head=load_name(head);
   fclose(fp);
  }
initgraph(&gdr,&gmo,"");
menu();            /* the first screen*/
if(key.c==F1)help();
cleardevice();
Screen();
setbkcolor(BLUE);
outtextxy(15,449,"Press F10 into menu");
Choose.sym2=bioskey(0);
while(Choose.sym2!=ESC)
  { if(Choose.sym2==F10)
    choose_menu();
    Choose.sym2=bioskey(0);
   }
closegraph();
}
void choose_menu()    /*choose what you want to choose*/
{setcolor(WHITE);
place(bx,by);
KEY.sym2=bioskey(0);
while(KEY.sym2!=ESC)
  {re(bx,by);
   if(KEY.sym[0]==0)
     switch(KEY.sym[1])
        {case 0x4b: bx=bx-208;if(bx<=0)bx=461;break;
         case 0x4d: bx=bx+208;if(bx>=669)bx=45;break;
         }
   else
     if(KEY.sym2==ENTER)
      switch(bx)
         {case 45:
             Screen();
             SFile();
             place(bx,by);
             choose_act();
             break;
        case 253:
             Screen();
             Stest();
             place(bx,by);
             choose_act();
             break;
        case 461:
             Screen();
             Scheck();
             place(bx,by);
             choose_act();
             break;
         }
    place(bx,by);
    KEY.sym2=bioskey(0);
    Screen();
  }
}
void place(int a0,int a1)             /* cover the son_menu*/
{ setfillstyle(SOLID_FILL,WHITE);
  bar(a0,a1,a0+60,a1+15);
  switch(a0)
    {case 45:
        setcolor(RED);
        outtextxy(50,10,"File");
        setfillstyle(SOLID_FILL,BLUE);
        bar(11,449,620,459);
        setcolor(YELLOW);
        outtextxy(15,449,"Press ENTER into FILE,Press ESC to exit");
        break;
    case 253:setcolor(RED);
         outtextxy(258,10,"Test");
         setfillstyle(SOLID_FILL,BLUE);
         bar(11,449,620,459);
         setcolor(YELLOW);
         outtextxy(15,449,"Press ENTER into LEVEL,Press ESC to exit");
         break;
    case 461:
         setcolor(RED);
         outtextxy(466,10,"Search");
         setfillstyle(SOLID_FILL,BLUE);
         bar(11,449,620,459);
         setcolor(YELLOW);
         outtextxy(15,449,"Press ENTER to SEARCH,Press ESC to exit");
         break;
    }
}
  void re(int a0,int a1)       /*cover the main_menu*/
{ setfillstyle(EMPTY_FILL,RED);
  setcolor(YELLOW);
  bar(a0,a1,a0+80,a1+15);
   outtextxy(50,10,"File");
   outtextxy(258,10,"Test");
   outtextxy(466,10,"Search");
}
void Screen()
{
setfillstyle(SOLID_FILL,BLUE);
bar(1,1,679,479);
setcolor(LIGHTCYAN);
rectangle(10,1,629,25);
rectangle(10,30,629,469);
line(10,439,629,439);
setcolor(YELLOW);
outtextxy(50,10,"File");
outtextxy(258,10,"Test");
outtextxy(466,10,"Search");
}
  void SFile()
{setfillstyle(SOLID_FILL,WHITE);
  bar(15,20,150,180);
  setcolor(BLACK);
  rectangle(20,30,140,170);
  outtextxy(35,50,"Load");
  outtextxy(35,90,"Help");
  outtextxy(35,130,"Exit");
}
  void Stest()
{setfillstyle(SOLID_FILL,WHITE);
  bar(225,20,350,180);
  setcolor(BLACK);
  rectangle(230,30,340,170);
  outtextxy(245,50,"LV1");
  outtextxy(245,90,"LV2");
  outtextxy(245,130,"LV3");
}
  void Scheck()
{setfillstyle(SOLID_FILL,WHITE);
  bar(430,20,545,180);
  setcolor(BLACK);
  rectangle(440,30,535,170);
  outtextxy(455,50,"By name");
  outtextxy(455,90,"By lv");
  outtextxy(455,130,"By score");
}
  void choose_act()
{ Fname *p;
  ex=bx-15;
  ey=by+35;
  Choose.sym2=bioskey(0);
  while(Choose.sym2!=ESC)
    { setfillstyle(SOLID_FILL,WHITE);
    bar(ex,ey,ex+80,ey+20);
    switch(bx)
       { case 45:SFile();break;
        case 253:Stest();break;
        case 461:Scheck();break;
        }
    setcolor(RED);
    if(!Choose.sym[0]){
      switch(Choose.sym[1])
        {case UP:  ey-=40;if(ey<40)ey=120;break;
        case DOWN:ey+=40;if(ey>120)ey=40;break;
        }

     setfillstyle(SOLID_FILL,BLACK);
     bar(ex,ey,ex+80,ey+20);
     switch(ex)
     { case 30:
          switch(ey)
            {
            case 40:outtextxy(35,50,"Load");
                    setfillstyle(SOLID_FILL,BLUE);
                bar(11,449,620,459);
                    setcolor(YELLOW);
                outtextxy(15,449,"Press ENTER into Open file,Press UP\\DOWN to choose,Press ESC to exit");
                break;
            case 80:outtextxy(35,90,"Help");
                    setfillstyle(SOLID_FILL,BLUE);
                bar(11,449,620,459);
                    setcolor(YELLOW);
                outtextxy(15,449,"Press ENTER into Save file,Press UP\\DOWN to choose,Press ESC to exit");
                break;
            case 120:outtextxy(35,130,"Exit");
                     setfillstyle(SOLID_FILL,BLUE);
                 bar(11,449,620,459);
                     setcolor(YELLOW);
                 outtextxy(15,449,"Press ENTER into Exit dos,Press UP\\DOWN to choose,Press ESC to exit");
                 break;
            }
           break;
       case 238:
          switch(ey)
            {
            case 40:outtextxy(245,50,"LV1");
                setfillstyle(SOLID_FILL,BLUE);
                bar(11,449,620,459);
                    setcolor(YELLOW);
                outtextxy(15,449,"Press ENTER into LV1,Press UP\\DOWN to choose,Press ESC to exit");
                break;
            case 80:outtextxy(245,90,"LV2");
                    setfillstyle(SOLID_FILL,BLUE);
                bar(11,449,620,459);
                    setcolor(YELLOW);
                outtextxy(15,449,"Press ENTER into LV2,Press UP\\DOWN to choose,Press ESC to exit");
                break;
            case 120:outtextxy(245,130,"LV3");
                     setfillstyle(SOLID_FILL,BLUE);
                 bar(11,449,620,459);
                     setcolor(YELLOW);
                 outtextxy(15,449,"Press ENTER into LV3,Press UP\\DOWN to choose,Press ESC to exit");
                 break;
            }
            break;
       case 446:
          switch(ey)
            {
            case 40:outtextxy(455,50,"By name");
                    setfillstyle(SOLID_FILL,BLUE);
                bar(11,449,620,459);
                    setcolor(YELLOW);
                outtextxy(15,449,"Press ENTER into Justice,Press UP\\DOWN to choose,Press ESC to exit");
                break;
            case 80:outtextxy(455,90,"By lv");
                    setfillstyle(SOLID_FILL,BLUE);
                bar(11,449,620,459);
                    setcolor(YELLOW);
                outtextxy(15,449,"Press ENTER into Return test,Press UP\\DOWN to choose,Press ESC to exit");
                break;
            case 120:outtextxy(455,130,"By score");
                 setfillstyle(SOLID_FILL,BLUE);
                 bar(11,449,620,459);
                     setcolor(YELLOW);
                 outtextxy(15,449,"Press ENTER into Exit,Press UP\\DOWN to choose,Press ESC to exit");
                 break;
            }
            break;
         }
        }
      else if(Choose.sym2==ENTER)
        {
         switch(ex)
            {  case 30:
                switch(ey)
                 {case 40: load();break;
                  case 80: help();head=save_name(head);break;
                  case 120:Last();exit(0);break;
                 }
                break;
            case 238:
                 switch(ey)
                  {
                  case 40:head=input(head);p=sread(head);p->level=1;Screen();lv1(20,40,50,125,40,0);p->score+=ans1(95,40,50,125,40,4,0,2);save();head=save_name(head);
                      Screen(); pw();getch();choose_menu();break;
                  case 80:head=input(head);p=sread(head);p->level=2;Screen();lv2(20,40,20,150,70,0);p->score+=ans1(125,40,20,150,70,3,0,5);save();head=save_name(head);
                      Screen(); pw();getch();choose_menu();break;
                  case 120:head=input(head);p=sread(head);p->level=3;Screen();lv3();p->score+=ans1(90,35,20,125,20,4,0,1);p->score+=ans1(125,115,20,150,20,3,20,2);p->score+=ans1(250,215,10,1,20,0,40,4);save();head=save_name(head);
                       Screen();pw();getch();choose_menu();
                  }
                 break;
             case 446:
                switch(ey)
                 {
                  case 40:sename();break;
                  case 80:selv();break;
                  case 120: sesc(); break;
                 }
                break;
            }
        }
     Choose.sym2=bioskey(0);
     }
   Screen();
}
char *save(void)
{
int i, j;
strcpy(filename,sread(head)->filename);
if((fp=fopen(filename,"wb"))==NULL){
   outtext("cannot open this file!");
   choose_menu();
  }
outtextxy(260,449,"waiting....");
  for(i=1;i<=470;i++){
    for(j=1;j<=635;j++){
    fputc(getpixel(j,i),fp);
    }
    }
  fclose(fp);
  setfillstyle(SOLID_FILL,BLUE);
  bar(11,449,620,459);
  outtextxy(260,449,"save over!");
  setfillstyle(SOLID_FILL,BLUE);
  bar(15,471,639,479);
  return filename;
}

void load(void)
{
  char *choice=" ";
  fangkuai();
  outtextxy(210,270,"1.load filename");
  outtextxy(210,300,"2.load file");
  outtextxy(210,330,"  input your choice:");
  strcpy(choice,intext(370,330));
  getch();
  setfillstyle(SOLID_FILL,BLUE);
  bar(200,200,500,400);
  switch(*choice)
   {case &#39;1&#39;: head=load_name(head);print_list(head);break;
    case &#39;2&#39;: loadfile(); break;
    default:  return;
   }
  choose_menu();
}
void loadfile(void)
{ int i,j;
  fangkuai();
  outtextxy(210,300,"input filename:");
  strcpy(filename,intext(350,300));
  if((fp=fopen(filename,"rb"))==NULL){
     outtext("Cannot open this file!");
     setfillstyle(SOLID_FILL,BLUE);
     bar(11,449,620,459);
     choose_menu();
    }
  setfillstyle(SOLID_FILL,BLUE);
  bar(11,449,620,459);
  outtextxy(260,449,"loading.....");
  for(i=1;i<=470;i++){
    for(j=1;j<=635;j++){
     putpixel(j,i,fgetc(fp));
    }
  }
  getch();
  fclose(fp);
}

void lv1(int x,int y,int length,int dx,int dy,int sta)
{
int first,second,mid[4],ans,t,k;
int count;
time_t ti;
char str1[25],str2[25];
int cx=x,cy=y;
srand((unsigned)time(&ti));
for(count=0;count<length;count++)
  {
  first=rand()%100+1;
  second=rand()%100+1;
  if(first<second){t=first;first=second;second=t;}
  ans=rand()%4+1;
  itoa(first,str1,10);
  itoa(second,str2,10);
  strcat(str2,"=");
  switch(ans)
    {case 1: a_sta[count+sta]=first+second; outtextxy(cx+10,cy,str1);outtextxy(cx+35,cy,"+");outtextxy(cx+50,cy,str2);break;
    case 2: a_sta[count+sta]=first-second; outtextxy(cx+10,cy,str1);outtextxy(cx+35,cy,"-");outtextxy(cx+50,cy,str2);break;
    case 3: a_sta[count+sta]=first*second; outtextxy(cx+10,cy,str1);outtextxy(cx+35,cy,"*");outtextxy(cx+50,cy,str2);break;
    case 4: a_sta[count+sta]=first/second; outtextxy(cx+10,cy,str1);outtextxy(cx+35,cy,"/");outtextxy(cx+50,cy,str2);break;
    }
  cx+=dx;
  if(cx>x+4*dx){cy+=dy;cx=x;}
  }
}

void lv2(int x,int y,int length,int dx,int dy,int sta)
{int num;
long a,b,c,d,t,op1,op2;
int cx=x,cy=y;
char str1[25],str2[25],str3[25];
static time_t ti;
srand((unsigned)time(&ti));
for(num=0;num<length;num++)
  {  a=rand()%100+1;
    b=rand()%100+1;
    c=rand()%100+1;
    if(a<b){t=a;a=b;b=t;}
    op1=rand()%4+1;
    itoa(a,str1,10);
    itoa(b,str2,10);
    switch(op1)
     {case 1: d=a+b;outtextxy(cx,cy,str1);outtextxy(cx+25,cy,"+");outtextxy(cx+40,cy,str2);break;
    case 2: d=a-b;outtextxy(cx,cy,str1);outtextxy(cx+25,cy,"-");outtextxy(cx+40,cy,str2);break;
    case 3: d=a*b;outtextxy(cx,cy,str1);outtextxy(cx+25,cy,"*");outtextxy(cx+40,cy,str2);break;
    case 4: d=a/b;outtextxy(cx,cy,str1);outtextxy(cx+25,cy,"/");outtextxy(cx+40,cy,str2);break;
     }
op2=rand()%4+1;
itoa(c,str3,10);
  switch(op2)
  {case 1: a_sta[num+sta]=d+c;outtextxy(cx+65,cy,"+");outtextxy(cx+80,cy,str3);outtextxy(cx+100,cy,"=");break;
  case 2: a_sta[num+sta]=d-c;outtextxy(cx+65,cy,"-");outtextxy(cx+80,cy,str3);outtextxy(cx+100,cy,"=");break;
  case 3: a_sta[num+sta]=d*c;outtextxy(cx+65,cy,"*");outtextxy(cx+80,cy,str3);outtextxy(cx+100,cy,"=");break;
  case 4: a_sta[num+sta]=d/c;outtextxy(cx+65,cy,"/");outtextxy(cx+80,cy,str3);outtextxy(cx+100,cy,"=");break;
  }
  if((op1==1||op1==2)&&(op2==3||op2==4)){outtextxy(cx-5,cy,"(");outtextxy(cx+60,cy,")");}
  cx+=dx; if(cx>x+3*dx){cy+=dy;cx=x;}
  }
}
void lv3()
{long a0;
long n,d,c,t1,t2;
int x=15,y=215;
char str[25];
lv1(15,35,20,125,20,0);
lv2(15,115,20,150,20,20);
for(t1=0;t1<10;t1++)
  {
  c=rand()%2+1;
  if(c==1){a0=rand()%9+1;d=rand()%5+1;n=rand()%99+50;}
    else {a0=rand()%3+1;d=rand()%2+1;n=rand()%12+10;}
  a_sta[t1+40]=0;
  if(c==1)
  for(t2=0;t2<n;t2++)
    {a_sta[t1+40]+=a0;
    ltoa(a0,str,10);
    a0=a0+d;
    if(t2==0||t2==1||t2==2)
     {outtextxy(x,y,str);
    outtextxy(x+15,y,"+");
     }
    if(t2==2)outtextxy(x+25,y,"...");
    if(t2==n-1){outtextxy(x+40,y,"+");outtextxy(x+55,y,str);outtextxy(x+120,y,"=");}
    if(t2==0||t2==1||t2==2)x+=20;
    }
  else
  for(t2=0;t2<n;t2++)
    {a_sta[t1+40]+=a0;
    ltoa(a0,str,10);
    a0=a0*d;
    if(t2==0||t2==1||t2==2)
     {outtextxy(x,y,str);
    outtextxy(x+15,y,"+");
     }
    if(t2==2)outtextxy(x+25,y,"...");
    if(t2==n-1){outtextxy(x+40,y,"+");outtextxy(x+55,y,str);outtextxy(x+120,y,"=");}
    if(t2==0||t2==1||t2==2)x+=20;
    }
  x=15;
  y+=20;
  }

}
int ans1(int x,int y,int length,int dx,int dy,int m,int sta,int ds)
{
int num,ax=x,ay=y,i=0,score=0,j=sta;
long anst=0;
char *ch1,*ch/*,daan[25]*/;
for(num=0;num<length;num++)
  { ch1=" ";
    ch="                                                                                                                                                          ";
  /*  ltoa(a_sta[num+sta],daan,10);*/
    moveto(ax,ay);
  /*  outtextxy(ax,ay,daan);*/ /* you can see the answer*/
    while(ch[i++]!=&#39;\r&#39;)
    {
    ans.sym2=bioskey(0);
    if(ans.sym2==F10)choose_menu();
    ch1[0]=ans.sym[0];
    anst=atol(ch1)+anst*10;
    outtext(ch1);
    ch[i]=ch1[0];
     }
    ch[--i]=&#39;\0&#39;;
    anst/=10;
    if(a_sta[num+sta]<0)anst=-anst;
    if(anst==a_sta[num+sta])score=score+ds;
    else {wrong[j++]=num+sta+1;
        }
    ax+=dx;
    if(ax>x+m*dx){ax=x;ay+=dy;}
    anst=0;
    }
  return score;
}
void pw(void)
{Fname *p;
int i,x=350,y=250;
char str[25],str1[25];
setfillstyle(SOLID_FILL,BLUE);
bar(200,200,500,400);
p=sread(head);
itoa(p->score,str,10);
fangkuai();
setcolor(RED);
outtextxy(210,230,"SCORE:");
outtextxy(350,230,str);
outtextxy(230,250,"WRONG:");
  for(i=0;i<50;i++)
  {if(wrong[i]!=0)
    {itoa(wrong[i],str1,10);
    outtextxy(x,y,str1);
    x+=40;
    if(x>450){y+=20;x=230;}
    }
  }
getch();
setfillstyle(SOLID_FILL,BLUE);
bar(200,200,500,430);
setcolor(YELLOW);
}
void fangkuai(void)
{int i,j;
for(j=200;j<=400;j++)
  for(i=200;i<=500;i++)
  putpixel(i,j,15^getpixel(i,j));
}
char *intext(int x,int y)
{char *ch,*ch1;
int i=0;
moveto(x,y);
ch1=" ";
ch="             ";
  do
   {
    sc.c=bioskey(0);
    ch1[0]=sc.ch[0];
    outtext(ch1);
    ch[i]=ch1[0];
   }while(!(ch[i++]==&#39;\r&#39;));
  ch[--i]=&#39;\0&#39;;
  return(ch);
}

  Fname *save_name(Fname *head)
{
  Fname *info;
  if((fp2=fopen("wuxi.txt","wb"))==NULL)
    {outtext("cannot open this file\n");
     choose_menu();
    }
  else
   info=head;
   while(info!=NULL)
    { if((fp=fopen(info->filename,"rb"))!=NULL)
     fwrite(info,sizeof(Fname),1,fp2);
     info=info->next;
    }
  fclose(fp);
  fclose(fp2);
  return(head);
}
Fname *load_name(Fname *head)
{
  Fname *last,*info;
  if((fp=fopen("wuxi.txt","rb"))==NULL){
   outtext("Cannot open file.\n");
   choose_menu();
      }
  head=(Fname*)malloc(len);
  fread(head,len,1,fp);
  last=head;
  while(!feof(fp))
  { info=(Fname *)malloc(len);
   if(!info){
   printf("Out of Memory");
   }
   if(1!=fread(info,len,1,fp)) break;
   last->next=info;
   last=info;
  }
  fclose(fp);
  return(head);
}
Fname *input(Fname *ht)
{
Fname *p1,*p2,*c;
char com[20];
setfillstyle(SOLID_FILL,BLUE);
bar(200,200,500,400);
fangkuai();
outtextxy(210,210,"input filename:");
  if(ht!=NULL)
  {
   p1=(Fname*)malloc(len);
   p2=(Fname*)malloc(len);
   p2=ht;
   while(p2->next!=NULL)
   p2=p2->next;
   strcpy(com,intext(350,210));
   c=ht;
   while(c!=NULL)
    {
     if(strcmp(c->filename,com)==0){outtext("REPEATED NAME");getch();return input(ht);}
     else c=c->next;
    }
   if((fp=fopen(com,"wb"))==NULL){outtextxy(220,240,"Cannot open this file");getch();return input(ht);}
  else{
   strcpy(p1->filename,com);
   outtextxy(210,350,"Input name:");
   strcpy(p1->name,intext(350,350));
   p1->score=0;
   p1->next=NULL;
   p2->next=p1;
   p2=p1->next;
     }
  }
else
  {ht=(Fname*)malloc(len);
   strcpy(com,intext(350,210));
    if((fp=fopen(com,"wb"))==NULL){outtextxy(220,240,"Cannot open this file");getch();return input(ht);}
  else{
     strcpy(ht->filename,com);
     outtextxy(210,350,"Input name:");
     strcpy(ht->name,intext(350,350));
     ht->score=0;
     ht->next=NULL;
    }
  }
getch();
setfillstyle(SOLID_FILL,BLUE);
bar(200,200,500,400);
return(ht);
}
void print_list(Fname *ht)
{
Fname *p;
int i=60,j=40;
char str[25];
Sl();
p=ht;
settextstyle(0,0,1);
while(p!=NULL)
  {itoa(p->score,str,10);
   outtextxy(i,j,p->filename);
   outtextxy(i+150,j,p->name);
   switch(p->level)
    {case 1: outtextxy(i+300,j,"lv1");break;
     case 2: outtextxy(i+300,j,"lv2");break;
     case 3: outtextxy(i+300,j,"lv3");break;
    }
   outtextxy(i+450,j,str);
   p=p->next;
   j=j+10;
  }
getch();
settextstyle(0,0,0);
Screen();
choose_menu();
}
void Sl(void)
{
setfillstyle(SOLID_FILL,YELLOW);
bar(0,0,639,479);
setlinestyle(0,0,1);
settextstyle(0,0,2);
outtextxy(150,2,"-----INFORMATION----");
outtextxy(130,430,"--PRESS ANY KEY TO RETURN--");
rectangle(50,25,589,419);
settextstyle(0,0,1);
outtextxy(60,30,"FILENAME");
outtextxy(210,30,"NAME");
outtextxy(360,30,"LEVEL");
outtextxy(510,30,"SCORE");
line(50,38,589,38);
setlinestyle(0,0,3);
}
Fname *sread(Fname *head)
{Fname *last,*info;
info=head;
  while(info!=NULL)
  {last=info;
   info=info->next;
  }
  return(last);
}
void sename(void)
{char str1[25],str[25];
int  i=60,j=40;
Fname *p;
fangkuai();
outtextxy(210,300,"input name:");
strcpy(str1,intext(300,300));
Sl();
p=head;
settextstyle(0,0,1);
while(p!=NULL)
  {if(strcmp(str1,p->name)==0)
    {itoa(p->score,str,10);
     outtextxy(i,j,p->filename);
     outtextxy(i+150,j,p->name);
    switch(p->level)
     {case 1: outtextxy(i+300,j,"lv1");break;
      case 2: outtextxy(i+300,j,"lv2");break;
      case 3: outtextxy(i+300,j,"lv3");break;
     }
    outtextxy(i+450,j,str);
    j=j+10;
    }
   p=p->next;
  }
if(j==40)outtextxy(i,j,"CANNOT FIND THE NAME!");
getch();
settextstyle(0,0,0);
Screen();
choose_menu();
}
  void selv(void)
{char str1[25],str[25];
int  i=60,j=40,lv;
Fname *p;
fangkuai();
outtextxy(210,300,"input level:");
strcpy(str1,intext(300,300));
lv=atoi(str1);
Sl();
p=head;
settextstyle(0,0,1);
while(p!=NULL)
  {if(p->level==lv)
    {itoa(p->score,str,10);
     outtextxy(i,j,p->filename);
     outtextxy(i+150,j,p->name);
    switch(p->level)
     {case 1: outtextxy(i+300,j,"lv1");break;
      case 2: outtextxy(i+300,j,"lv2");break;
      case 3: outtextxy(i+300,j,"lv3");break;
     }
    outtextxy(i+450,j,str);
    j=j+10;
    }
   p=p->next;
  }
if(j==40)outtextxy(i,j,"CANNOT FIND THE LEVEL!");
getch();
settextstyle(0,0,0);
Screen();
choose_menu();
}
void sesc(void)
{char str1[25],str[25];
int  i=60,j=40,score;
Fname *p;
fangkuai();
outtextxy(210,300,"input score:");
strcpy(str1,intext(300,300));
score=atoi(str1);
Sl();
p=head;
settextstyle(0,0,1);
while(p!=NULL)
  {if(p->score==score)
    {itoa(p->score,str,10);
     outtextxy(i,j,p->filename);
     outtextxy(i+150,j,p->name);
    switch(p->level)
     {case 1: outtextxy(i+300,j,"lv1");break;
      case 2: outtextxy(i+300,j,"lv2");break;
      case 3: outtextxy(i+300,j,"lv3");break;
     }
    outtextxy(i+450,j,str);
    j=j+10;
    }
   p=p->next;
  }
if(j==40)outtextxy(i,j,"CANNOT FIND THE SCORE!");
getch();
settextstyle(0,0,0);
Screen();
choose_menu();
}
void menu(void)
{char subject[28]="Arithmatic System",
    name[28]="Wu XiaoHui",
    class[28]="Computer 4",
    no[28]="2001374424",
    help[40]="<Press F1 into help>";
time_t ti;
srand((unsigned)time(&ti));
setbkcolor(BLUE);
{setcolor(LIGHTGREEN);
  setlinestyle(SOLID_LINE,0,3);
  rectangle(80,85,530,150);
}
settextstyle(0,0,1);
setcolor(YELLOW);
outtextxy(150,300,"Designer:");
outtextxy(300,300,name);
outtextxy(150,320,"Class:");
outtextxy(300,320,class);
outtextxy(150,340,"Number:");
outtextxy(300,340,no);
outtextxy(200,460,help);
  while(!kbhit())
{
  setcolor(rand()%14+1);
  settextstyle(4,0,6);
  outtextxy(100,90,subject);
  delay(100000);
  }
key.c=bioskey(0);
settextstyle(0,0,1);
}
void Last(void)
{char bye[20]="THANK YOU",
    good[20]="VISIT MY SYSTEM";
int r;
cleardevice();
setbkcolor(BLUE);
settextstyle(1,0,7);
setcolor(YELLOW);
outtextxy(150,80,bye);
outtextxy(50,200,good);
rectangle(20,20,629,469);
sleep(1);
}
void help(void)
{int i,a,b;
setfillstyle(SOLID_FILL,CYAN);
bar(0,0,639,479);
setlinestyle(0,0,1);
settextstyle(0,0,2);
setcolor(RED);
outtextxy(150,2,"-----INFORMATION----");
outtextxy(130,430,"--PRESS ANY KEY TO RETURN--");
rectangle(50,25,589,419);
settextstyle(0,0,1);
outtextxy(100,50,"1.Press F10 ,you can choose the menu.");
outtextxy(100,70,"2.Press \30 or \31 to choose son_menu.");
outtextxy(100,90,"3.Choose File ,you can see the filename or test paper.");
outtextxy(100,110,"4.If you finish the paper ,please waiting for saving.");
outtextxy(100,130,"5.Don&#39;t type any other nonscene,or it will run wrong");
outtextxy(100,150,"6.Something you can see in the menu&#39;s underside");
outtextxy(100,170,"7.Before doing the paper,you must input your imformation.");
setlinestyle(0,0,3);
a=320;
b=320;
while(!kbhit())
  {a=(a++)%639;
  if(a==639)a=321;
  b--;
  if(b==0)b=319;
  for(i=0;i<=479;i++)
    {putpixel(a,i,15^getpixel(a,i));
    putpixel(b,i,15^getpixel(b,i));
    }
  }
settextstyle(0,0,1);
Screen();
choose_menu();
}

TOP

俄罗斯方块简单C语言版
复制内容到剪贴板
代码:
#include<graphics.h>
int score,speed;
int dx=270,dy=151,tag=1;
main()
{
int gd=DETECT,gm;
int press,fag1,fag2,fag3;
int i,j;
char str[10];
initgraph(&gd,&gm,"C:\\turboc2");
score=0;
speed=30000;
cleardevice();
inicrack();
getch();
cleardevice();
screen();
setcolor(RED);
sprintf(str,"%d",score);
outtextxy(92,205,"LEVER 1");
outtextxy(255,120,str);
fag2=1;
while(1)
  {
   if(dy<165)
      {
      fag1=fag2;
      fag2=rand()%7+1;
      setfillstyle(SOLID_FILL,GREEN);
      bar(370,170,398,198);
      switch(fag2)
        {
         case 1:blockshape(370,170,RED,YELLOW,0);break;
         case 2:lineshape(370,170,1,RED,YELLOW,0);break;
         case 3:qishape(370,170,1,RED,YELLOW,0);break;
         case 4:lshape(370,170,1,RED,YELLOW,0);break;
         case 5:tshape(370,170,3,RED,YELLOW,0);break;
         case 6:zshape(370,170,1,RED,YELLOW,0);break;
         case 7:wushape(370,170,2,RED,YELLOW,0);break;
        }
      }
   while(!bioskey(1))
    {
     if(dy<158)
      {
      fag1=fag2;
      fag2=rand()%7+1;
      setfillstyle(SOLID_FILL,GREEN);
      bar(370,170,398,198);
      switch(fag2)
        {
         case 1:blockshape(370,170,RED,YELLOW,0);break;
         case 2:lineshape(370,170,1,RED,YELLOW,0);break;
         case 3:qishape(370,170,1,RED,YELLOW,0);break;
         case 4:lshape(370,170,1,RED,YELLOW,0);break;
         case 5:tshape(370,170,3,RED,YELLOW,0);break;
            case 6:zshape(370,170,1,RED,YELLOW,0);break;
         case 7:wushape(370,170,2,RED,YELLOW,0);break;
        }
      }
     switch(fag1)
      {
      case 1:block_move();break;
      case 2:line_move();break;
      case 3:qi_move();break;
      case 4:l_move();break;
      case 5:t_move();break;
      case 6:z_move();break;
      case 7:wu_move();break;
      }
    }
  press=bioskey(0);
  switch(fag1)
    {
     case 1:block_move2(press);break;
     case 2:line_move2(press);break;
     case 3:qi_move2(press);break;
     case 4:l_move2(press);break;
     case 5:t_move2(press);break;
     case 6:z_move2(press);break;
     case 7:wu_move2(press);break;
    }
  if(press==283)break;
  }
closegraph();
}
int cmpred(int x,int y)
{
int i;
for(i=0;i<28;i++)
  if(getpixel(x+i,y)==RED)return 1;
return 0;
}
int cmpred2(int x,int y)
{
int i;
for(i=0;i<28;i++)
  if(getpixel(x,y+i)==RED)return 1;
return 0;
}
screen()
{
int i;
setbkcolor(BLACK);
setcolor(GREEN);
rectangle(213,150,354,431);
setcolor(BLUE);
rectangle(212,149,355,432);
setfillstyle(SOLID_FILL,BLUE);
floodfill(1,1,1);
setfillstyle(SOLID_FILL,YELLOW);
bar(253,115,305,130);
bar(90,200,150,215);
}

lineshape(int x,int y,int fag,int color1,int color2,int k)
{
if(fag==1)
  {
   if(k==1){
    if(y>424){dy=424;y=dy;}
    if(x>326){dx=326;x=dx;}
    if(x<214){dx=214;x=dx;}
    }
   fang(x,y,color1,color2);
   fang(x+7,y,color1,color2);
   fang(x+14,y,color1,color2);
   fang(x+21,y,color1,color2);
  }
else
  {
   if(k==1){
     if(y>403){dy=403;y=dy;}
     if(x>347){dx=347;x=dx;}
     if(x<214){dx=214;x=dx;}
    }
   fang(x,y,color1,color2);
   fang(x,y+7,color1,color2);
   fang(x,y+14,color1,color2);
   fang(x,y+21,color1,color2);
  }
}

blockshape(int x,int y,int color1,int color2,int k)
{
if(k==1){
   if(y>417){dy=417;y=dy;}
   if(x>340){dx=340;x=dx;}
   if(x<214){dx=214;x=dx;}
  }
fang(x,y,color1,color2);
fang(x,y+7,color1,color2);
fang(x+7,y,color1,color2);
fang(x+7,y+7,color1,color2);
}

qishape(int x,int y,int fag,int color1,int color2,int k)
{
switch(fag)
  {
   case 1:if(k==1)
        {
        if(y>417){dy=417;y=dy;}
        if(x<214){dx=214;x=dx;}
        if(x>333){dx=333;x=dx;}
        }
        fang(x,y,color1,color2);
      fang(x,y+7,color1,color2);
      fang(x+7,y+7,color1,color2);
      fang(x+14,y+7,color1,color2);
      break;
   case 2:if(k==1)
        {
        if(y>417){dy=417;y=dy;}
        if(x<214){dx=214;x=dx;}
        if(x>333){dx=333;x=dx;}
        }
        fang(x,y,color1,color2);
      fang(x+7,y,color1,color2);
      fang(x+14,y,color1,color2);
      fang(x+14,y+7,color1,color2);
      break;
   case 3:if(k==1)
        {
        if(y>410){dy=410;y=dy;}
        if(x<214){dx=214;x=dx;}
        if(x>340){dx=340;x=dx;}
        }
        fang(x,y,color1,color2);
      fang(x+7,y,color1,color2);
      fang(x,y+7,color1,color2);
      fang(x,y+14,color1,color2);
      break;
   case 4:if(k==1)
        {
        if(y>410){dy=410;y=dy;}
        if(x<221){dx=221;x=dx;}
        if(x>347){dx=340;x=dx;}
        }
        fang(x,y,color1,color2);
      fang(x,y+7,color1,color2);
      fang(x,y+14,color1,color2);
      fang(x-7,y+14,color1,color2);
      break;
  }
}
lshape(int x,int y,int fag,int color1,int color2,int k)
{
switch(fag)
  {
   case 1:if(k==1)
        {
        if(y>417){dy=417;y=dy;}
        if(x<214){dx=214;x=dx;}
        if(x>333){dx=333;x=dx;}
        }
        fang(x,y,color1,color2);
      fang(x,y+7,color1,color2);
      fang(x+7,y,color1,color2);
      fang(x+14,y,color1,color2);
      break;
   case 2:if(k==1)
        {
        if(y>410){dy=410;y=dy;}
        if(x<214){dx=214;x=dx;}
        if(x>340){dx=340;x=dx;}
        }
        fang(x,y,color1,color2);
      fang(x+7,y,color1,color2);
      fang(x+7,y+7,color1,color2);
      fang(x+7,y+14,color1,color2);
      break;
   case 3:if(k==1)
        {
        if(y>417){dy=417;y=dy;}
        if(x<228){dx=228;x=dx;}
        if(x>347){dx=347;x=dx;}
        }
        fang(x,y,color1,color2);
      fang(x-7,y+7,color1,color2);
      fang(x-14,y+7,color1,color2);
      fang(x,y+7,color1,color2);
      break;
   case 4:if(k==1)
        {
        if(y>410){dy=410;y=dy;}
        if(x<214){dx=214;x=dx;}
        if(x>340){dx=340;x=dx;}
        }
        fang(x,y,color1,color2);
      fang(x,y+7,color1,color2);
      fang(x,y+14,color1,color2);
      fang(x+7,y+14,color1,color2);
      break;
  }
}
zshape(int x,int y,int fag,int color1,int color2,int k)
{
if(fag==1)
  {
   if(k==1){
    if(y>417){dy=417;y=dy;}
    if(x>333){dx=333;x=dx;}
    if(x<214){dx=214;x=dx;}
    }
   fang(x,y,color1,color2);
   fang(x+7,y,color1,color2);
   fang(x+7,y+7,color1,color2);
   fang(x+14,y+7,color1,color2);
  }
else
  {
   if(k==1){
     if(y>410){dy=410;y=dy;}
     if(x>347){dx=347;x=dx;}
     if(x<221){dx=221;x=dx;}
    }
   fang(x,y,color1,color2);
   fang(x-7,y+7,color1,color2);
   fang(x,y+7,color1,color2);
   fang(x-7,y+14,color1,color2);
  }
}
wushape(int x,int y,int fag,int color1,int color2,int k)
{
if(fag==1)
  {
   if(k==1){
    if(y>417){dy=417;y=dy;}
    if(x>340){dx=340;x=dx;}
    if(x<221){dx=221;x=dx;}
    }
   fang(x,y,color1,color2);
   fang(x+7,y,color1,color2);
   fang(x-7,y+7,color1,color2);
   fang(x,y+7,color1,color2);
  }
else
  {
   if(k==1){
     if(y>410){dy=410;y=dy;}
     if(x>340){dx=340;x=dx;}
     if(x<214){dx=214;x=dx;}
    }
   fang(x,y,color1,color2);
   fang(x,y+7,color1,color2);
   fang(x+7,y+7,color1,color2);
   fang(x+7,y+14,color1,color2);
  }
}
tshape(int x,int y,int fag,int color1,int color2,int k)
{
switch(fag)
  {
   case 1:if(k==1)
        {
        if(y>417){dy=417;y=dy;}
        if(x<221){dx=221;x=dx;}
        if(x>340){dx=340;x=dx;}
        }
        fang(x,y,color1,color2);
      fang(x-7,y+7,color1,color2);
      fang(x,y+7,color1,color2);
      fang(x+7,y+7,color1,color2);
      break;
   case 2:if(k==1)
        {
        if(y>410){dy=410;y=dy;}
        if(x<214){dx=214;x=dx;}
        if(x>340){dx=340;x=dx;}
        }
        fang(x,y,color1,color2);
      fang(x,y+7,color1,color2);
      fang(x,y+14,color1,color2);
      fang(x+7,y+7,color1,color2);
      break;
   case 3:if(k==1)
        {
        if(y>417){dy=417;y=dy;}
        if(x<214){dx=214;x=dx;}
        if(x>333){dx=333;x=dx;}
        }
        fang(x,y,color1,color2);
      fang(x+7,y,color1,color2);
      fang(x+14,y,color1,color2);
      fang(x+7,y+7,color1,color2);
      break;
    case 4:if(k==1)
        {
        if(y>410){dy=410;y=dy;}
        if(x<221){dx=221;x=dx;}
        if(x>347){dx=347;x=dx;}
        }
        fang(x,y,color1,color2);
      fang(x-7,y+7,color1,color2);
      fang(x,y+7,color1,color2);
      fang(x,y+14,color1,color2);
      break;
  }
}

fang(int x,int y,int color1,int color2)
{
setcolor(color1);
rectangle(x,y,x+6,y+6);
setfillstyle(SOLID_FILL,color2);
bar(x+1,y+1,x+5,y+5);
}
cutpage()
{
int x=214,y=430,i,size;
void *buf;
char str[10];
if(cmp_red1(214,151)){gameover();exit(1);}
for(i=0;i<40;i++)
   if(cmpblack(x,y-i*7))
    {
     setfillstyle(SOLID_FILL,BLACK);
     bar(x,y-i*7-6,354,y-i*7);
     size=imagesize(214,151,354,y-i*7-7);
     buf=(void *)malloc(size);
     getimage(214,151,354,y-i*7-7,buf);
     putimage(214,158,buf,COPY_PUT);
     free(buf);
     y+=7;
     score+=10;
     if(score>=5000)
       {
        score=0;
        speed-=5000;
        setfillstyle(SOLID_FILL,YELLOW);
        bar(90,200,150,215);
        switch(speed)
        {
         case 25000:outtextxy(92,205,"LEVER 2");break;
         case 20000:outtextxy(92,205,"LEVER 3");break;
         case 15000:outtextxy(92,205,"LEVER 4");break;
         case 10000:outtextxy(92,205,"LEVER 5");break;
         case 5000: outtextxy(92,205,"LEVER 6");break;
         case 0:   outtextxy(92,205,"LEVER 7");break;
         case -5000:outtextxy(92,205,"LEVER 8");break;
         case -10000:outtextxy(92,205,"LEVER 9");break;
         case -15000:outtextxy(92,205,"LEVER 10");break;
         default:outtextxy(92,205,"WINNER!!!!!");
        }
        leveladd();
        setfillstyle(SOLID_FILL,BLACK);
        bar(214,151,353,430);
       }
     setfillstyle(SOLID_FILL,YELLOW);
     bar(253,115,305,130);
     sprintf(str,"%d",score);
     outtextxy(255,120,str);
    }
}
cmpblack(int x,int y)
{
int i;
for(i=0;i<140;i++)
  if(getpixel(x+i,y)==BLACK)return 0;
return 1;
}
cmp_red1(int x,int y)
{
int i;
for(i=0;i<140;i++)
   if(getpixel(x+i,y)==RED)return 1;
return 0;
}
gameover()
{
int i,sped=10000;
cleardevice();
setfillstyle(SOLID_FILL,BLUE);
bar(1,1,639,80);
setcolor(YELLOW);
settextstyle(4,0,8);
outtextxy(100,200,"GOOD_BYE");
setcolor(LIGHTRED);
setlinestyle(SOLID_LINE,1,1);
for(i=1;i<=320&&!kbhit();i++)
  {
   line(i,80,i,479);
   line(640-i,80,640-i,479);
   delay(sped+i*100);
  }
closegraph();
}
leveladd()
{
setfillstyle(SOLID_FILL,BLACK);
bar(214,151,353,430);
outtextxy(220,300,"YEAH!!!!");
sleep(1);
}

line_move()
{
  tag=tag%2;
  if(tag==0)tag=2;
  lineshape(dx,dy,tag,RED,YELLOW,1);
  delay(speed+35535);
  if(dy>=424&&tag==1){cutpage();dx=270;dy=151;return;}
  if(dy>=403&&tag==2){cutpage();dx=270;dy=151;return;}
  if(tag==1&&cmpred(dx,dy+7)){cutpage();dy=151;dx=270;return;}
  if(tag==2&&getpixel(dx,dy+28)==RED){cutpage();dy=151;dx=270;return;}
  lineshape(dx,dy,tag,BLACK,BLACK,1);
  dy=dy+7;
}
line_move2(int press)
{
  tag=tag%2;
  if(tag==0)tag=2;
  switch(press)
    {
    case 18432:lineshape(dx,dy,tag,BLACK,BLACK,1);
         if(tag==1&&cmpred(dx,dy+7)){tag=1;return;}
         if(tag==2&&cmpred2(dx+7,dy)){tag=2;return;}
         tag=tag%2+1;return;
    case 19200:if(cmpred2(dx-1,dy))return;
         if(dy>424&&tag==1){lineshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>403&&tag==2){lineshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         else
          {lineshape(dx,dy,tag,BLACK,BLACK,1);dx=dx-7;if(dx<214)dx=214;break;}
    case 19712:if(cmpred2(dx+7,dy)&&tag==2)return;
         if(getpixel(dx+28,dy)==RED&&tag==1)return;
         if(dy>424&&tag==1){lineshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>403&&tag==2){lineshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         else
          {lineshape(dx,dy,tag,BLACK,BLACK,1);dx=dx+7;if(dx>326&&tag==1)dx=326;if(dx>347&&tag==2)dx=347;return;}
    case 20480:lineshape(dx,dy,tag,BLACK,BLACK,1);dy=dy+7;if(dy>424&&tag==1)dy=424;if(dy==403&&tag==2)dy=403;if(tag==1&&cmpred(dx,dy))dy-=7;if(tag==2&&getpixel(dx,dy+21)==RED)dy-=7;return;
    }
}

block_move()
{
  blockshape(dx,dy,RED,YELLOW,1);
  delay(speed+35535);
  if(dy==417){cutpage();dx=270;dy=151;return;}
  if(b_cmpred(dx,dy+14)){cutpage();dy=151;dx=270;return;}
  blockshape(dx,dy,BLACK,BLACK,1);
  dy=dy+7;
}
block_move2(int press)
{
switch(press)
    {
    case 19200:if(b_cmpred2(dx-1,dy))return;
         if(dy>417){blockshape(dx,dy,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         else
          {blockshape(dx,dy,BLACK,BLACK,1);dx=dx-7;if(dx<214)dx=214;return;}
    case 19712:if(b_cmpred2(dx+14,dy))return;
         if(dy>417){blockshape(dx,dy,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         else
          {blockshape(dx,dy,BLACK,BLACK,1);dx=dx+7;if(dx>340&&tag==0)dx=340;return;}
    case 20480:blockshape(dx,dy,BLACK,BLACK,1);dy=dy+7;
         if(dy>417){dy=417;blockshape(dx,dy,RED,YELLOW,1);dy=151;return;}
         if(b_cmpred(dx,dy+7))dy-=7;return;
    }
}
b_cmpred(int x,int y)
{
int i;
for(i=0;i<14;i++)
  if(getpixel(x+i,y)==RED)return 1;
return 0;
}
b_cmpred2(int x,int y)
{
int i;
for(i=0;i<14;i++)
   if(getpixel(x,y+i)==RED)return 1;
return 0;
}
qi_move()
{
  qishape(dx,dy,tag,RED,YELLOW,1);
  delay(speed+35535);
  if(dy>=417&&tag==1){cutpage();dx=270;dy=151;return;}
  if(dy>=417&&tag==2){cutpage();dx=270;dy=151;return;}
  if(dy>=410&&tag==3){cutpage();dx=270;dy=151;return;}
  if(dy>=410&&tag==4){cutpage();dx=270;dy=151;return;}
  if(tag==1&&qi_cmpred2(dx,dy+14)){cutpage();dy=151;dx=270;return;}
  if(tag==2&&qi_cmpred1(dx,dy)){cutpage();dy=151;dx=270;return;}
  if(tag==3&&(getpixel(dx,dy+21)==RED||getpixel(dx+7,dy+7)==RED)){cutpage();dy=151;dx=270;return;}
  if(tag==4&&b_cmpred(dx-7,dy+21)){cutpage();dy=151;dx=270;return;}
  qishape(dx,dy,tag,BLACK,BLACK,1);
  dy=dy+7;
}
qi_move2(int press)
{
  switch(press)
    {
    case 18432:qishape(dx,dy,tag,BLACK,BLACK,1);
         if(tag==1&&qi_cmpred2(dx,dy+14)){tag=1;return;}
         if(tag==2&&qi_cmpred1(dx,dy)){tag=2;return;}
         if(tag==2&&cmpred(dx-7,dy+14)){tag=2;return;}
         if(tag==3&&(getpixel(dx+14,dy)==RED||getpixel(dx+14,dy+7)==RED)){tag=3;return;}
         if(tag==4&&(getpixel(dx+7,dy)==RED||b_cmpred(dx+7,dy+7)||getpixel(dx-7,dy+14)==RED||getpixel(dx-7,dy+7)==RED)){tag=4;return;}
         if(tag==1){tag=3;return;}
         if(tag==3){tag=2;return;}
         if(tag==2){tag=4;return;}
         if(tag==4){tag=1;return;}
    case 19200:if(b_cmpred2(dx-1,dy)&&tag==1)return;
         if(getpixel(dx-1,dy)==RED||getpixel(dx+7,dy+7)==RED&&tag==2)return;
         if(qi_cmpred3(dx-1,dy)&&tag==3)return;
         if(getpixel(dx-8,dy+14)==RED||b_cmpred2(dx-1,dy)&&tag==4)return;
         if(dy>417&&tag==1){qishape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>417&&tag==2){qishape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>410&&tag==3){qishape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>410&&tag==4){qishape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         else
          {qishape(dx,dy,tag,BLACK,BLACK,1);
           dx=dx-7;
           if(dx<214&&tag!=4)dx=214;
           if(dx<221&&tag==4)dx=221;
           break;}
    case 19712:if(getpixel(dx+7,dy)==RED||getpixel(dx+21,dy+7)&&tag==1)return;
         if(b_cmpred2(dx+21,dy)&&tag==2)return;
         if(getpixel(dx+14,dy)==RED||b_cmpred2(dx+7,dy+7)&&tag==3)return;
         if(qi_cmpred3(dx+7,dy)&&tag==4)return;
            if(dy>417&&tag==1){qishape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>417&&tag==2){qishape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>410&&tag==3){qishape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>410&&tag==4){qishape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         else
          {qishape(dx,dy,tag,BLACK,BLACK,1);dx=dx+7;
           if(dx>333&&(tag==1||tag==2))dx=333;
           if(dx>340&&tag==3)dx=340;
           if(dx>347&&tag==4)dx=347;
           return;}
    case 20480:qishape(dx,dy,tag,BLACK,BLACK,1);dy=dy+7;
            if(dy>417&&tag==1){qishape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>417&&tag==2){qishape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>410&&tag==3){qishape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>410&&tag==4){qishape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(tag==1&&qi_cmpred2(dx,dy+7))dy-=7;
         if(tag==2&&qi_cmpred1(dx,dy-7))dy-=7;
         if(tag==3&&(getpixel(dx,dy+14)==RED||getpixel(dx+7,dy+7)==RED))dy-=7;
         if(tag==4&&b_cmpred(dx-7,dy+14))dy-=7;
         return;
    }
}
l_move()
{
  lshape(dx,dy,tag,RED,YELLOW,1);
  delay(speed+35535);
  if(dy>=417&&tag==1){cutpage();dx=270;dy=151;return;}
  if(dy>=410&&tag==2){cutpage();dx=270;dy=151;return;}
  if(dy>=417&&tag==3){cutpage();dx=270;dy=151;return;}
  if(dy>=410&&tag==4){cutpage();dx=270;dy=151;return;}
  if(tag==1&&(getpixel(dx,dy+14)==RED||b_cmpred(dx+7,dy+7))){cutpage();dy=151;dx=270;return;}
  if(tag==2&&(getpixel(dx,dy+7)==RED||getpixel(dx+7,dy+21)==RED)){cutpage();dy=151;dx=270;return;}
  if(tag==3&&qi_cmpred2(dx-14,dy+14)){cutpage();dy=151;dx=270;return;}
  if(tag==4&&b_cmpred(dx,dy+21)){cutpage();dy=151;dx=270;return;}
  lshape(dx,dy,tag,BLACK,BLACK,1);
  dy=dy+7;
}
l_move2(int press)
{
  switch(press)
    {
    case 18432:lshape(dx,dy,tag,BLACK,BLACK,1);
         if(tag==1&&(b_cmpred(dx+7,dy+7)||b_cmpred(dx+7,dy+14))){tag=1;return;}
         if(tag==2&&qi_cmpred2(dx-14,dy+7)){tag=2;return;}
         if(tag==2&&b_cmpred(dx-7,dy+14)){tag=2;return;}
         if(tag==3&&(b_cmpred(dx-14,dy)||b_cmpred(dx,dy+14))){tag=3;return;}
         if(tag==4&&(b_cmpred(dx+7,dy)||b_cmpred(dx+7,dy+7)||b_cmpred(dx,dy+21))){tag=4;return;}
         tag=tag%4+1;return;
    case 19200:if(b_cmpred2(dx-1,dy)&&tag==1)return;
         if(getpixel(dx-1,dy)==RED||b_cmpred2(dx+6,dy+7)&&tag==2)return;
         if(getpixel(dx-1,dy)==RED||getpixel(dx-15,dy+7)==RED&&tag==3)return;
         if(qi_cmpred3(dx-1,dy)&&tag==4)return;
         if(dy>417&&tag==1){lshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>410&&tag==2){lshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>417&&tag==3){lshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>410&&tag==4){lshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         else
          {lshape(dx,dy,tag,BLACK,BLACK,1);
           dx=dx-7;
           if(dx<214&&tag!=3)dx=214;
           if(dx<228&&tag==3)dx=228;
           break;}
    case 19712:if(getpixel(dx+7,dy+7)==RED||getpixel(dx+21,dy)==RED&&tag==1)return;
         if(qi_cmpred3(dx+14,dy)&&tag==2)return;
         if(b_cmpred2(dx+7,dy)&&tag==3)return;
         if(b_cmpred2(dx+7,dy)||getpixel(dx+14,dy+14)==RED&&tag==4)return;
         if(dy>417&&tag==1){lshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>410&&tag==2){lshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>417&&tag==3){lshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>410&&tag==4){lshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         else
          {lshape(dx,dy,tag,BLACK,BLACK,1);dx=dx+7;
           if(dx>333&&tag==1)dx=333;
           if(dx>340&&(tag==2||tag==4))dx=340;
           if(dx>347&&tag==3)dx=347;
           return;}
    case 20480:lshape(dx,dy,tag,BLACK,BLACK,1);
         dy=dy+7;
         if(dy>417&&tag==1){lshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>410&&tag==2){lshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>417&&tag==3){lshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>410&&tag==4){lshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(tag==1&&(getpixel(dx,dy+7)==RED||b_cmpred(dx+7,dy)))dy=dy-7;
         if(tag==2&&(getpixel(dx,dy)==RED||getpixel(dx+7,dy+14)==RED))dy=dy-7;
         if(tag==3&&qi_cmpred2(dx-14,dy+7))dy=dy-7;
         if(tag==4&&b_cmpred(dx,dy+14))dy=dy-7;
         return;
    }
}
t_move()
{
  tshape(dx,dy,tag,RED,YELLOW,1);
  delay(speed+35535);
  if(dy>=417&&tag==1){cutpage();dx=270;dy=151;return;}
  if(dy>=410&&tag==2){cutpage();dx=270;dy=151;return;}
  if(dy>=417&&tag==3){cutpage();dx=270;dy=151;return;}
  if(dy>=410&&tag==4){cutpage();dx=270;dy=151;return;}
  if(tag==1&&qi_cmpred2(dx-7,dy+14)){cutpage();dy=151;dx=270;return;}
  if(tag==2&&(getpixel(dx,dy+21)==RED||getpixel(dx+7,dy+14)==RED)){cutpage();dy=151;dx=270;return;}
  if(tag==3&&(getpixel(dx,dy+7)==RED||getpixel(dx+7,dy+14)==RED||getpixel(dx+14,dy+7)==RED)){cutpage();dy=151;dx=270;return;}
  if(tag==4&&(getpixel(dx,dy+21)==RED||getpixel(dx-7,dy+14)==RED)){cutpage();dy=151;dx=270;return;}
  tshape(dx,dy,tag,BLACK,BLACK,1);
  dy=dy+7;
}
t_move2(int press)
{
switch(press)
    {
    case 18432:tshape(dx,dy,tag,BLACK,BLACK,1);
         if(tag==1&&(getpixel(dx-1,dy)==RED||getpixel(dx+7,dy)==RED||b_cmpred(dx,dy+14))){tag=1;return;}
         if(tag==2&&(getpixel(dx+7,dy)==RED||getpixel(dx+7,dy+14)==RED||b_cmpred(dx-1,dy+7))){tag=2;return;}
         if(tag==3&&(getpixel(dx+14,dy+7)==RED||qi_cmpred2(dx,dy+14)||b_cmpred(dx-7,dy+7))){tag=3;return;}
         if(tag==4&&(getpixel(dx-1,dy)==RED||getpixel(dx-1,dy+14)==RED||b_cmpred(dx+7,dy))){tag=4;return;}
         tag=tag%4+1;return;
    case 19200:if(getpixel(dx-1,dy)==RED||getpixel(dx-8,dy+7)&&tag==1)return;
         if(qi_cmpred3(dx-1,dy)&&tag==2)return;
         if(getpixel(dx-1,dy)==RED||getpixel(dx,dy+7)==RED&&tag==3)return;
         if(getpixel(dx-1,dy)==RED||getpixel(dx-8,dy+7)==RED||getpixel(dx-1,dy+14)==RED&&tag==4)return;
         if(dy>417&&tag==1){tshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>410&&tag==2){tshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>417&&tag==3){tshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>410&&tag==4){tshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         else
          {tshape(dx,dy,tag,BLACK,BLACK,1);
           dx=dx-7;
           if(dx<214&&(tag==2||tag==3))dx=214;
           if(dx<221&&(tag==1||tag==4))dx=221;
           break;}
    case 19712:if(getpixel(dx+7,dy)==RED||getpixel(dx+14,dy+7)==RED&&tag==1)return;
         if(getpixel(dx+7,dy)==RED||getpixel(dx+14,dy+7)==RED||getpixel(dx+7,dy+14)==RED&&tag==2)return;
         if(getpixel(dx+21,dy)==RED||getpixel(dx+14,dy+7)==RED&&tag==3)return;
         if(qi_cmpred3(dx+7,dy)&&tag==4)return;
         if(dy>417&&tag==1){tshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>410&&tag==2){tshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>417&&tag==3){tshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>410&&tag==4){tshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         else
          {tshape(dx,dy,tag,BLACK,BLACK,1);dx=dx+7;
           if(dx>333&&tag==3)dx=333;
           if(dx>340&&(tag==1||tag==2))dx=340;
           if(dx>347&&tag==4)dx=347;
           return;}
    case 20480:tshape(dx,dy,tag,BLACK,BLACK,1);
         dy=dy+7;
         if(dy>417&&tag==1){tshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>410&&tag==2){tshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>417&&tag==3){tshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>410&&tag==4){tshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(tag==1&&qi_cmpred2(dx-7,dy+7))dy-=7;
         if(tag==2&&(getpixel(dx,dy+14)==RED||getpixel(dx+7,dy+7)==RED))dy-=7;
         if(tag==3&&(getpixel(dx,dy)==RED||getpixel(dx+7,dy+7)==RED||getpixel(dx+14,dy)==RED))dy-=7;
         if(tag==4&&(getpixel(dx,dy+14)==RED||getpixel(dx-7,dy+7)==RED))dy-=7;
         return;
    }
}
z_move()
{
  tag=tag%2;
  if(tag==0)tag=2;
  zshape(dx,dy,tag,RED,YELLOW,1);
  delay(speed+35535);
  if(dy>=417&&tag==1){cutpage();dx=270;dy=151;return;}
  if(dy>=410&&tag==2){cutpage();dx=270;dy=151;return;}
  if(tag==1&&(getpixel(dx,dy+7)==RED||b_cmpred(dx+7,dy+14))){cutpage();dy=151;dx=270;return;}
  if(tag==2&&(getpixel(dx-7,dy+21)==RED||getpixel(dx,dy+14)==RED)){cutpage();dy=151;dx=270;return;}
  zshape(dx,dy,tag,BLACK,BLACK,1);
  dy=dy+7;
}
z_move2(int press)
{
  tag=tag%2;
  if(tag==0)tag=2;
  switch(press)
    {
    case 18432:zshape(dx,dy,tag,BLACK,BLACK,1);
         if(tag==1&&(cmpred(dx-7,dy+14)||b_cmpred(dx-7,dy+7))){tag=1;return;}
         if(tag==2&&(qi_cmpred3(dx-14,dy)||getpixel(dx-1,dy)==RED)){tag=2;return;}
         tag=tag%2+1;return;
    case 19200:if(getpixel(dx-1,dy)==RED||getpixel(dx,dy+7)==RED&&tag==1)return;
         if(getpixel(dx-1,dy)==RED||b_cmpred2(dx-7,dy+7)&&tag==2)return;
         if(dy>417&&tag==1){zshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>410&&tag==2){zshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         else
          {zshape(dx,dy,tag,BLACK,BLACK,1);dx=dx-7;
           if(dx<214&&tag==1)dx=214;
           if(dx<221&&tag==2)dx=221;
           return;
          }
    case 19712:if(getpixel(dx+14,dy)==RED||getpixel(dx+21,dy+7)==RED&&tag==1)return;
         if(b_cmpred2(dx+7,dy)||getpixel(dx,dy+14)==RED&&tag==2)return;
         if(dy>417&&tag==1){zshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>410&&tag==2){zshape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         else
          {zshape(dx,dy,tag,BLACK,BLACK,1);dx=dx+7;if(dx>333&&tag==1)dx=333;if(dx>347&&tag==2)dx=347;return;}
    case 20480:zshape(dx,dy,tag,BLACK,BLACK,1);dy=dy+7;
         if(tag==1&&(getpixel(dx,dy)==RED||b_cmpred(dx+7,dy+7)))dy-=7;
         if(tag==2&&(getpixel(dx-7,dy+14)==RED||getpixel(dx,dy+7)==RED))dy-=7;
         return;
    }
}
wu_move()
{
  tag=tag%2;
  if(tag==0)tag=2;
  wushape(dx,dy,tag,RED,YELLOW,1);
  delay(speed+35535);
  if(dy>=417&&tag==1){cutpage();dx=270;dy=151;return;}
  if(dy>=410&&tag==2){cutpage();dx=270;dy=151;return;}
  if(tag==1&&(getpixel(dx+7,dy+7)==RED||b_cmpred(dx-7,dy+14))){cutpage();dy=151;dx=270;return;}
  if(tag==2&&(getpixel(dx,dy+14)==RED||getpixel(dx+7,dy+21)==RED)){cutpage();dy=151;dx=270;return;}
  wushape(dx,dy,tag,BLACK,BLACK,1);
  dy=dy+7;
}
wu_move2(int press)
{
  tag=tag%2;
  if(tag==0)tag=2;
  switch(press)
    {
    case 18432:wushape(dx,dy,tag,BLACK,BLACK,1);
         if(tag==1&&(getpixel(dx-1,dy)==RED||qi_cmpred2(dx-7,dy+14)||getpixel(dx+7,dy+7)==RED)){tag=1;return;}
         if(tag==2&&(getpixel(dx+7,dy)==RED||b_cmpred(dx-7,dy+14)||getpixel(dx-7,dy+7)==RED)){tag=2;return;}
         tag=tag%2+1;return;
    case 19200:if(getpixel(dx-1,dy)==RED||getpixel(dx-7,dy+7)==RED&&tag==1)return;
         if(getpixel(dx,dy+14)==RED||b_cmpred2(dx-1,dy)&&tag==2)return;
         if(dy>417&&tag==1){wushape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>410&&tag==2){wushape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         else
          {wushape(dx,dy,tag,BLACK,BLACK,1);dx=dx-7;
           if(dx<221&&tag==1)dx=221;
           if(dx<214&&tag==2)dx=214;
           return;
          }
    case 19712:if(getpixel(dx+14,dy)==RED||getpixel(dx+7,dy+7)==RED&&tag==1)return;
         if(b_cmpred2(dx+14,dy+7)||getpixel(dx+7,dy)==RED&&tag==2)return;
         if(dy>417&&tag==1){wushape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         if(dy>410&&tag==2){wushape(dx,dy,tag,RED,YELLOW,1);cutpage();dx=270;dy=151;return;}
         else
          {wushape(dx,dy,tag,BLACK,BLACK,1);dx=dx+7;if(dx>340)dx=340;return;}
    case 20480:wushape(dx,dy,tag,BLACK,BLACK,1);dy=dy+7;
         if(tag==1&&(getpixel(dx+7,dy)==RED||b_cmpred(dx-7,dy+7)))dy-=7;
         if(tag==2&&(getpixel(dx,dy+7)==RED||getpixel(dx+7,dy+14)==RED))dy-=7;
         return;
    }
}

qi_cmpred1(int x,int y)
{
int i;
for(i=0;i<14;i++)
  if(getpixel(x+i,y+7)==RED)return 1;
for(i=0;i<7;i++)
  if(getpixel(x+14+i,y+14)==RED)return 1;
return 0;
}
qi_cmpred2(int x,int y)
{
int i;
for(i=0;i<21;i++)
  if(getpixel(x+i,y)==RED)return 1;
return 0;
}
qi_cmpred3(int x,int y)
{
int i;
for(i=0;i<21;i++)
   if(getpixel(x,y+i)==RED)return 1;
return 0;
}
inicrack()
{
blockshape(214,200,RED,YELLOW,0);
lineshape(214,220,1,RED,YELLOW,0);
lineshape(250,200,0,RED,YELLOW,0);
qishape(214,240,1,RED,YELLOW,0);
qishape(240,240,2,RED,YELLOW,0);
qishape(270,240,3,RED,YELLOW,0);
qishape(290,240,4,RED,YELLOW,0);
lshape(214,270,1,RED,YELLOW,0);
lshape(240,270,2,RED,YELLOW,0);
lshape(272,277,3,RED,YELLOW,0);
lshape(290,270,4,RED,YELLOW,0);
zshape(214,300,1,RED,YELLOW,0);
zshape(245,300,2,RED,YELLOW,0);
wushape(214,325,1,RED,YELLOW,0);
wushape(240,325,2,RED,YELLOW,0);
tshape(214,350,1,RED,YELLOW,0);
tshape(240,357,2,RED,YELLOW,0);
tshape(260,350,3,RED,YELLOW,0);
tshape(290,350,4,RED,YELLOW,0);
}


TOP

文件大小计算
复制内容到剪贴板
代码:
#include<stdio.h>
#include<dir.h>
#include<dos.h>
#include<sys\stat.h>
#include<time.h>
#include<conio.h>
#include<bios.h>
#include<string.h>      /* 头文件 */

#define UP 18432
#define DOWN 20480
#define ENTER 7181
#define ESC 283
#define C 11875        /* UP 向上箭头 DOWN 向下箭头 ENTER 回车键 ESC Esc键  C c键 */

int fileSIZE[16];      /* 某目录文件的总大小,用数组表示 */
int fileNUM[8];       /* 某目录文件的总个数包括原目录本身 */
int subPATH[8];       /* 子目录 */
int avSIZE[16];       /* 某目录中文件的平均长度 */
int avNUM[8];        /* 某目录中文件的平均个数 */
int row,col;         /* 屏幕中显示的位置 */
char pathNAME[256];    /* 路径名称 */
char lastPATH[256];    /* 该目录上级名称 */
char Disk[26];        /* 由于使用的是windows系统,所以获取了磁盘的盘符 */
int diskNUM;         /* 磁盘的个数 */

typedef struct filelist{
char filename[20];
struct filelist *next;
}FList;             /* 文件名列表 */

FList *filelist;      

void addSize(long fsize){     /* 文件长度加法运算,获取文件的长度,将它存入数组中 */
long quotient=fsize/10;
int residue=fsize%10,i=0,c=0;
while(quotient!=0){
    fileSIZE[i]+=residue+c;
    c=fileSIZE[i]/10;
    fileSIZE[i]%=10;
    residue=quotient%10;
    quotient/=10;
    i++;
   }
fileSIZE[i]+=residue+c;
while(fileSIZE[i]/10!=0){
   c=fileSIZE[i]/10;
   fileSIZE[i]%=10;
   i++;
   fileSIZE[i]+=c;
  }
}               

void addNUM(int fnum){    /* 文件数目加法运算,获取文件个数,将它存入数组中 */  
int quotient=fnum/10;
int residue=fnum%10,i=0,c=0;
while(quotient!=0){
    fileNUM[i]+=residue+c;
    c=fileNUM[i]/10;
    fileNUM[i]%=10;
    residue=quotient%10;
    quotient/=10;
    i++;
   }
fileNUM[i]+=residue+c;
while(fileNUM[i]/10!=0){
   c=fileNUM[i]/10;
   fileNUM[i]%=10;
   i++;
   fileNUM[i]+=c;
  }
}

void addSub(int fsub){  /* 子目录个数加法运算,获取子目录个数,将它存入数组中 */
int quotient=fsub/10;
int residue=fsub%10,i=0,c=0;
while(quotient!=0){
    subPATH[i]+=residue+c;
    c=subPATH[i]/10;
    subPATH[i]%=10;
    residue=quotient%10;
    quotient/=10;
    i++;
   }
subPATH[i]+=residue+c;
while(subPATH[i]/10!=0){
   c=subPATH[i]/10;
   subPATH[i++]%=10;
   subPATH[i]+=c;
  }
}

void divSN(){  /* 平均长度求法,获取本目录文件平均长度,采用数组相除 */
int fnum[8];
int fsize[16];

int bS=15,bN=7,bA;
int i,j,k,q,t,m,p,x;

for(i=0;i<8;i++)fnum[i]=fileNUM[i];
for(i=0;i<16;i++)fsize[i]=fileSIZE[i];
for(i=0;i<16;i++)avSIZE[i]=0;

while(fsize[bS]==0&&bS!=-1)bS--;
if(bS==-1)return;
while(fnum[bN]==0&&bN!=-1)bN--;
if(bN==-1)return;
bA=bS-bN;
i=bS;
j=bN;
k=bA;

while(k!=-1){
    if(i-k<=j&&fsize[i]<fnum[j])avSIZE[k]=0;
    else{
      m=0;
      if(i-k>j){
       while(i-k>j){
         for(t=k,p=0;t<=i;t++,p++){
          if(fsize[t]-fnum[p]<0){fsize[t+1]-=1;fsize[t]+=10-fnum[p];}
          else fsize[t]-=fnum[p];
         }
         m++;
         if(fsize[i]==0)i--;
        }
        }
       while(fsize[i]>=fnum[j]){
        if(fsize[i]==fnum[j]){
        x=i;
        p=j;
        while(fsize[x]==fnum[p]&&x>=k){x--;p--;};
        if(fsize[x]<fnum[p]&&x+1!=k)break;
         }
       for(t=i-j,p=0;t<=i;t++,p++){
        if(fsize[t]-fnum[p]<0){fsize[t+1]-=1;fsize[t]+=10-fnum[p];}
        else fsize[t]-=fnum[p];
         }
       m++;
      }
    avSIZE[k]=m;
     }
    k--;
    if(fsize[i]==0)i--;
   }
}

void divNP(){  /* 每目录的平均文件个数求法,获取平均个数,采用数组相除 */
int spath[8];
int fnum[8];
int bS=7,bN=7,bA;
int i,j,k,q,t,m,p,x;

for(i=0;i<8;i++)spath[i]=subPATH[i];
for(i=0;i<8;i++)fnum[i]=fileNUM[i];

while(fnum[bS]==0&&bS!=-1)bS--;
if(bS==-1)return;
while(spath[bN]==0&&bN!=-1)bN--;
if(bN==-1)return;
bA=bS-bN;
i=bS;
j=bN;
k=bA;

while(k!=-1){
    if(i-k<=j&&fnum[i]<spath[j])avNUM[k]=0;
    else{
      m=0;
      if(i-k>j){
       while(i-k>j){
         for(t=k,p=0;t<=i;t++,p++){
          if(fnum[t]-spath[p]<0){fnum[t+1]-=1;fnum[t]+=10-spath[p];}
          else fnum[t]-=spath[p];
         }
         m++;
         if(fnum[i]==0)i--;
        }
        }
       while(fnum[i]>=spath[j]){
        if(fnum[i]==spath[j]){
        x=i;
        p=j;
        while(fnum[x]==spath[p]&&x>=k){x--;p--;};
        if(fnum[x]<spath[p]&&x+1!=k)break;
         }
       for(t=i-j,p=0;t<=i;t++,p++){
        if(fnum[t]-spath[p]<0){fnum[t+1]-=1;fnum[t]+=10-spath[p];}
        else fnum[t]-=spath[p];
         }
       m++;
      }
    avNUM[k]=m;
     }
    k--;
    if(fnum[i]==0)i--;
   }
}

void curFILE(char pathname[]){  /* 递归读取目录信息,获取文件平均长度,平均个数信息 */
struct ffblk ffblk;
struct stat filestat;
char fname[256],fpname[256],subpath[256],subpath1[256];
int done;

strcpy(fname,pathname);
strcat(fname,"\\*.*");
addSub(1);
done=findfirst(fname,&ffblk,0x26);
while(!done){
  addNUM(1);
  strcpy(fpname,pathname);
  strcat(fpname,"\\");
  strcat(fpname,ffblk.ff_name);
  stat(fpname,&filestat);
  addSize(filestat.st_size);
  done=findnext(&ffblk);
}
strcpy(subpath,pathname);
strcat(subpath,"\\*.*");
done=findfirst(subpath,&ffblk,FA_DIREC);
while(!done){
  if(ffblk.ff_attrib&FA_DIREC&&stricmp(ffblk.ff_name,".")&&stricmp(ffblk.ff_name,"..")){
  strcpy(subpath1,pathname);
  strcat(subpath1,"\\");
  strcat(subpath1,ffblk.ff_name);
  curFILE(subpath1);    /* 递归搜索目录 */
  }
  done=findnext(&ffblk);
}
}

display(){  /* 将信息显示在屏幕上 */
int i;

i=15;
textbackground(BLACK);
textcolor(RED);
window(23,6,77,20);
clrscr();
window(2,2,79,24);
while(fileSIZE[i]==0&&i!=-1)i--;
if(i==-1){gotoxy(22,5);cprintf("Size of file in bytes:0 bytes");}
else{
  gotoxy(22,5);
  cprintf("Size of file in bytes:");
  while(i!=-1)cprintf("%d",fileSIZE[i--]);
  cprintf(" bytes");
  }

for(i=0;i<15;i++)avSIZE[i]=0;
for(i=0;i<8;i++)avNUM[i]=0;
i=7;
while(fileNUM[i]==0&&i!=-1)i--;
if(i==-1){gotoxy(22,6);cprintf("Amount of file:0");}
else{
  gotoxy(22,6);
  cprintf("Amount of file:");
  while(i!=-1)cprintf("%d",fileNUM[i--]);
  }

i=7;
while(subPATH[i]==0&&i!=-1)i--;
if(i==-1){gotoxy(22,7);cprintf("Amount of subpath:0");}
else{
  gotoxy(22,7);
  cprintf("Amount of subpath:");
  while(i!=-1)cprintf("%d",subPATH[i--]);
  }

divSN();
i=15;
while(avSIZE[i]==0&&i!=-1)i--;
if(i==-1){gotoxy(22,8);cprintf("Average Size of file in bytes:0 bytes");}
else{
  gotoxy(22,8);
  cprintf("Average Size of file in bytes:");
  while(i!=-1)cprintf("%d",avSIZE[i--]);
  cprintf(" bytes");
  }

divNP();
i=7;
while(avNUM[i]==0&&i!=-1)i--;
if(i==-1){gotoxy(22,9);printf("Average Amount file :0 \n");}
else{
  gotoxy(22,9);
  cprintf("Average Amount file:");
  while(i!=-1)cprintf("%d",avNUM[i--]);
  }
}

initarray(){  /* 初始化各信息数组 */
int i;

for(i=0;i<8;i++)fileNUM[i]=0;
for(i=0;i<15;i++)fileSIZE[i]=0;
for(i=0;i<8;i++)subPATH[i]=0;
for(i=0;i<15;i++)avSIZE[i]=0;
for(i=0;i<8;i++)avNUM[i]=0;
}

interface(){  /* 初始化界面 */
int i;

textmode(BW80);  /* 总界面 */
textbackground(GREEN);
window(1,1,80,25);
clrscr();
textbackground(BLACK);
window(2,2,79,24);
clrscr();

textcolor(RED); /* 目录所有文件,子目录显示区域 */
putch(218);
for(i=1;i<19;i++)putch(196);putch(191);
for(i=1;i<22;i++){gotoxy(1,i+1);putch(179);}
gotoxy(1,i+1);putch(192);
for(i=1;i<19;i++)putch(196);putch(217);
for(i=1;i<22;i++){gotoxy(20,i+1);putch(179);}

gotoxy(21,1);  /* 当前目录路径显示区域 */
putch(218);
for(i=1;i<56;i++)putch(196);putch(191);
gotoxy(21,2);putch(179);
gotoxy(21,3);putch(192);
for(i=1;i<56;i++)putch(196);putch(217);
gotoxy(77,2);putch(179);

gotoxy(21,4);  /* 文件信息显示区域 */
putch(218);
for(i=1;i<56;i++)putch(196);putch(191);
for(i=1;i<16;i++){gotoxy(21,i+4);putch(179);}
gotoxy(21,i+4);putch(192);
for(i=1;i<56;i++)putch(196);putch(217);
for(i=1;i<16;i++){gotoxy(77,i+4);putch(179);}

gotoxy(21,21); /* 提示信息显示区域 */
putch(218);
for(i=1;i<56;i++)putch(196);putch(191);
gotoxy(21,22);putch(179);
gotoxy(21,23);putch(192);
for(i=1;i<56;i++)putch(196);putch(217);
gotoxy(77,22);putch(179);
gotoxy(22,22);
cprintf("\30 \31 choose file..  ENTER selected..  C counting files..");

gotoxy(2,2);
}

void Fileprint(char pathname[]){  /* 当前目录所有文件及所有子目录添加至列表中 */
struct ffblk ffblk;
char fname[256],subpath[256],subpath1[256],fn[20];
int done;
FList *p,*p1;
p=filelist;
while(p!=NULL){p1=p->next;free(p);p=p1;}
filelist=NULL;

strcpy(fname,pathname);
strcat(fname,"\\*.*");
done=findfirst(fname,&ffblk,0x26);

while(!done){
  strcpy(fn,ffblk.ff_name);
  addfname(fn);
  done=findnext(&ffblk);
}
strcpy(subpath,pathname);
strcat(subpath,"\\*.*");
done=findfirst(subpath,&ffblk,0x16);
while(!done){
  if(ffblk.ff_attrib&FA_DIREC&&stricmp(ffblk.ff_name,".")&&stricmp(ffblk.ff_name,"..")){
  strcpy(fn,ffblk.ff_name);
  strcat(fn,"\\");
  addfname(fn);
  }
  done=findnext(&ffblk);
}
addfname("\\..");
}

addfname(char *fname){  /* 列表添加文件信息 */
FList *p,*p1;
p=(FList *)malloc(sizeof(FList));
strcpy(p->filename,fname);
p->next=NULL;
if(filelist==NULL)filelist=p;
else{
  p1=filelist;
  while(p1->next!=NULL)p1=p1->next;
  p1->next=p;
}
}

int cmpslash(char path[]){  /* 如果当前为子目录返回1,否则返回0 */
if(path[strlen(path)-1]==&#39;\\&#39;)return 1;
else return(0);
}

int cmpsdot(char path[]){
int l;
l=strlen(path);
if(path[l-3]==&#39;\\&#39;&&path[l-2]==&#39;.&#39;&&path[l-1]==&#39;.&#39;)return 1;
else return(0);
}

int existslash(char path[])  /* 如果上一级非盘符,则返回最后&#39;\&#39;的位置,否则返回0 */
{
char *p;
p=strrchr(path,&#39;\\&#39;);
if(p)return p-path;
else return 0;
}

initdisk(){      /* 获取盘符过程 */
int save,disk;
FList *p,*p1;
int i=0;
char fname[20];
p=filelist;
while(p!=NULL){p1=p->next;free(p);p=p1;}
filelist=NULL;
save=getdisk();
for(disk=0;disk<26;++disk){
   setdisk(disk);
   if(disk==getdisk()){
     fname[0]=disk+&#39;a&#39;;
     Disk[i]=disk+&#39;a&#39;;
     i++;
     fname[1]=&#39;:&#39;;
     fname[2]=&#39;\0&#39;;
     addfname(fname);
    }
  }
diskNUM=i;
setdisk(save);
strcpy(lastPATH,filelist->filename);
strcpy(pathNAME,filelist->filename);
}

initlist(){   /* 初始化列表为盘符列表 */
char fname[20];
FList *p,*p1;
int i;
p=filelist;
while(p!=NULL){p1=p->next;free(p);p=p1;}
filelist=NULL;
for(i=0;i<diskNUM;i++){
     fname[0]=Disk[i];
     fname[1]=&#39;:&#39;;
     fname[2]=&#39;\0&#39;;
     addfname(fname);
    }
}

isdisk(char path[]){     /* 当前路径为盘符则返回1,否则返回0 */
char fname[20];
int i=0;
for(i=0;i<diskNUM;i++){
     fname[0]=Disk[i];
     fname[1]=&#39;:&#39;;
     fname[2]=&#39;\0&#39;;
     if(!stricmp(fname,path))return 1;
    }
return(0);
}

printfname(){     /* 打印列表,并完成各种操作 */
FList *p,*pw;
int r;
int i,omit=0;
int key;
p=filelist;
window(3,3,20,23);clrscr();window(2,2,79,24);row=2;col=2;textcolor(RED);
while(p!=NULL){
  gotoxy(col,row);
  cprintf("%s",p->filename);
  p=p->next;
  row++;
  if(row>22)break;
}
r=2;
textbackground(WHITE);
textcolor(BLACK);
window(3,r+1,20,r+1);
pw=filelist;
for(i=2;i<r;i++){
  pw=pw->next;
  if(pw==NULL)break;
  }
cprintf("%s",pw->filename);
textbackground(BLACK);
textcolor(RED);
window(23,3,77,3);
clrscr();
if(!isdisk(lastPATH)||(isdisk(lastPATH)&&!isdisk(pw->filename))){
  strcpy(pathNAME,lastPATH);
  strcat(pathNAME,"\\");
  strcat(pathNAME,pw->filename);
  }
else {strcpy(lastPATH,pw->filename);strcpy(pathNAME,pw->filename);}
textbackground(BLACK);
textcolor(RED);
window(2,2,79,24);
gotoxy(22,2);
cprintf("%s",pathNAME);
gotoxy(2,r);
while(1){
   key=bioskey(0);
   if(key==ESC)exit(1);          /*  按下ESC键退出程序 */
   if(key==DOWN){              /*  按下向下键进行选择,得到滚屏效果 */
    if(r==22){
       if(pw->next!=NULL){
        omit++;
        window(3,3,20,23);
        clrscr();
        textbackground(BLACK);
        textcolor(RED);
        window(2,2,79,24);
        pw=filelist;
        for(i=0;i<omit;i++)pw=pw->next;
        for(i=2;i<r;i++){
        gotoxy(2,i);
        cprintf("%s",pw->filename);
        pw=pw->next;
         }
        textbackground(WHITE);
        textcolor(BLACK);
        window(3,r+1,20,r+1);
        cprintf("%s",pw->filename);
          textbackground(BLACK);
        textcolor(RED);
        window(23,3,77,3);
        clrscr();
          if(!isdisk(lastPATH)||(isdisk(lastPATH)&&!isdisk(pw->filename))){
           strcpy(pathNAME,lastPATH);
           strcat(pathNAME,"\\");
           strcat(pathNAME,pw->filename);
          }
        else {strcpy(lastPATH,pw->filename);strcpy(pathNAME,pw->filename);}
        textbackground(BLACK);
        textcolor(RED);
        window(2,2,79,24);
          gotoxy(22,2);
        cprintf("%s",pathNAME);
        gotoxy(2,r);
        }
      }
    else{
      textbackground(BLACK);
      textcolor(RED);
      window(3,r+1,20,r+1);
      pw=filelist;
       for(i=0;i<omit;i++)pw=pw->next;
      for(i=2;i<r;i++){
        pw=pw->next;
        if(pw==NULL)break;
       }
      if(pw!=NULL&&pw->next!=NULL)cprintf("%s",pw->filename);
      if(pw!=NULL&&pw->next!=NULL)r++;
      textbackground(WHITE);
      textcolor(BLACK);
      window(3,r+1,20,r+1);
      pw=filelist;
       for(i=0;i<omit;i++)pw=pw->next;
      for(i=2;i<r;i++){
        pw=pw->next;
        if(pw==NULL)break;
       }
      if(pw!=NULL)cprintf("%s",pw->filename);
       textbackground(BLACK);
      textcolor(RED);
      window(23,3,77,3);
      clrscr();
       if(!isdisk(lastPATH)||(isdisk(lastPATH)&&!isdisk(pw->filename))){
           strcpy(pathNAME,lastPATH);
           strcat(pathNAME,"\\");
           strcat(pathNAME,pw->filename);
          }
      else {strcpy(lastPATH,pw->filename);strcpy(pathNAME,pw->filename);}
      textbackground(BLACK);
      textcolor(RED);
      window(2,2,79,24);
       gotoxy(22,2);
      cprintf("%s",pathNAME);
      if(pw!=NULL)gotoxy(2,r);
      else gotoxy(2,i);
     }
    }
  if(key==UP){            /*  按下向上键进行选择,得到滚屏效果 */
    if(r==2){
        window(3,3,20,23);
       clrscr();
       if(pw!=filelist)omit--;
        textbackground(BLACK);
       textcolor(RED);
       window(3,r+1,20,r+1);
       pw=filelist;
       for(i=0;i<omit;i++)pw=pw->next;
       if(pw!=filelist)cprintf("%s",pw->filename);
        textbackground(WHITE);
       textcolor(BLACK);
       window(3,r+1,20,r+1);
       pw=filelist;
       for(i=0;i<omit;i++)pw=pw->next;
       cprintf("%s",pw->filename);
       p=pw->next;
       row=r+1;
       while(p!=NULL){
        textbackground(BLACK);
        textcolor(RED);
        window(3,row+1,20,row+1);
        cprintf("%s",p->filename);
        p=p->next;
        row++;
        if(row>22)break;
        }
        textbackground(BLACK);
       textcolor(RED);
       window(23,3,77,3);
       clrscr();
        if(!isdisk(lastPATH)||(isdisk(lastPATH)&&!isdisk(pw->filename))){
           strcpy(pathNAME,lastPATH);
           strcat(pathNAME,"\\");
           strcat(pathNAME,pw->filename);
          }
       else {strcpy(lastPATH,pw->filename);strcpy(pathNAME,pw->filename);}
       window(2,2,79,24);
        gotoxy(22,2);
       cprintf("%s",pathNAME);
       gotoxy(2,r);
      }
    else{
      textbackground(BLACK);
      textcolor(RED);
      window(3,r+1,20,r+1);
      pw=filelist;
      for(i=0;i<omit;i++)pw=pw->next;
      for(i=2;i<r;i++){
        pw=pw->next;
        if(pw==NULL)break;
       }
      if(pw!=NULL)cprintf("%s",pw->filename);
      r--;
      textbackground(WHITE);
      textcolor(BLACK);
      window(3,r+1,20,r+1);
      pw=filelist;
       for(i=0;i<omit;i++)pw=pw->next;
      for(i=2;i<r;i++){
        pw=pw->next;
        if(pw==NULL)break;
       }
      if(pw!=filelist)cprintf("%s",pw->filename);
       textbackground(BLACK);
      textcolor(RED);
      window(23,3,77,3);
      clrscr();
       if(!isdisk(lastPATH)||(isdisk(lastPATH)&&!isdisk(pw->filename))){
           strcpy(pathNAME,lastPATH);
           strcat(pathNAME,"\\");
           strcat(pathNAME,pw->filename);
          }
      else {strcpy(lastPATH,pw->filename);strcpy(pathNAME,pw->filename);}
      textbackground(BLACK);
      textcolor(RED);
      window(2,2,79,24);
      gotoxy(22,2);
      cprintf("%s",pathNAME);
      if(pw!=filelist)gotoxy(2,r);
      else gotoxy(2,i);
     }
    }
  if(key==ENTER){          /*  按下回车键进入子目录 */
    if(isdisk(pathNAME)){
    strcpy(lastPATH,pathNAME);
    Fileprint(pathNAME);
    printfname();
     }
    else if(cmpslash(pathNAME)){
    pathNAME[strlen(pathNAME)-1]=&#39;\0&#39;;
      strcpy(lastPATH,pathNAME);
    Fileprint(pathNAME);
    printfname();
     }
    else if(cmpsdot(pathNAME)){
    if(existslash(lastPATH)){
       lastPATH[existslash(lastPATH)]=&#39;\0&#39;;
       strcpy(pathNAME,lastPATH);
       Fileprint(pathNAME);
       printfname();
      }
    else if(isdisk(lastPATH)){initlist();printfname();}
     }
   }
  if(key==C){        /*  按下&#39;c&#39;键,进行计算,获取文件信息 */
    textbackground(BLACK);
    textcolor(RED);
    window(23,6,77,20);
    clrscr();
    window(2,2,79,24);
    gotoxy(22,5);
    cprintf("Waiting...");
    initarray();
    curFILE(pathNAME);
    display();
   }
}
}

main(){      /* 主函数 */
char s[256];
filelist=NULL;
initarray();
interface();
gotoxy(22,2);
initdisk();
initlist();
printfname();
}

TOP

数组练习
复制内容到剪贴板
代码:
//preprocess directive
#include <stdio.h>

const int MAX = 13;  //VC6下通过这样的定义 但是不推荐

float expenses[MAX], max;
int count;

int main(void)
{
    //input data from keyboard into array

    for ( count = 1; count < 13; count++ )
    {
        printf("Enter expenses for month %d: ", count);
        scanf("%f", &expenses[count]);
        max += expenses[count];
    }

    //print array contents

    for ( count = 1; count < 13;  count++ )
    {
        printf("Month %d = $%.2f\n", count,  expenses[count]);
    }
    printf("Max is $%.2f\n", max);
    printf("The average is $%.2f\n", max/12);
    return 0;
}
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

复制内容到剪贴板
代码:
//by bideyore and eviloctal

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

void do_heading( char *filename, FILE * dic );  //函数原型

int line = 0, page = 0;  //声明初始化行和页

int main( int argv, char *argc[] )
{
char buffer[256];  //声明缓冲区
FILE *fp;  //源代码文件名
FILE *dic;  //目标文件名

if( argv < 2 )  //如果参数数量不对就打印使用说明
{
fprintf(stderr, "\nProper Usage is: ");
fprintf(stderr, "\n\nprint filename.txt\n");
return 1;
}
if (( fp = fopen ( argc[1], "r" )) == NULL )  //以只读方式打开 失败就报错
{

fprintf( stderr, "Error opening file, %s!", argc[1]);
return 1;
}

if (( dic = fopen ( argc[2], "w+" )) == NULL )  //打开一个新文件 没有就创建
{

fprintf( stderr, "Error opening file, %s!", argc[2]);  //失败报错
return 1;
}

page = 0;  //定义页为零
line = 1;  //从第一行开始
do_heading( argc[1] , dic );  //看下面

while ( fgets (buffer, 256, fp ) != NULL )  //一次读一行的前256个
{
if ( line % 55 == 0 )  //检查是不是一页
do_heading( argc[1] , dic);  //够一页就打印子函数 这次完全执行

fprintf(dic, "%4d:\t%s", line++, buffer );  //不够朝文件写入行号和读来的内容
}
fprintf(dic, "\f");
fclose(dic);  //释放资源
fclose(fp);
return 0;
}


void do_heading( char *filename, FILE * dic)
{
page++;  //第一次执行页变成一

if ( page > 1 )  //第一次执行页是一不进入循环
fprintf(dic, "\f" );

fprintf( dic, "page: %d, %s\n\n", page, filename );
}
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

复制内容到剪贴板
代码:
//by EvilOctal
#include <stdio.h>
#include <stdlib.h>

int a[5][4], b[5][4];

int main(void)
{
    int x, y, c, d;
    for (x = 0; x < 5; x++)  //把数组a赋随机值
    {
        for (y = 0; y < 4; y++)
        {
            a[x][y] = rand();
        }
    }
    for (x = 0; x < 5; x++)  //打印刚才的赋值情况
    {
        for (y = 0; y < 4; y++)
        {
            printf("The a[%d][%d] is %d!\n", x, y, a[x][y]);
        }
    }
    for (x = 0, c = 4; x < 5, c >= 0; x++, c--)  //把数组a的所有元素反向赋值到b中
    {
        for (y = 0, d = 3; y < 4, d >= 0; y++, d--)
        {
            b[c][d] = a[x][y];
        }
    }
    for (c = 0; c < 5; c++)  //检查反向赋值的结果
    {
        for (d = 0; d < 4; d++)
        {
            printf("The b[%d][%d] is %d!\n", c, d, b[c][d]);
        }
    }
    return 0;
}
//糊涂了for的判断条件 脑袋已经秀逗了
//忽略了数组最大的下标是n-1 他妈的我傻逼 书上强调3次 自己还埋怨罗嗦 到头来还是错在这里
//其实使用双重计算是多此一举
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

复制内容到剪贴板
代码:
// Passing an array to a function.

#include <stdio.h>

#define MAX 10

int array[MAX], count, *ptr;

int largest(int *num_array, int length);
int least(int num_array[], int length);

int main( void )
{
    ptr = array;

   for (count = 0; count < MAX; count++)
   {
      printf("Enter an integer value: ");
      scanf("%d", &array[count]);
   }                                                                                                                                                                                                                                                                           

   // Call the function and display the return value.
   printf("\n\nLargest value = %d\n", largest(ptr, MAX));
    printf("\n\nSmallest value = %d\n", least(ptr, MAX));

   return 0;
}


int largest(int *num_array, int length)
{
   int count, biggest = num_array[0];

   for ( count = 0; count < length; count++)
   {
      if (num_array[count] > biggest)
        biggest = num_array[count];
   }

   return biggest;
}

int least(int num_array[], int length)
{
   int count, smallest = num_array[0];

   for ( count = 0; count < length; count++)
   {
      if (num_array[count] < smallest)
        smallest = num_array[count];
   }

   return smallest;
}
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

复制内容到剪贴板
代码:
//Passing an array to a function. Alternative way

#include <stdio.h>

#define MAX 10

int array[MAX+1], count;  //这里定义的数组多加了一个单位

int largest(int num_array[]);  //函数原形可以看见 这里只传了一个参数

int main( void )
{

   for (count = 0; count < MAX; count++)
   {
      printf("Enter an integer value: ");
      scanf("%d", &array[count]);

      if ( array[count] == 0 )
        count = MAX;          //if 0 then will exit for loop
   }
   array[MAX] = 0;  //如果用户没输入0 那么就完成循环后把最后一个放0

   //Call the function and display the return value
   printf("\n\nLargest value = %d\n", largest(array));

   return 0;
}

int largest(int num_array[])
{
   int count, biggest = -12000;

   for ( count = 0; num_array[count] != 0; count++)  //检测是否是0
   {
      if (num_array[count] > biggest)
        biggest = num_array[count];  //比大小的循环
   }

   return biggest;
}
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

复制内容到剪贴板
代码:
#include <stdio.h>

int x[5] = {1, 2, 3, 4, 5};
int y[5] = {1, 2, 3, 4, 5};
int max;

int sumarrays(int a[], int b[]);

int main(void)
{
    max = sumarrays(x, y);  //错在这里 不能重复定义整型

    printf("%d\n", max);

    return 0;
}

int sumarrays(int a[], int b[])  //错在这里 傻了吧唧加分号
{
    int count, max1 = 0;  //这里用max也不错 因为max是全局变量

    for( count = 0; count < 5; count++ )
    {
        max1 += a[count];
        max1 += b[count];
    }
    return max1;
}
复制内容到剪贴板
代码:
//还没学会怎么把这题中的函数计算结果传给主函数 以便主函数中打印
#include <stdio.h>

int x[5] = {1, 2, 3, 4, 5};
int y[5] = {1, 2, 3, 4, 5};

void sumarrays(int a[], int b[]);

int main(void)
{
    sumarrays(x, y);
    return 0;
}

void sumarrays(int a[], int b[])
{
    int count, max[5];

    for( count = 0; count < 5; count++ )
    {
        max[count] = a[count] + b[count];
        printf("max[%d] is %d!\n", count, max[count]);
    }
}
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

复制内容到剪贴板
代码:
//fflush函数练习
#include <stdio.h>
#include <string.h>

int main(void)
{
    FILE *stream1;
    FILE *stream2;

    char buf[50];
    char readbuf[50];
    char *text = "This is a test for fflush function!";

        readbuf[0] = 0;
    printf("Please input a file path to open: ");  //提示用户输入要打开的文件的路径
    scanf("%s", buf);

    stream1 = fopen(buf, "w");  //以可写方式打开
    stream2 = fopen(buf, "r");  //以只读方式打开
    if (stream1 == NULL)  //打开失败
        perror("fdopen failed!");  //失败的报错内容
    else  //打开成功
    {
        fwrite(text, strlen(text)+1, 1, stream1);  //写入字符串 但是由于有缓存 字符串并没有真正的写到文件
        fread(readbuf, 50, 1, stream2);
        printf("Before fflush function: %s\n", readbuf);  //读取文件内容时将发现是空的

        fflush(stream1);  //使用fflush刷新缓存 将文件内容真正写入
        fread(readbuf, 50, 1, stream2);
        printf("After fflush function: %s\n", readbuf);  //这个时候才会看到有正确的结果

        fclose(stream1);  //关闭文件 释放资源
        fclose(stream2);
    }
    return 0;
}
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

allocate后显示字符串 然后写到txt
复制内容到剪贴板
代码:
//Demonstrates the use of malloc() to allocate storage by 冰血封情[E.S.T]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char count, *ptr, *p;  //全局变量 大程序千万别瞎JB定义

int main(void)
{
    FILE * files;  //这是我后面为了检查 想写到文本里另外声名的文件指针
    char buf[27];  //27个字符的缓冲区 应该不可以再小 没检查溢出

    if ((ptr = (char *) malloc( 27 * sizeof(char) )) == NULL)  //定义正好够的 原来题目是35 不容易看出问题的本质 小于27出错 但是可以顺利编译
    {
        puts("Memory allocation error.");
        return 1;  //报错后返回值
    }

    p = ptr;  //保证ptr不变好打印和写入

    for (count = 65; count < 91; count++)  //循环储存
        *p++ = count;  //把数字存储到p所指的文件中
    *p = &#39;\0&#39;;

    //Display the string on the screen

    puts(ptr);  //显示要写入的内容
    puts(p);  //显示那个恶心的空字符

    printf("Please input a file path to open: ");  //提示用户输入要打开的文件的路径
    scanf("%s", buf);  //将文件地址存储到buf里
    files = fopen(buf, "w");  //以可写方式打开
    if (files == NULL)  //打开失败
        perror("fopen failed!");  //失败的报错内容
    else //打开成功
    {
        fwrite(ptr, strlen(ptr), 1, files);  //原来我错在用p写 p都是到空符号了 还tmd写个屁
    }
    fclose(files);  //释放资源打开的文件
    free(ptr);  //释放资源

    return 0;
}
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

两种声明空间存储的方法:
数组
复制内容到剪贴板
代码:
#include <stdio.h>

int main(void)
{
    char input[80];

    puts("input a char for the fucking gliet!");
    gets(input);
   
    printf("You input the \" %s \" for fuck!\n", input);  //起初竟然把%s错写成%c 咋这么贱呢
    puts("You fucked pretty good boy!");

    return 0;
}
传说中的随机分配
复制内容到剪贴板
代码:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char *ptr;

    ptr = (char *) malloc ( 80 * sizeof (char));
    puts("Hill. Do you wanna fuck gliet: ");
    gets(ptr);
    puts("Ok! I will use the fuction puts to show you what you wrote: ");
    puts(ptr);
    free(ptr);

    return 0;
}
题目要求写一个拷贝字符数组的程序
复制内容到剪贴板
代码:
//大胆使用strcpy来完成 没学呢 只因为前几天有个例子用过一次
//没想到我这么SB的人也可以成功
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
    char *ptr, string[256];

    ptr = (char *) malloc ( 80 * sizeof (char));
    puts("Hill. Do you wanna fuck gliet: ");
    gets(ptr);
    puts("Ok! I will use the fuction puts to show you what you wrote: ");
    puts(ptr);

    strcpy( string, ptr );
    puts(string);
    free(ptr);

    return 0;
}
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

复制内容到剪贴板
代码:
//接受用户输入的两个字符串做参数
//返回比较长的那个字符串 并且打印
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char * longger( char x[], char y[] );  //函数原型 接受两个指针返回一个指针

int main(void)
{
    char *ptr, x1[10], y1[10];

    puts("Hill. Do you wanna fuck gliet?");
    puts("Input 2 words to fuck: ");

    scanf("%s%s", x1, y1);  //接受两个字符串

    ptr = longger( x1, y1 );  //调用字函数比较长度 顺便接受反馈的指针

    puts("Ok! I will use the fuction puts to show you what you wrote the longer one: ");
    puts(ptr);  //打印长的那个

    return 0;
}

char *  longger( char x[], char y[] )  //x[] y[]都是指针型 这样写是为了看清楚指向数组
{
    if (  strlen(x) > strlen(y) )  //使用strlen比较长度
        return x;  //谁长就把谁的第一个字符的位置反馈回去
    else
        return y;
}
复制内容到剪贴板
代码:
//接受用户输入的两个字符串做参数
//返回接在一起的字符串 并且打印
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char * longger( char x[], char y[] );  //函数原型 接受两个指针返回一个指针

int main(void)
{
    char *ptr, x1[10], y1[10];

    puts("Hill. Do you wanna fuck gliet?");
    puts("Input 2 words to fuck: ");

    scanf("%s%s", x1, y1);  //接受两个字符串

    ptr = longger( x1, y1 );  //调用字函数比较长度 顺便接受反馈的指针

    puts("Ok! I will use the fuction puts to show you what you wrote the longer one: ");
    puts(ptr);  //打印长的那个

    return 0;
}

char *  longger( char x[], char y[] )  //x[] y[]都是指针型 这样写是为了看清楚指向数组
{
    /* if (  strlen(x) > strlen(y) )  //使用strlen比较长度
        return x;  //谁长就把谁的第一个字符的位置反馈回去
    else
        return y; */
    char *ptr1;  //声明一个函数内用的指针
    ptr1 = (char *) malloc (20 * sizeof(char));  //分配空间为第三个字符串
    ptr1 = strcat( x, y );
    printf("%s", ptr1);
    printf("%s", x);
    free(ptr1);

    return ptr1;
}
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

发新话题