百度
360搜索
搜狗搜索

c语言小人跳舞代码,C语言,我的小人在动的时候会闪屏,我用的是cls实现的,求知道该怎么办?详细介绍

本文目录一览: C语言运动的小人

多了一个最后的大括号}。
编写程序请养成缩格书写的习惯!
给你点建议,符号缩进用好了。不然阅读起来太费劲了
#include

#include

int main()

{

int i, a, b, c;

for (i = 0; i <= 7; i++) {

system("cls");

}

for (a = 1; a <= i; a++);

{

printf(" ");

}

printf("@\n");

for (b = 1; a <= i; a++) {

printf(" ");

}

printf("~|~\n");

for (c = 1; a <= i; a++) {

printf(" ");

}

printf("| |\n");

sleep(1000);

return 0;

}

这样子就好了

用C语言解决--跳舞搭配问题

#include

#include

#include

#include

#include

#define maxn 1281000

#define max(a,b) (a>b?a:b)

#define min(a,b) (a
<b?a:b)
#define abs(a) (a>0? a:-(a))

long n,m;

void Init(void)

{

long i,j,o=0; scanf("%ld%ld",&n,&m);

for(i=1; i<=n; i++) for(j=1; j<=m; j++)

{

o++;printf("%ld %ld %ld\n",o,i,j);

}

}

int main(void)

{

freopen("dance.in","r",stdin);

freopen("dance.out","w",stdout);

// while(1)

// {

Init(); // Begin();//while(1);

//}

return 0;

}
</b?a:b)

哪位大神有c语言做的小人的代码,什么小人都可以,什么叮当猫hellokitty

#include

int main() { char* s[] = {"______________$$$$$$$", "_____________$$$$$$$$$", "____________$$$$$$$$$$$", "____________$$$$$$$$$$$", "____________$$$$$$$$$$$", "_____________$$$$$$$$$", "_____$$$$$$_____$$$$$$$$$$", "____$$$$$$$$__$$$$$$_____$$$", "___$$$$$$$$$$$$$$$$_________$", "___$$$$$$$$$$$$$$$$______$__$", "___$$$$$$$$$$$$$$$$_____$$$_$", "___$$$$$$$$$$$__________$$$_$_____$$", "____$$$$$$$$$____________$$_$$$$_$$$$", "______$$$__$$__$$$______________$$$$", "___________$$____$_______________$", "____________$$____$______________$", "_____________$$___$$$__________$$", "_______________$$$_$$$$$$_$$$$$", "________________$$____$$_$$$$$", "_______________$$$$$___$$$$$$$$$$", "_______________$$$$$$$$$$$$$$$$$$$$", "_______________$$_$$$$$$$$$$$$$$__$$", "_______________$$__$$$$$$$$$$$___$_$", "______________$$$__$___$$$______$$$$", "______________$$$_$__________$$_$$$$", "______________$$$$$_________$$$$_$_$", "_______________$$$$__________$$$__$$", "_____$$$$_________$________________$", "___$$$___$$______$$$_____________$$", "__$___$$__$$_____$__$$$_____$$__$$", "_$$____$___$_______$$$$$$$$$$$$$", "_$_____$____$_____$$$$$$__$$$$$$$$"}; int LENGTH = 32; int i = 0; for (i = 0; i < LENGTH; i++) { printf("%s\n", s[i]); }}

