邪恶八进制信息安全团队技术讨论组's Archiver

冰血封情 2004-6-25 21:07

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

本例子下所有的程序都会在TC3和VC6下调试通过,并且尝试执行,学习笔记循序渐进。每周结束的时候我会把本周所有的例子全部加上题目的。如果您调试上出现了错误,请注意:例子中的所有注释使用了中文的标点,调试中会出现N多错误,请删除注释和后面的空格后再调试,方可通过。我会在后面的程序说明启动E文说明,以避免这种错误。

NO1.
[code]/*Just a practice for learning c 'for' command*/
/*输入半径求圆的周长和半径的99次方乘派*/
#include <stdio.h>
#define pi 3.14 /*宏定义*/
double sub(double r1);
void main() /*主函数是程序唯一的入口*/
{
double r,c,s,m; /*便量声明*/
printf("=======================================\n");
printf("Be powered by [email]Evilin@EvilOctal.com[/email]:)");
printf("=======================================\n");
printf("Please input r.\n");
scanf("%f",&r);
c=2*pi*r;
m=sub(r);
s=pi*m;
printf("c=%6.2f,s=%6.2f",c,s);
}
double sub(double r1) /*定义子函数*/
{
double n;
int i;
for(i=1;i<100;i++) /*循环开始*/
{
n=r1*r1; /*重复赋值给n*/
}
return(n); /*将n通过子函数带回主函数*/
}[/code]

冰血封情 2004-6-25 21:08

NO2.
#include <stdio.h>

int sub(int x1); /*定义函数模型*/
int x,m; /*全局变量*/

int main(void) /*定义主函数*/
{

printf("\ninput:");
scanf("%d",&x);
m=sub(x); /*调用函数*/
printf("m=%d\n",m);
return 0;
}
int sub(int x1) /*自定义的函数开始*/
{
int a=6,b=30,c=15,n;
if(x1<a||x1==a)
{
n=b*x1+a*a;
}
else
{
n=a*(c-x1)+c*c;
}
return (n); /*返回值带回给主函数*/
}


---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

冰血封情 2004-6-25 21:08

NO3.
#include "stdio.h" /*头文件*/

int array[1000]; /*定义一个整型数组*/
int count; /*定义全局变量*/

int main(void) /*主函数*/
{
for(count=0;count<1000;array[count++]=50) /*利用循环给数组的每个变量赋50值*/
{
; /*定义空语句 绝不可缺少*/
}
printf("array[0] is %d",array[0]);
getchar();
return 0;
}

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

冰血封情 2004-6-25 21:08

N04.
#include "stdio.h"


int x;

main(void)
{
for(x=0;x<10;x++) /*利用循环输出1到9*/
{
printf("\nthe value of x is %d",x); /*这个是输出的方法*/
}
getchar(); /*停顿读取一个键盘键继续*/
return 0;
}

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

程序输出结果:

the value of x is 0
the value of x is 1
the value of x is 2
the value of x is 3
the value of x is 4
the value of x is 5
the value of x is 6
the value of x is 7
the value of x is 8
the value of x is 9

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

冰血封情 2004-6-25 21:08

NO5.
#include "stdio.h"


int nbr=0; /*定义初始值 所以循环可以省略第一块*/

int main(void)
{
for(;nbr!=99;) /*利用循环实现 输入99才退出*/
{
scanf("%d",&nbr);
}
return 0;
}

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

冰血封情 2004-6-25 21:09

NO6.
#include "stdio.h"

int value[10];

int ctr,nbr=0;

int main(void)
{
for(ctr=0;ctr<10&&nbr!=99;ctr++) /*大于10和等于99的情况退出*/
{
puts("\nEnter a number, 99 2 quit:");
scanf("%d",&nbr);
value[ctr]=nbr; /*数组开始赋值*/
}
return 0;
}

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

冰血封情 2004-6-25 21:09

NO7.
#include <stdio.h> /*头文件*/


void draw_box(int,int); /*定义函数类型*/

int main(void) /*主函数*/
{
draw_box(8,35); /*调用函数并且定义了row的初始值*/
getchar();
return 0;
}
void draw_box(int row,int column) /*函数开始*/
{
int col;
for(;row>0;row--) /*开始循环*/
{
for(col=column;col>0;col--) /*嵌套的第二个循环*/
printf("x"); /*前面都满足则打印一个X*/
printf("\n"); /*嵌套的循环完成后回车*/
}
}

程序输出结果:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

冰血封情 2004-6-25 21:09

NO8.
#include "stdio.h"

int count;

int main(void) /*the main function*/
{
count=1;
while(count<=20)
{
printf("%d",count++); /*print the numbers 1 through 20*/
printf("\n");
}
return 0;
} /*end of program*/

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

程序输出结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

冰血封情 2004-6-25 21:10

NO9.
#include "stdio.h"
int count;
int main(void)
{
for(count=1;count<=20;count++) /*Print the numbers 1 through 20*/
{
printf("\n%d",count);
}
return 0;
}

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

程序输出结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

冰血封情 2004-6-25 21:10

NO10.
#include "stdio.h"

int nbr;

int main()
{
for(nbr=0;nbr<=99;) /*如果输入的数字大于99就退出*/
{
scanf("%d",&nbr);
}
return 0;
}

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

冰血封情 2004-6-25 21:10

NO11.
#include "stdio.h"

int nbr=0,ctr,value[10];

int main()
{
for(ctr=0;ctr<10&&nbr!=99;)
{
puts("Enter a number, 99 to quit:"); /*输入99退出*/
scanf("%d",&nbr);
value[ctr]=nbr; /*数组赋值*/
ctr++;
}
return 0;
}

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

冰血封情 2004-6-25 21:11

NO12.
#include "stdio.h"
int array[5];
int main(void)
{
int ctr=0,nbr;
printf("This program prompts you to enter 5 numbers\n");
printf("Each number should be from 1 to 10\n");
while(ctr<5) /*如果ctr小于5则执行*/
{
for(nbr=0;nbr<1||nbr>10;array[ctr++]=nbr) /*如果输入的值小于1大于10则执行循环*/
{
printf("\nEnter number %d of 5:",ctr); /*提示输入数字*/
scanf("%d",&nbr); /*请求输入数字*/
printf("nbr=%d",nbr); /*输出此时的nbr值*/
}
printf("\nout!!!"); /*检测退出*/
}
for(ctr=0;ctr<5;ctr++) /*循环输出数组里的值*/
printf("value %d is %d\n",ctr,array[ctr]);
return 0;
}

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

冰血封情 2004-6-25 21:11

NO13.
#include <stdio.h>

int get(void); /*函数原型*/

int main(void)
{
int choice=0; /*定义变量并且赋值*/
choice=get(); /*调用函数*/
printf("You chose menu option %d\n",choice);
return 0;
}
int get(void)
{
int selection=0; /*定义函数里的变量*/
do /*开始do_while循环*/
{
printf("\n1 - Add a record");
printf("\n2 - Change a record");
printf("\n3 - Delete a record");
printf("\n4 - Quit");
printf("\n\nEnter a selection:");
scanf("%d",&selection);
}while(selection<1||selection>4); /*函数判断*/
return selection; /*把值通过函数带回主函数*/
}

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

冰血封情 2004-6-25 21:12

NO14.
#include <stdio.h>

int get(void);

int main(void)
{
printf("You chose menu option %d\n",get()); /*直接调用函数来显示*/
return 0;
}
int get(void)
{
int selection=0;
while(selection<1||selection>4) /*把13例修改成了while循环*/
{
printf("\n1 - Add a record");
printf("\n2 - Change a record");
printf("\n3 - Delete a record");
printf("\n4 - Quit");
printf("\n\nEnter a selection:");
scanf("%d",&selection);
}
return selection;
}

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

冰血封情 2004-6-25 21:12

NO15.
#include <stdio.h>

float get(void);