c语言关于舞会跳舞问题,在周末舞会上,男士们(m人)和女士们(n人, n(m)进入舞厅时,各自排成一队。

其实你这程序我都没那么弄懂
你更注重技术上的东西
而我学习c语言更注重算法上的东西
也就是说你想通过简单的运算运用技巧性的东东让电脑帮你计算
而我是通过自己思考的算法让电脑表达出来
其实这两种思路都不矛盾的 各有所长
你这程序 人为设定了m,n 有局限性 也就是说可能不通用
我也试着写了些(如果题意没理解错的话)
其实题2用用题1的程序就行了 你再仔细想想 看看我的问题2
#include

#include

int gac(int m,int n,int y,int t)

{int x,z;

if((n*t/m)>0)

{z=(n*t%m+m-n+y);

if(z>m) z=z-m;

x=z;

}

else x=(n*t-n+y);

return x;

}

void main()

{int gac(int m,int n,int y,int t);

int m,n,y,t,a;

int x2,y2,t2,a2;

printf("问题1\n请输入男女生的人数,以逗号隔开\n");

scanf("%d,%d",&m,&n);

printf("请输入此时跳舞的女生号数\n");

scanf("%d",&y);

printf("请输入此时的曲数\n");

scanf("%d",&t);

a=gac(m,n,y,t);

printf("此时%d号女生的搭档是%d号男生\n",y,a);

printf("问题2\n请输入男主人公及其心仪女生的号数,并以逗号隔开\n");

scanf("%d,%d",&x2,&y2);

t=0;

do

{t++;

a2=gac(m,n,y2,t);}

while(a2!=x2);

printf("如果%d号男生想要与%d号女生跳舞,需要到第%d首曲子\n",x2,y2,t);

}

C语言,我的小人在动的时候会闪屏,我用的是cls实现的,求知道该怎么办?

正常。这是dos的显示问题。除非你用图形画出小人。
利用控制光标的API头文件在windows.h(光标就是那个一闪一闪的输入提示符)
-----
HANDLE handle;
COORD coord;
handle=GetStdHandle(STD_OUTPUT_HANDLE);
coord.X=0; // 这里是光标目标位置的横坐标(此时为0,更改数值试试)
coord.Y=0; // 这里是光标目标位置的纵坐标(此时为0,更改数值试试)
SetConsoleCursorPosition(handle,coord);
-----
控制光标到想要擦出的位置进行擦除还原,再控制光标在想要画小人的地方画小人
可以将这一段编为一个函数,方便调用

同学,怎么用C语言制作简单的动画啊?

其实也算不上什么动画,不是flash喔。只是在控制台里面实现打印效果切换#include "user-def.H" //引入自定义头文件
void main()
{
int i; //用户循环
printf("简单动画演示程序\n");
for(i=0;i<5;i++)
display_picture(); //打印动画效果
printf("\n\t\t\t\tTest\n");
system("pause"); //暂停
} 以上就是主文件内容,是不是觉得很简单呢?下面是自定义头文件user_def.h/* user_def.h */#ifndef _user_def_H //用户自定义头文件user-defined
#define _user_def_H#include

//支持Sleep函数

#include

#include

//用于随机函数初始化time()void color_back() //设置文本字符的颜色

{

int i;

srand((unsigned)time(NULL)); //初始化时钟

i=rand()%15; //随机一个0到14的整数

switch(i)

{

case 0: system("color 07");break;

case 1: system("color 08");break;

case 2: system("color 09");break;

case 3: system("color 0A");break;

case 4: system("color 0B");break;

case 5: system("color 0C");break;

case 6: system("color 0D");break;

case 7: system("color 0E");break;

case 8: system("color 0F");break;

case 9: system("color 01");break;

case 10:system("color 02");break;

case 11:system("color 03");break;

case 12:system("color 04");break;

case 13:system("color 05");break;

case 14:system("color 06");break;

}

}void display_picture() //显示动画程序

{

system("cls");

printf("\n\n");

color_back(); //随机一个文本颜色

Sleep(300); //让系统暂停300毫秒,1秒 = 1 000 毫秒

printf("\t\t J RRRRRR L \n");

color_back();

Sleep(300);

printf("\t\t J R R L \n");

color_back();

Sleep(300);

printf("\t\t J R R L \n");

color_back();

Sleep(300);

printf("\t\t J R R L \n");

color_back();

Sleep(300);

printf("\t\t J RRRRRR L \n");

color_back();

Sleep(300);

printf("\t\t J R R L \n");

color_back();

Sleep(300);

printf("\t\t J J R R L \n");

color_back();

Sleep(300);

printf("\t\t J J R R L \n");

color_back();

Sleep(300);

printf("\t\t JJJJ R R LLLLLLLL \n");

}#endif自定义头文件增加了程序中函数的重用性,让我感觉到C语言更加灵活更加随心所欲。俗话说:参谋不带长,放屁也不响。如果学C语言不会灵活使用自定义头文件,那么相当于是个参谋,档次层次都不够格。

提供一个demo,需要在TC上运行,运动的卫星 ,卫星是绕着屏幕不断地运行直到按任意键为止。

/*运动的卫星QW45.C*/#include

#include

#include

#include

#define SIZE 10void draw_image(int x,int y);void putpixel_demo(void);int main(){int gmode,gdriver=DETECT,errorcode;void *pt_addr;int x,y,maxx,maxy,midx,midy,i;unsigned int size;initgraph(&gdriver,&gmode,"\\tc3\\bgi");errorcode=graphresult();if(errorcode!=0){printf("Graphics error: %s\n",grapherrormsg(errorcode));printf("Press any key to halt:");getch();exit(1);}maxx=getmaxx();maxy=getmaxy();midx=maxx/2;x=0;midy=maxy/2;y=maxy/2;setcolor(YELLOW);settextstyle(TRIPLEX_FONT,HORIZ_DIR,4);settextjustify(CENTER_TEXT,CENTER_TEXT);outtextxy(midx,400,"COMPUTER WORLD");setcolor(BLACK);setcolor(RED);setlinestyle(SOLID_LINE,0,NORM_WIDTH);setcolor(LIGHTBLUE);for(i=0;i<13;i++){ellipse(midx,midy,0,360,100,100-8*i);ellipse(midx,midy,0,360,100-8*i,100);}draw_image(x,y);size=imagesize(x,y-SIZE,x+(4*SIZE),y+SIZE);pt_addr=malloc(size);getimage(x,y-SIZE,x+(4*SIZE),y+SIZE,pt_addr);putpixel_demo();setcolor(WH99vE);setlinestyle(SOLID_LINE,0,NORM_WIDTH);rectangle(0,0,maxx,maxy);while(!kbhit()){putimage(x,y-SIZE,pt_addr,XOR_PUT);x=x+5;if(x>maxx)x=0;putimage(x,y-SIZE,pt_addr,XOR_PUT);delay(100);}free(pt_addr);closegraph();return 0;}void draw_image(int x,int y){moveto(x+10,y);setcolor(14);setfillstyle(1,4);linerel(-3*10,2*10);moveto(x+10,y);linerel(-3*10,-2*10);moveto(x+25,y);linerel(-5*10,0);fillellipse(x+13,y,8,8);}void putpixel_demo(void){int seed=2003;int i,dotx,doty,h,w,color,maxcolor;maxcolor=getmaxcolor();w=getmaxx();h=getmaxy();srand(seed);for(i=0;i<5000;++i){dotx=1+random(w-1);doty=1+random(h-1);color=random(maxcolor);putpixel(dotx,doty,color);}srand(seed);}

因为C的图形处理功能太一般,不便于创作大型动画。制作动画用flash。

flash制作动画:

打开Flash,点击【文件】→【新建】,在打开的“新建”窗口中选择“Flash文件(ActiveScript 3.0)“,然后点击”确定“创建空白文档。

点击【插入】→【新建元件】,在打开的”新建元件“窗口中,将名称设置为”运动的小人“,勾选”影片剪辑“,然后点击”确定“按钮。

点击【文件】→【导入】→【导入到库】,然后在打开的”导入到库“窗口中,选择事先准备好的小人走动姿势图片,全部选择并点击”打开“按钮,导入到库。

在图层1 的第一帧,把库中的“Result0”拖动到场景中。

点击“时间轴”上的“新建图层”按钮,创建图层2,然后在图层2的第5帧处,点击【插入】→【关键帧】,把库中的“Result1”拖动到场景中。

利用同样的原理,将”Result2“、 ”Result3“和”Result4“分别到图层3、图层4和图层5中,对应的帧分别为10、15和20处。

最后调整各个图层图像的延续时间。至此,运动的小人影片剪辑制作完成。

切换至主场景中,使主场景处于活动状态,点击”属性“面板中的”大小“按钮,将场景的大小设置为”800*300“,同时将背景色设置为”黑色“点击”确定“按钮。

从库中将”运动的小人“影片剪辑拖动到场景左边外边。

然后在”时间轴“第30帧处,点击【插入】→【时间轴】→【关键帧】,在30帧处插入关键帧,然后将小人从场景的左侧外面拖动到场景右侧外面。至此,整个动画设置完成。

在1到30帧之间鼠标右击,选择”创建补间动画“。

最后按下键盘组合键”CTRL+Enter“进行测试。如果感觉小人运动不规律,可适当将1至30帧的距离调整的稍微大一些,直到满意为止。

阅读更多 >>>  printf和scanf同时使用,C语言scanf和printf的使用问题

教你如何使用C语言编写简单小游戏

爱玩是人的天性,而C语言是我们计算机专业都要学习的一门基础 学科.一般来说,是比较枯燥的.那么,我们能不能通过编一些小游戏来提高它的趣味性呢?这样学习程序设计,就不会是一件艰苦 ,枯燥的事,它变得象电脑游戏一样充满好奇,富有乐趣. 1, 总是从Hello,world开始 学习编程的第一个程序,一般就是打印一个亲切的词语——"Hell o,world!".让我们来看看这个最简单的C程序:#incolude

/*把输入输出函数的头文件包含进来*/int main(){printf("Hello, world!");/*在屏幕上输出字符串"Hello,world!"*/return 0;/*退出main函数,并返回0*/} 下面我们发现几个值得改进的地方,1,程序的运行结果一闪而过 .2,每执行这个程序一次都能看见上次运行留下的字符.3,我们 还希望屏幕输出一个笑脸来欢迎我们. 让我们来改进一下这个程序吧!1,在return语句的前面加一句:getch ();,表示按任意键结束.2,在printf语句前用clrscr函数清屏,要使用这个函数和getch函数,需要在程序开头再包含头文件conio.h.3,ASCII码也有 许多非常好玩的字符,比如ASCII码值为2的就是一个笑脸,我们可 以用printf("%c", 2)来输出一个笑脸. 现在我们把Hello,world程序改成一个更好看的Hello,world了.下面让我们开始做游戏吧! 2, 心动的开始,一个运动中的笑脸 大家小时侯喜欢看动画片吗?哈哈,我猜你们都喜欢吧!下面就让我们来做一个小动画吧.在屏幕上显示一个运动的小笑脸,而且当它到达屏幕的边缘时会自动弹回来.先在程序定义一个在屏幕中运动的点的结构:struct move_point{ int x, y;/*该点的位置,包括x坐标和y坐标*/ int xv, yv;/*该点在x轴,y轴的速度*/};运动的原理是,先擦去物体先前的轨迹,让物体按其速度移动一段距离,再画出该物体.让我们看到以下代码:gotoxy(man.x, man.y);/*把光标移到指定的坐标*/printf(" ");/*输出一个空格,把先前的字符擦去*/然后我们让物体按其速度运动:man.x += man.xv;/*水平方向按x轴的速度运动*/man.y += man.yv;/*垂直方向按y轴的速度运动*/运动后还要判断物体是否出界,如果出了界,就令物体反弹,即让 它下一刻的速度等于现在的速度的相反数.最后打印出这个笑脸:gotoxy(man.x, man.y);printf("%c\b", 2); /*输出ASCII码值为2的"笑脸"字符*/怎么样?是不是很有趣呢?不过这个笑脸一直是自己运动,能不能 让我们来控制它运动呢?答案是肯定的,让我们继续往下学吧! 3, 交互的实现——让我们来控制笑脸运动 这个程序的主要功能是接受按键,如果接收的是方向键,就让笑脸顺着方向移动,如果接收的是ESC键就退出程序,其他按键则忽略处理.接受按键我们用以下两条语句:while (bioskey(1) == 0);/*等待按键*/key = bioskey(0);/*把接收的按键的键盘码赋给变量key*/然后用switch语句来判断按键以及执行相关操作,如下:switch (key) /*对变量key的值进行判断*/{case UP: /*如果按的是向上键*/ … break; /*让物体向上运动,并退出switch*/case DOWN: /*如果按的是向下键*/ … break; /*让物体向下运动,并退出switch*/case LEFT: /*向左键*/ … break;;/*向左运动*/case RIGHT: /*向右键*/ … break;/*向右运动*/

default: break;/*其他按键则忽略处理*/}怎么样,是不是有了玩游戏的感觉了?不过这个程序没有什么目的,也没有什么判断胜负的条件.下面我们就利用这个能控制它移动的笑脸来做一个更有趣的游戏吧! 4, 在迷宫中探索 小时侯,我常在一些小人书和杂志上看见一些迷宫的游戏,非常喜欢玩,还常到一些书上找迷宫玩呢.好的,现在我们用C语言来编个迷宫的游戏,重温一下童年的乐趣. 首先,我们定义一个二维数组map,用它来保存迷宫的地图,其中map[x][y] == '#'表示在(x,y)坐标上的点是墙壁.DrawMap函数在屏幕上输出迷宫的地图和一些欢迎信息.在main函数里,我们定义了"小人"man的坐标和"目的地"des的 坐标.在游戏循环中,我们增加了一些用来判断胜负的语句:if (man.x == des.x && man.y == des.y) /*如果人的坐标等于目的地的坐标*/{ gotoxy(35, 3); printf("Ok! You win!"); /*输出胜利信息*/….}在判断按键时,如果玩家按的是方向键,我们还要先判断前面是不是有"墙壁",如果有的话,就不能往前移动了.好的,我们在判断按键的switch语句的各个分支加上了判断语句,如下:if (map[…][…] == '#') break;/*如果前面是墙壁,就不执行下去*/哇噻!真棒,我们做出了一个完整的游戏了.当然你还可以通过修改二维数组map来修改迷宫的地图,让它更有挑战性.不过,我们要设计一个更好玩的游戏—— 5, 聪明的搬运工 大家一定玩过"搬运工"的游戏吧!这是在电脑和电子字典上较流行的益智游戏,让我们动手做一个属于自己的"搬运工"吧!程序依然用数组map来保存地图,数组元素如果为空格则表示什么也没有,'b'表示箱子,'#'表示墙壁,'*'表示目的地,'i'表示箱子在目的地.我们以后每推一下箱子,不但要改变屏幕的显示,也要改变map相应元素的值.游戏的主循环依然是接受按键.当接收一个方向键,需要判断小人前面一格的状态,如果是空地或目的地,则人物可以直接移动;如果是墙壁,则不可移动;如果是箱子或目的地上的箱子,则需要继续判断箱子前面一格的状态:如果前一格是空地或目的地,则人推箱子前进,否则不可移动.好的,我们在switch中增加了这些判断语句.程序还有一个重要的功能就是判断胜利.数组Des用来记录全部目的地的坐标,我们每执行一步操作后,程序就要通过Des数组判断这些目的地上是否都有箱子了.真棒啊!我们可以做游戏了.而且是一个老少皆宜,趣味十足的游戏呢!当然,我们可以通过修改map数组来制作不同的游戏地图,我们还可以相互分享好的游戏地图呢. 尾声: 在C++等高级语言还没出来的时候,很多应用程序也是C语言开发的.C语言在与硬件联系紧密的编程中,也占有重要地位.其实我觉得学习编程,可以通过一些小游戏,实用的例子来学习.象学习音乐的人,不是要等到把全部乐理学完后才演奏一个完整的曲子.而是刚开始学时就有一些简单的曲子让你演奏,让你立刻就有成就感,让你很快就能卖弄出来在别人面前表现自己了.通过编游戏来学习编程,把学习变成游戏,不失为学习计算机的一种好方法. 好了,编游戏就这么简单,希望大家也尝试用C语言或其他的语言来做几个自己喜欢的小游戏.

//声明

#include

#include

#include

#include

#include

#define SIZE 4

static int score=0;

void putn(int n[][SIZE]);

void getn(int n[][SIZE]);

int isempty(int n[][SIZE]);

int isfull(int n[][SIZE]);

void math(int n[][SIZE],char c);

void tow(int n[][SIZE]);

void toa(int n[][SIZE]);

void tos(int n[][SIZE]);

void tod(int n[][SIZE]);

//主函数

int main()

{

int i,j;

int n[SIZE][SIZE];

char c=' ';

for(i=0;i
<size;i++)
{

for(j=0;j
<size;j++)
{

n[i][j]=0;

}

}

printf( "***********************\n"

" 2048(%dX%d) \n"

" control:W/A/S/D \n"

"press any key to begin \n"

"***********************\n",SIZE,SIZE);

getch();

system("cls");

//n[0][1]=2048;

//n[0][3]=2048;

while(1)

{

if(isempty(n))

getn(n);

putn(n);

if(!isempty(n)&&isfull(n))

break;

sleep(200);

c=getch();

while(c!='w'&&c!='a'&&c!='s'&&c!='d')

c=getch();

math(n,c);

system("cls");

}

printf(" Game Over!\n",score);

return 0;

}

//函数

void putn(int n[][SIZE])

{

int i,j;

for(i=0;i
<size;i++)
{

for(j=0;j
<size;j++)
printf("| ");

printf("|\n");

for(j=0;j
<size;j++)
{

if(n[i][j]==0)

printf("| ");

else

printf("|%4d ",n[i][j]);

}

printf("|\n");

for(j=0;j
<size;j++)
printf("|_____");

printf("|\n");

}

printf("score: %d",score);

}

void getn(int n[][SIZE])

{

int a,b;

a=rand()%SIZE;

b=rand()%SIZE;

while(n[a][b]!=0)

{

a=rand()%SIZE;

b=rand()%SIZE;

}

n[a][b]=2;

}

int isempty(int n[][SIZE])

{

int i,j,count=0;

for(i=0;i
<size;i++)
for(j=0;j
<size;j++)
if(n[i][j]==0)

count++;

return count;

}

int isfull(int n[][SIZE])

{

int i,j,count=0;

for(i=0;i
<size;i++)
{

for(j=1;j
<size-1;j++)
{

if(n[i][j]==n[i][j+1]||n[i][j]==n[i][j-1])

count++;

}

}

for(j=0;j
<size;j++)
{

for(i=1;i
<size-1;i++)
{

if(n[i][j]==n[i+1][j]||n[i][j]==n[i-1][j])

count++;

}

}

return count>0?0:1;

}

void math(int n[][SIZE],char c)

{

switch(c)

{

case 'w':tow(n);break;

case 'a':toa(n);break;

case 's':tos(n);break;

case 'd':tod(n);break;

default :;

}

}

void tow(int n[][SIZE])

{

int i,j,a;

int m[SIZE];

for(a=0;a
<size;a++)
m[a]=0;

for(j=0;j
<size;j++)
{

for(a=0;a
<size;a++)
{

for(i=0;i
<size-1;i++)
{

if(n[i][j]==0)

{

n[i][j]=n[i+1][j];

n[i+1][j]=0;

}

}

}

}

for(j=0;j
<size;j++)
{

for(a=0,i=0;i
<size;i++)
{

if(n[i][j]!=n[i+1][j]&&n[i][j]!=0||n[i][j]==2048)

{

m[a++]=n[i][j];

n[i][j]=0;

}

else if(n[i][j]==n[i+1][j])

{

m[a++]=n[i][j]+n[i+1][j];

score+=m[a-1];

n[i][j]=0,n[i+1][j]=0;

}

}

for(i=0;i
<size;i++)
{

n[i][j]=m[i];

m[i]=0;

}

}

}

void toa(int n[][SIZE])

{

int i,j,a;

int m[SIZE];

for(a=0;a
<size;a++)
m[a]=0;

for(i=0;i
<size;i++)
{

for(a=0;a
<size;a++)
{

for(j=0;j
<size-1;j++)
{

if(n[i][j]==0)

{

n[i][j]=n[i][j+1];

n[i][j+1]=0;

}

}

}

}

for(i=0;i
<size;i++)
{

for(a=0,j=0;j
<size;j++)
{

if(n[i][j]!=n[i][j+1]&&n[i][j]!=0||n[i][j]==2048)

{

m[a++]=n[i][j];

n[i][j]=0;

}

else if(n[i][j]==n[i][j+1])

{

m[a++]=n[i][j]+n[i][j+1];

score+=m[a-1];

n[i][j]=0,n[i][j+1]=0;

}

}

for(j=0;j
<size;j++)
{

n[i][j]=m[j];

m[j]=0;

}

}

}

void tos(int n[][SIZE])

{

int i,j,a;

int m[SIZE];

for(a=0;a
<size;a++)
m[a]=0;

for(j=SIZE-1;j>=0;j--)

{

for(a=SIZE-1;a>=0;a--)

{

for(i=SIZE-1;i>0;i--)

{

if(n[i][j]==0)

{

n[i][j]=n[i-1][j];

n[i-1][j]=0;

}

}

}

}

for(j=SIZE-1;j>=0;j--)

{

for(a=SIZE-1,i=SIZE-1;i>=0;i--)

{

if(n[i][j]!=n[i-1][j]&&n[i][j]!=0||n[i][j]==2048)

{

m[a--]=n[i][j];

n[i][j]=0;

}

else if(n[i][j]==n[i-1][j])

{

m[a--]=n[i][j]+n[i-1][j];

score+=m[a+1];

n[i][j]=0,n[i-1][j]=0;

}

}

for(i=SIZE-1;i>=0;i--)

{

n[i][j]=m[i];

m[i]=0;

}

}

}

void tod(int n[][SIZE])

{

int i,j,a;

int m[SIZE];

for(a=0;a
<size;a++)
m[a]=0;

for(i=SIZE-1;i>=0;i--)

{

for(a=SIZE-1;a>=0;a--)

{

for(j=SIZE-1;j>0;j--)

{

if(n[i][j]==0)

{

n[i][j]=n[i][j-1];

n[i][j-1]=0;

}

}

}

}

for(i=SIZE-1;i>=0;i--)

{

for(a=SIZE-1,j=SIZE-1;j>=0;j--)

{

if(n[i][j]!=n[i][j-1]&&n[i][j]!=0||n[i][j]==2048)

{

m[a--]=n[i][j];

n[i][j]=0;

}

else if(n[i][j]==n[i][j-1])

{

m[a--]=n[i][j]+n[i][j-1];

score+=m[a+1];

n[i][j]=0,n[i][j-1]=0;

}

}

for(j=SIZE-1;j>=0;j--)

{

n[i][j]=m[j];

m[j]=0;

}

}

}

需要注意的是:

srand((unsigned) time(0);rand();是固定形式,不要更改任何一个字符!

如果不能编译,请把sleep(200);注释掉,如果提示不能找到system("cls");请把system("cls")更换为clrscr();

C语言是计算机专业都要学习的一门基础学科。一般来说,是比较枯燥的.那么,我们能不能通过编一些小游戏来提高它的趣味性呢?这样学习程序设计,就不会是一件艰苦 ,枯燥的事,它变得象电脑游戏一样充满好奇,富有乐趣。

例如2048这款游戏:

方法/步骤:

#include

阅读更多 >>>  printf函数源码,printf的源码

#include

#include

#include

#include

#define SIZE 4

static int score=0;

void putn(int n[][SIZE]);

void getn(int n[][SIZE]);

int isempty(int n[][SIZE]);

int isfull(int n[][SIZE]);

void math(int n[][SIZE],char c);

void tow(int n[][SIZE]);

void toa(int n[][SIZE]);

void tos(int n[][SIZE]);

void tod(int n[][SIZE]);

//主函数

int main()

{

int i,j;

int n[SIZE][SIZE];

char c=' ';

for(i=0;i
<size;i++)
{

for(j=0;j
<size;j++)
{

n[i][j]=0;

}

}

printf( "***********************\n"

" 2048(%dX%d) \n"

" control:W/A/S/D \n"

"press any key to begin \n"

"***********************\n",SIZE,SIZE);

getch();

system("cls");

//n[0][1]=2048;

//n[0][3]=2048;

while(1)

{

if(isempty(n))

getn(n);

putn(n);

if(!isempty(n)&&isfull(n))

break;

sleep(200);

c=getch();

while(c!='w'&&c!='a'&&c!='s'&&c!='d')

c=getch();

math(n,c);

system("cls");

}

printf(" Game Over!\n",score);

return 0;

}

//函数

void putn(int n[][SIZE])

{

int i,j;

for(i=0;i
<size;i++)
{

for(j=0;j
<size;j++)
printf("| ");

printf("|\n");

for(j=0;j
<size;j++)
{

if(n[i][j]==0)

printf("| ");

else

printf("|%4d ",n[i][j]);

}

printf("|\n");

for(j=0;j
<size;j++)
printf("|_____");

printf("|\n");

}

printf("score: %d",score);

}

void getn(int n[][SIZE])

{

int a,b;

a=rand()%SIZE;

b=rand()%SIZE;

while(n[a][b]!=0)

{

a=rand()%SIZE;

b=rand()%SIZE;

}

n[a][b]=2;

}

int isempty(int n[][SIZE])

{

int i,j,count=0;

for(i=0;i
<size;i++)
for(j=0;j
<size;j++)
if(n[i][j]==0)

count++;

return count;

}

int isfull(int n[][SIZE])

{

int i,j,count=0;

for(i=0;i
<size;i++)
{

for(j=1;j
<size-1;j++)
{

if(n[i][j]==n[i][j+1]||n[i][j]==n[i][j-1])

count++;

}

}

for(j=0;j
<size;j++)
{

for(i=1;i
<size-1;i++)
{

if(n[i][j]==n[i+1][j]||n[i][j]==n[i-1][j])

count++;

}

}

return count>0?0:1;

}

void math(int n[][SIZE],char c)

{

switch(c)

{

case 'w':tow(n);break;

case 'a':toa(n);break;

case 's':tos(n);break;

case 'd':tod(n);break;

default :;

}

}

void tow(int n[][SIZE])

{

int i,j,a;

int m[SIZE];

for(a=0;a
<size;a++)
m[a]=0;

for(j=0;j
<size;j++)
{

for(a=0;a
<size;a++)
{

for(i=0;i
<size-1;i++)
{

if(n[i][j]==0)

{

n[i][j]=n[i+1][j];

n[i+1][j]=0;

}

}

}

}

for(j=0;j
<size;j++)
{

for(a=0,i=0;i
<size;i++)
{

if(n[i][j]!=n[i+1][j]&&n[i][j]!=0||n[i][j]==2048)

{

m[a++]=n[i][j];

n[i][j]=0;

}

else if(n[i][j]==n[i+1][j])

{

m[a++]=n[i][j]+n[i+1][j];

score+=m[a-1];

n[i][j]=0,n[i+1][j]=0;

}

}

for(i=0;i
<size;i++)
{

n[i][j]=m[i];

m[i]=0;

}

}

}

void toa(int n[][SIZE])

{

int i,j,a;

int m[SIZE];

for(a=0;a
<size;a++)
m[a]=0;

for(i=0;i
<size;i++)
{

for(a=0;a
<size;a++)
{

for(j=0;j
<size-1;j++)
{

if(n[i][j]==0)

{

n[i][j]=n[i][j+1];

n[i][j+1]=0;

}

}

}

}

for(i=0;i
<size;i++)
{

for(a=0,j=0;j
<size;j++)
{

if(n[i][j]!=n[i][j+1]&&n[i][j]!=0||n[i][j]==2048)

{

m[a++]=n[i][j];

n[i][j]=0;

}

else if(n[i][j]==n[i][j+1])

{

m[a++]=n[i][j]+n[i][j+1];

score+=m[a-1];

n[i][j]=0,n[i][j+1]=0;

}

}

for(j=0;j
<size;j++)
{

n[i][j]=m[j];

m[j]=0;

}

}

}

void tos(int n[][SIZE])

{

int i,j,a;

int m[SIZE];

for(a=0;a
<size;a++)
m[a]=0;

for(j=SIZE-1;j>=0;j--)

{

for(a=SIZE-1;a>=0;a--)

{

for(i=SIZE-1;i>0;i--)

{

if(n[i][j]==0)

{

n[i][j]=n[i-1][j];

n[i-1][j]=0;

}

}

}

}

for(j=SIZE-1;j>=0;j--)

{

for(a=SIZE-1,i=SIZE-1;i>=0;i--)

{

if(n[i][j]!=n[i-1][j]&&n[i][j]!=0||n[i][j]==2048)

{

m[a--]=n[i][j];

n[i][j]=0;

}

else if(n[i][j]==n[i-1][j])

{

m[a--]=n[i][j]+n[i-1][j];

score+=m[a+1];

n[i][j]=0,n[i-1][j]=0;

}

}

for(i=SIZE-1;i>=0;i--)

{

n[i][j]=m[i];

m[i]=0;

}

}

}

void tod(int n[][SIZE])

{

int i,j,a;

int m[SIZE];

for(a=0;a
<size;a++)
m[a]=0;

for(i=SIZE-1;i>=0;i--)

{

for(a=SIZE-1;a>=0;a--)

{

for(j=SIZE-1;j>0;j--)

{

if(n[i][j]==0)

{

n[i][j]=n[i][j-1];

n[i][j-1]=0;

}

}

}

}

for(i=SIZE-1;i>=0;i--)

{

for(a=SIZE-1,j=SIZE-1;j>=0;j--)

{

if(n[i][j]!=n[i][j-1]&&n[i][j]!=0||n[i][j]==2048)

{

m[a--]=n[i][j];

n[i][j]=0;

}

else if(n[i][j]==n[i][j-1])

{

m[a--]=n[i][j]+n[i][j-1];

score+=m[a+1];

n[i][j]=0,n[i][j-1]=0;

}

}

for(j=SIZE-1;j>=0;j--)

{

n[i][j]=m[j];

m[j]=0;

}

}

}

编写程序,实现如下表所示的5-魔方阵。

17

24

1

8

15

23

5

7

14

16

4

6

13

20

22

10

12

19

21

3

11

18

25

2

9

5-魔方阵

问题分析

所谓“n-魔方阵”,指的是使用1?n2共n2个自然数排列成一个n×n的方阵,其中n为奇数;该方阵的每行、每列及对角线元素之和都相等,并为一个只与n有关的常数,该常数为n×(n2+1)/2。

例如5-魔方阵,其第一行、第一列及主对角线上各元素之和如下:

第一行元素之和:17+24+1+8+15=65

第一列元素之和:17+23+4+10+11=65

主对角线上元素之和:17+5+13+21+9=65



n×(n2+1)/2=5×(52+1)/2=65

可以验证,5-魔方阵中其余各行、各列及副对角线上的元素之和也都为65。

假定阵列的行列下标都从0开始,则魔方阵的生成方法为:在第0行中间置1,对从2开始的其余n2-1个数依次按下列规则存放:

(1)

假定当前数的下标为(i,j),则下一个数的放置位置为当前位置的右上方,即下标为(i-1,j+1)的位置。

(2)

如果当前数在第0行,即i-1小于0,则将下一个数放在最后一行的下一列上,即下标为(n-1,j+1)的位置。

(3)

如果当前数在最后一列上,即j+1大于n-1,则将下一个数放在上一行的第一列上,即下标为(i-1,0)的位置。

(4)

如果当前数是n的倍数,则将下一个数直接放在当前位置的正下方,即下标为(i+1,j)的位置。

算法设计

在设计算法时釆用了下面一些方法:

定义array()函数,array()函数的根据输入的n值,生成并显示一个魔方阵,当发现n不是奇数时,就加1使之成为奇数。

使用动态内存分配与释放函数malloc()与free(),在程序执行过程中动态分配与释放内存,这样做的好处是使代码具有通用性,同时提高内存的使用率。

在分配内存时还要注意,由于一个整型数要占用两个内存,因此,如果魔方阵中要存放的数有max个,则分配内存时要分配2*max个单元,从而有malloc(max+max)。在malloc()函数中使用max+max而不是2*max是考虑了程序运行的性能。

显然应该使用二维数组来表示魔方阵,但虽然数组是二维形式的,而由于内存是一维线性的,因此在存取数组元素时,要将双下标转换为单个索引编号。在程序中直接定义了指针变量来指向数组空间,即使用malloc()函数分配的内存。

puts(“求赐教!”);

爱玩是人的天性,而C语言是我们计算机专业都要学习的一门基础 学科.一般来说,是比较枯燥的.那么,我们能不能通过编一些小游戏来提高它的趣味性呢?这样学习程序设计,就不会是一件艰苦 ,枯燥的事,它变得象电脑游戏一样充满好奇,富有乐趣. 1, 总是从Hello,world开始 学习编程的第一个程序,一般就是打印一个亲切的词语——"Hell o,world!".让我们来看看这个最简单的C程序:#incolude /*把输入输出函数的头文件包含进来*/int main(){printf("Hello, world!");/*在屏幕上输出字符串"Hello,world!"*/return 0;/*退出main函数,并返回0*/} 下面我们发现几个值得改进的地方,1,程序的运行结果一闪而过 .2,每执行这个程序一次都能看见上次运行留下的字符.3,我们 还希望屏幕输出一个笑脸来欢迎我们. 让我们来改进一下这个程序吧!1,在return语句的前面加一句:getch ();,表示按任意键结束.2,在printf语句前用clrscr函数清屏,要使用这个函数和getch函数,需要在程序开头再包含头文件conio.h.3,ASCII码也有 许多非常好玩的字符,比如ASCII码值为2的就是一个笑脸,我们可 以用printf("%c", 2)来输出一个笑脸. 现在我们把Hello,world程序改成一个更好看的Hello,world了.下面让我们开始做游戏吧! 2, 心动的开始,一个运动中的笑脸 大家小时侯喜欢看动画片吗?哈哈,我猜你们都喜欢吧!下面就让我们来做一个小动画吧.在屏幕上显示一个运动的小笑脸,而且当它到达屏幕的边缘时会自动弹回来.先在程序定义一个在屏幕中运动的点的结构:struct move_point{ int x, y;/*该点的位置,包括x坐标和y坐标*/ int xv, yv;/*该点在x轴,y轴的速度*/};运动的原理是,先擦去物体先前的轨迹,让物体按其速度移动一段距离,再画出该物体.让我们看到以下代码:gotoxy(man.x, man.y);/*把光标移到指定的坐标*/printf(" ");/*输出一个空格,把先前的字符擦去*/然后我们让物体按其速度运动:man.x += man.xv;/*水平方向按x轴的速度运动*/man.y += man.yv;/*垂直方向按y轴的速度运动*/运动后还要判断物体是否出界,如果出了界,就令物体反弹,即让 它下一刻的速度等于现在的速度的相反数.最后打印出这个笑脸:gotoxy(man.x, man.y);printf("%c\b", 2); /*输出ASCII码值为2的"笑脸"字符*/怎么样?是不是很有趣呢?不过这个笑脸一直是自己运动,能不能 让我们来控制它运动呢?

不过这个程序没有什么目的,也没有什么判断胜负的条件.下面我们就利用这个能控制它移动的笑脸来做一个更有趣的游戏吧! 4, 在迷宫中探索 小时侯,我常在一些小人书和杂志上看见一些迷宫的游戏,非常喜欢玩,还常到一些书上找迷宫玩呢.好的,现在我们用C语言来编个迷宫的游戏,重温一下童年的乐趣. 首先,我们定义一个二维数组map,用它来保存迷宫的地图,其中map[x][y] == '#'表示在(x,y)坐标上的点是墙壁.DrawMap函数在屏幕上输出迷宫的地图和一些欢迎信息.在main函数里,我们定义了"小人"man的坐标和"目的地"des的 坐标.在游戏循环中,我们增加了一些用来判断胜负的语句:if (man.x == des.x && man.y == des.y) /*如果人的坐标等于目的地的坐标*/{ gotoxy(35, 3); printf("Ok! You win!"); /*输出胜利信息*/….}在判断按键时,如果玩家按的是方向键,我们还要先判断前面是不是有"墙壁",如果有的话,就不能往前移动了.好的,我们在判断按键的switch语句的各个分支加上了判断语句,如下:if (map[…][…] == '#') break;/*如果前面是墙壁,就不执行下去*/哇噻!真棒,我们做出了一个完整的游戏了.当然你还可以通过修改二维数组map来修改迷宫的地图,让它更有挑战性.不过,我们要设计一个更好玩的游戏—— 5, 聪明的搬运工 大家一定玩过"搬运工"的游戏吧!这是在电脑和电子字典上较流行的益智游戏,让我们动手做一个属于自己的"搬运工"吧!程序依然用数组map来保存地图,数组元素如果为空格则表示什么也没有,'b'表示箱子,'#'表示墙壁,'*'表示目的地,'i'表示箱子在目的地.我们以后每推一下箱子,不但要改变屏幕的显示,也要改变map相应元素的值.游戏的主循环依然是接受按键.当接收一个方向键,需要判断小人前面一格的状态,如果是空地或目的地,则人物可以直接移动;如果是墙壁,则不可移动;如果是箱子或目的地上的箱子,则需要继续判断箱子前面一格的状态:如果前一格是空地或目的地,则人推箱子前进,否则不可移动.好的,我们在switch中增加了这些判断语句.程序还有一个重要的功能就是判断胜利.数组Des用来记录全部目的地的坐标,我们每执行一步操作后,程序就要通过Des数组判断这些目的地上是否都有箱子了.真棒啊!我们可以做游戏了.而且是一个老少皆宜,趣味十足的游戏呢!当然,我们可以通过修改map数组来制作不同的游戏地图,我们还可以相互分享好的游戏地图呢. 尾声: 在C++等高级语言还没出来的时候,很多应用程序也是C语言开发的.C语言在与硬件联系紧密的编程中,也占有重要地位.其实我觉得学习编程,可以通过一些小游戏,实用的例子来学习.象学习音乐的人,不是要等到把全部乐理学完后才演奏一个完整的曲子.而是刚开始学时就有一些简单的曲子让你演奏,让你立刻就有成就感,让你很快就能卖弄出来在别人面前表现自己了.通过编游戏来学习编程,把学习变成游戏,不失为学习计算机的一种好方法. 好了,编游戏就这么简单,希望大家也尝试用C语言或其他的语言来做几个自己喜欢的小游戏.
</size;a++)
</size;a++)
</size;j++)
</size;j++)
</size;i++)
</size-1;j++)
</size;a++)
</size;i++)
</size;a++)
</size;i++)
</size;i++)
</size;j++)
</size-1;i++)
</size;a++)
</size;j++)
</size;a++)
</size-1;i++)
</size;j++)
</size-1;j++)
</size;i++)
</size;j++)
</size;i++)
</size;j++)
</size;j++)
</size;j++)
</size;i++)
</size;j++)
</size;i++)