int main(void)
{
printf("You chose menu option %f\n",get());
return 0;
}
float get(void)
{
float selection; /*定义为浮点型*/
for(selection=0;selection<1||selection>4;) /*把13例改成了for循环 功能与显

示都不变*/
{
printf("\n1 - Add a record");
printf("\n2 - Change a record");
printf("\n3 - Delete a record");
printf("\n4 - Quit");
printf("\n\nEnter a selection:");
scanf("%f",&selection); /*浮点型可以解决前面输入浮点型数据的死循环问题*/
}
return selection;
}

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

冰血封情 2004-6-25 21:12

NO16.
#include "stdio.h" //头文件
#define QUIT 3 //宏定义

int get_menu_choice(void); //函数原型

void print_report(void); //定义无反馈的函数原型

int main(void) //主函数开始
{
int choice=0; //定义整型变量并且赋初值为0
while(choice!=QUIT)
{
choice=get_menu_choice(); //调用函数得到choice值
if(choice==1) //如果选择等于1则执行循环
{
printf("\nBeeping the computer\a\a\a"); //连续响铃三声
}
else if(choice==2) //如果选择等于2则执行下面
{
print_report(); //调用函数打印报告
}
else //如果前面都没成功执行
{
puts("You chose to quit!");
}
}
return 0; //结束主函数
}

int get_menu_choice(void) //函数开始
{
int selection=0;
do
{
puts("\n1 - Beeping Computer");
puts("2 - Display Report");
puts("3 - Quit");
printf("\n");
puts("Enter a selection:");
scanf("%d",&selection);
}while(selection<1||selection>3); //循环判断
return selection; //将值带回主函数
}
void print_report(void) //报告函数
{
printf("\n");
puts("SAMPLE REPORT!");
printf("\n\nSequence\tMeaning");
printf("\n=========\t=======");
printf("\n\\a\t\tbell(alert)");
printf("\n\\b\t\tbackspace");
puts("\n...\t\t...");
}

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

冰血封情 2004-6-25 21:13

NO17.
/*这个程序看起来似乎并不重要冰血封情还要ggyy*/
/*但是它教给你一个重要的问题%%在显示的时候是%*/
/*你应该明白为什么我用这么多废话来说明一个问题*/
/*因为他很重要在VC6下使用转译字符\%来打印%是警告*/
/*请原谅我作为一个初学者对C语言中这个问题的惊讶*/
/*如果您会了可以跳过去当然也可以嘲笑我的愚蠢*/
#include "stdio.h"
double f=1.05,g=25.5,h=-0.1;
int main(void)
{
printf("\nThe rate is %f%%",f);
return 0;
}

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

冰血封情 2004-6-25 21:13

NO18.
/*这个例子的确有点无聊*/
/*仅仅是为了练习函数而已*/
/*它从键盘读两个浮点数计算机他们的和*/
#include "stdio.h"

float x=0,y=0,z=0;

float take();

main(void)
{
puts("\nPlease input 2 float:");/*puts可以节省资源*/
scanf("%f,%f",&x,&y);
z=take();/*函数调用*/
printf("x*y=%f",z);
getchar();/*为了防止TC的老毛病加这句*/
return 0;
}
float take()/*函数执行必须和原型一样*/
{
float m=0;
m=x*y;
return m;/*通过函数把值带回主函数*/
}

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

冰血封情 2004-6-25 21:13

NO19.
/*这个程序是从键盘读取10个数字存放在数组中*/
/*如果输入完则打印你所输入数字的最大最小值*/
/*如果一旦输入的数字是0就退出程序*/
#include "stdio.h"

int x[10],n=0,a=0,i=0;/*定义变量*/

int sub1(void);/*两个函数原型*/
int sub2(void);

int main(void)
{
puts("\nPlease input 10 int numbers:");/*不断提示输入数字*/
while(n<10)
{
printf("Input the %d number:",n);
scanf("%d",&x[n]);
if(x[n]==0)
goto f;/*这里用goto是万不得以*/
n++;
}
a=sub1();/*函数调用*/
i=sub2();
printf("Max is %d,Min is %d",a,i);/*显示你的最大最小值*/
f:getchar();
return 0;
}
int sub1(void)/*函数体*/
{
int m1=0;
for(;n>0;n--)/*循环比较此时n是9*/
{
m1=x[9];
if(m1<x[n])/*找最大值*/
m1=x[n];
}
return m1;
}
int sub2(void)
{
int m2=0;
for(;n<10;n++)/*循环比较此时n是0*/
{
m2=x[0];
if(m2>x[n])/*找最小值*/
m2=x[n];
}
return m2;
}

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