阅读更多 >>>  java switch语句怎么用,javajava问题,题目要求用switch语句

</size;a++)
</size;a++)
</size;j++)
</size;j++)
</size;i++)
</size-1;j++)
</size;a++)
</size;i++)
</size;a++)
</size;i++)
</size;i++)
</size;j++)
</size-1;i++)
</size;a++)
</size;j++)
</size;a++)
</size-1;i++)
</size;j++)
</size-1;j++)
</size;i++)
</size;j++)
</size;i++)
</size;j++)
</size;j++)
</size;j++)
</size;i++)
</size;j++)
</size;i++)

C语言编程题(编个小人,从屏幕最左边走到最右边,并走回去)!

#include "stdio.h"
#include "stdlib.h"
void print(int n)
{
int m = n;
while(m--)
printf(" ");
printf("*\n");
m = n-1;
while(m--)
printf(" ");
printf("***\n");
while(--n)
printf(" ");
printf("* *\n");
}
#define MAX 75
void main()
{
int i = 2;
for(;i
<max;i++)
{

system("cls");

print(i);

}

while( i>=2)

{

system("cls");

print(i--);

}

}

// 可以包含windows.h,然后调用Sleep( 10 )来暂停绘制,表示暂停10MS。
</max;i++)

用C语言画简单的小人

TC2.0里有一个bgidemo.c的图形编程示例程序。
其中有一个演示屏幕贴图的子程序,一个外星人的飞船在屏幕上飞来飞去。
这个程序可以简单地修改一下就可以用于你的需求了。
程序不难看懂。
这个代码我找到了。大概说一下。LZ需要自己去找一下完整的代码研究,这里我只贴出相关的一段。
void PutImageDemo(void)
{
static int r = 20;
static int StartX = 100;
static int StartY = 50;
struct viewporttype vp;
int PauseTime, x, y, ulx, uly, lrx, lry, size, i, width, height, step;
void *Saucer;
MainWindow("GetImage / PutImage Demonstration");
getviewsettings( &vp );
/* Draw Saucer */ 下面是用绘画的方式画了一个简单的飞碟。这个飞碟图用于之前复制到内存里备用。
setfillstyle( SOLID_FILL, getmaxcolor() );
fillellipse(StartX, StartY, r, (r/3)+2);
ellipse(StartX, StartY-4, 190, 357, r, r/3);
line(StartX+7, StartY-6, StartX+10, StartY-12);
circle(StartX+10, StartY-12, 2);
line(StartX-7, StartY-6, StartX-10, StartY-12);
circle(StartX-10, StartY-12, 2);
/* Read saucer image */ 这里开始把那个飞碟的小图图复制到一个内存缓冲区里。先计算大小,需要的内存大小。
ulx = StartX-(r+1);
uly = StartY-14;
lrx = StartX+(r+1);
lry = StartY+(r/3)+3;
width = lrx - ulx + 1;
height = lry - uly + 1;
size = imagesize(ulx, uly, lrx, lry);
Saucer = malloc( size ); // 分配内存
getimage(ulx, uly, lrx, lry, Saucer); // 搞到了。
putimage(ulx, uly, Saucer, XOR_PUT); // 这就在原位置上,以异或的方式画一下。用异或的方式绘图,两次绘制后,图像正好就会消失为原来的背景。
但是,LZ的可能这样不行,那就需要复杂一些的绘制了,用人物的黑轮廓图或上背景,得到镂空,然后再把黑背景的角色用or方式绘上。
下面就是随机地绘制了。
/* Plot some "stars" */
for ( i=0 ; i<1000; ++i )
putpixel(random(MaxX), random(MaxY), random( MaxColors-1 )+1);
x = MaxX / 2;
y = MaxY / 2;
PauseTime = 70;
/* until a key is hit */
while ( !kbhit() ) {
/* Draw the Saucer */
putimage(x, y, Saucer, XOR_PUT); /* draw image */
delay(PauseTime);
putimage(x, y, Saucer, XOR_PUT); /* erase image */
上面的还是两次 xor,显示图片,消除图片。
/* Move Saucer */
step = random( 2*r );
if ((step/2) % 2 != 0 )
step = -1 * step;
x = x + step;
step = random( r );
if ((step/2) % 2 != 0 )
step = -1 * step;
y = y + step;
if (vp.left + x + width - 1 > vp.right)
x = vp.right-vp.left-width + 1;
else
if (x < 0)
x = 0;
if (vp.top + y + height - 1 > vp.bottom)
y = vp.bottom-vp.top-height + 1;
else
if (y < 0)
y = 0;
}
free( Saucer );
Pause();
}
另外,团IDC网上有许多产品团购,便宜有口碑

C语言绝对值有没有函数?怎么用的?

要先#include

求 int型 x的绝对值:

int abs(int x)

求 double型 x的绝对值:

double fabs(double x)

int abs(int)

要先#include

比如说

int x = -10;

int y = abs(x);

则y = 10

#include

#include

int main(void)

{

int number = -1234;

printf("number: %d absolute value: %d\n", number, abs(number));

return 0;

}

网站数据信息

"c语言小人跳舞代码,C语言,我的小人在动的时候会闪屏,我用的是cls实现的,求知道该怎么办?"浏览人数已经达到22次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:c语言小人跳舞代码,C语言,我的小人在动的时候会闪屏,我用的是cls实现的,求知道该怎么办?的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!