冰血封情 2004-6-25 21:14

NO20.
#include "stdio.h"
#include "stdlib.h"//随即函数rand在此头中定义

main(void)
{
int array[5][4],x,y;//定义了一个5行4列的数组
for(x=0;x<5;x++)//行循环
{
for(y=0;y<4;y++)//列循环
{
array[x][y]=rand();
}
}
for(x=0;x<5;x++)
{
for(y=0;y<4;y++)
{
printf("\narray[%d][%d] is %d!",x,y,array[x][y]);//循环打印所有数组的值
}
}
getch();
return 0;
}

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

冰血封情 2004-6-25 21:14

NO21.
//此程序打印数组所有元素的值和它的所有元素的平均值
#include "stdio.h"
#include "stdlib.h"

main(void)
{
int array[1000],x;
long sub=0;
for(x=0;x<1000;x++)
{
array[x]=rand();
sub+=array[x];//求和
}
for(x=0;x<1000;x++)
{
printf("\nThe array[%d] is %d!",x,array[x]);//打印所有元素的值
}
printf("\nThe average of array is %ld",sub/1000);//求平均
getch();
return 0;
}

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

冰血封情 2004-6-25 21:14

NO22.
//此程序把一个数组复制到另外一个并且把每个元素加10打印出来
#include "stdio.h"

int add(void);

main(void)
{
int array[10],x;
int num[10];

for(x=0;x<10;x++)//给数组中每个元素赋下标相同的值
{
array[x]=x;
}
for(x=0;x<10;x++)
{
printf("\nThe array[%d] is %d",x,array[x]);//先打印一次
}
for(x=0;x<10;x++)
{
num[x]=array[x];//复制array中所有的元素到num
num[x]+=10;//给每个复制过去的元素加10
}
for(x=0;x<10;x++)
{
printf("\nAnother array[%d] is %d",x,num[x]);//打印新数组中的所有值
}
getch();
return 0;
}

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

冰血封情 2004-6-25 21:15

NO23.
//此程序循环读入一个数组
//然后循环打印每个元素的值和内存地址
#include "stdio.h"

#define MAX 10

int array[MAX];
int *ptr_array,ctr;//接触指针

main(void)
{
ptr_array=array;
for(ctr=0;ctr<10;ctr++)
{
printf("Input the No.%d number:",ctr);
scanf("%d",&array[ctr]);//循环读入数组中的所有值
}
for(ctr=0;ctr<10;ctr++)
{
printf("\nThe No.%d element is %d!",ctr,array[ctr]);//这里是输出所有元素的值
}//在上面一步发现了一个可爱的问题已经发在CSDN展开讨论
for(ctr=0;ctr<10;ctr++)
{
printf("\nThe address of No.%d element is %ld!",ctr,ptr_array++);//打印所有地址
}
getchar();
return 0;
}

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|已经调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

冰血封情 2004-6-25 21:15

NO24.
//复习一下函数调用
//此程序接受两个长度任意的数组并把他们中的所有元素相加
//把总和反馈到主函数
#include "stdio.h"

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

int array1[]={0,1,2,3,4};
int array2[]={0,1,2,3,4,5,6,7};

int x=0;

main(void)
{
x=sumarray(array1,array2);//注意看调用函数传递值的时候是使用数组首元素的地址
printf("The largest is %d!",x);
getch();//这里在VC下应该是getchar
return 0;
}
int sumarray(int a[],int b[])//这里不一定要和函数原型一样但是写成一样便于理解
{
int largest=0,ctr;
for(ctr=0;ctr<5;ctr++)
{
largest+=a[ctr];
}
for(ctr=0;ctr<8;ctr++)
{
largest+=b[ctr];
}
return largest;
}

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|TC调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

冰血封情 2004-6-25 21:15

NO25.
//此程序复习函数调用
//程序接受两个长度相同的数组并且把对应值相加保存在第三个数组中
//打印各个过程的结果
#include "stdio.h"

void addarrays(int a[10],int b[10]);//这里可以不写那个10的

int array1[10],array2[10],num[10];

main(void)
{
int ctr1;
for(ctr1=0;ctr1<10;ctr1++)//利用循环输入两个数组的元素
{
printf("\nPlease input the %d number of array1:",ctr1);
scanf("%d",&array1[ctr1]);
}
for(ctr1=0;ctr1<10;ctr1++)
{
printf("\nPlease input the %d number of array2:",ctr1);
scanf("%d",&array2[ctr1]);
}
addarrays(array1,array2);//调用函数计算
for(ctr1=0;ctr1<10;ctr1++)
{
printf("\narray3[%d] is %d.",ctr1,num[ctr1]);
}
getch();
return 0;
}

void addarrays(int a[10],int b[10])
{
int ctr2;
for(ctr2=0;ctr2<10;ctr2++)
{
num[ctr2]=a[ctr2]+b[ctr2];//对应元素相加保存在第三个数组的对应元素中
}
for(ctr2=0;ctr2<10;ctr2++)
{
printf("\nnum[%d] is %d!",ctr2,num[ctr2]);
}
}

---------------------------------------------------------------------------------------------------
程序已经调试无错误|无警告信息|TC调试能可以用|有高手有问题请赐教|欢迎指出错误。
---------------------------------------------------------------------------------------------------

大学的能力和差距产生在是否因为学习而学习!

Hoky 2004-9-21 09:37

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

冰血封情 2004-9-21 11:46

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

承让了:)

EvilOctal 2005-2-6 00:09

两段代码功能一样

[code]#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;
}[/code]

[code]#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;
}[/code]

EvilOctal 2005-2-6 01:52

注释是无锋之刃做的
[code]#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);
}[/code]

冰血封情 2005-2-6 21:53

[code]//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);
}[/code]

[code]
//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);
}[/code]

EvilOctal 2005-2-7 01:05

子函数练习

[code]#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");
}[/code]

冰血封情 2005-2-7 02:04

strlen
[code]#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;
}[/code]

[code]#include <stdio.h>
#include <string.h>

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

    return 0;
}[/code]

冰血封情 2005-2-7 04:10

学习到变量和常量存储信息的地方
下面的程序我加了注释 如果回头来自己看不懂是什么功能 那就去死

[code]//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;
}[/code]

冰血封情 2005-2-8 05:14

等会后面有个程序要想看懂 就必须要一些前置知识 其中有time和srand两个函数我不是很懂 找了资料
time函数
time_t time(time_t *thetime);
功能是取得系统的时间 需要包含头文件#include <time.h>
thetime:指向time_t变量的可选指针 在这个变量中存放当前的日期和时间 如果是NULL着忽略 代码举例如下
[code]#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;
}[/code]
srand函数 原型
void srand(unsigned seed);
它的功能是 用来初始化随机数发生器 以便让随机数发生器产生可以预测的随即序列(nnd这JB叫什么解释呀)
头文件是#include <stdlib.h>
参数说明
seed是无符号整数 指明随机数序列的最小起点 注意是没有返回值的 下面来个演示程序
[code]#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;
}[/code]
好 前置知识解决了 下面来看一个猜数字游戏 本来这个游戏是只要求能输入运行查看结果的 很不幸 我读懂了 比第一天有进步 第一天的程序是无锋帮我分析的
[code]#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;
}[/code]

冰血封情 2005-2-8 08:03

简单的递归调用
[code]# 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;
    }
}[/code]

冰血封情 2005-2-8 08:21

使用多条return语句的作业
原来的例子
[code]//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;
}[/code]
要求子函数中只包含一条return 如下
[code]//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;
}[/code]

冰血封情 2005-2-9 02:57

求数组里的最大值 最小值 输入0终止接收
[code]#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;
}[/code]

xiaohui_82 2005-3-2 14:48

成绩管理系统
[code]
#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();
}
[/code]

xiaohui_82 2005-3-2 14:50

俄罗斯方块简单C语言版
[code]
#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+3