当前位置:首页 » 编程语言 » 基于c语言的打气球小游戏代码
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

基于c语言的打气球小游戏代码

发布时间: 2023-05-28 09:00:35

㈠ 请高手帮忙,要解题思路或者是代码,最好c语言

给个思路你吧,如果要代码我再给你凯让写
首先可以用一个char类型的二维数组保存名字,一个char类型的二维数组保存分数
当输入完成后判断
先判断分数的字符串长度最长的就是最高分,如果长度相同,就比较第一个字符,大的就高分,悄贺否则低分,如果相等,那么就继盯运局续比较第二个字符串,以此类推。如果两个字符串完全相等,那么就比较名字的字符串,比较字母的大小。
那样就能排个续出来了,然后打印

㈡ 给我提供个小游戏的C 语言代码

2L你给的什么呀,明明是加密算法调用我给你一个贪吃蛇的 C# #define N 200/*定义全局常量*/
#define m 25
#include <graphics.h>
#include <math.h>
#include <stdlib.h>
#include <dos.h>
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define Esc 0x011b
int i,j,key,k;
struct Food/*构造食物结构体*/
{
int x;
int y;
int yes;
}food;
struct Goods/*构造宝贝结构体*/
{
int x;
int y;
int yes;
}goods;
struct Block/*构造障碍物结构体*/
{
int x[m];
int y[m];
int yes;
}block;
struct Snake{/*构造蛇结构体*/
int x[N];
int y[N];
int node;
int direction;
int life;
}snake;
struct Game/*构建游戏级别参数体*/
{
int score;
int level;
int speed;
}game;
/*定义函数*/
void init(void);/*定义图形驱动*/
void close(void);/*定义关闭函数*/
void drawk(void);/*定义界面函数*/
void gameover(void);/*定义游戏结束函数*/
void gameplay(void);/*定义游戏主函数*/
void prscore(void);/*定义得分函数*/

void main(void){/*主函数体,调用以下四个函数*/
init();
setbkcolor(7);
drawk();
gameplay();
close();
}

void init(void){/*构建图形驱动函数*/
int gd=DETECT,gm;
initgraph(&gd,&gm,"");
cleardevice();
}

void drawk(void){/*构建游戏界面函数*/
/*setbkcolor(LIGHTGREEN);*/
char str3[50];
setfillstyle(SOLID_FILL,BLUE);/*条型边框,显示版本信息*/
bar3d(48,9,610,38,1,45);
setcolor(YELLOW);/*版本信息*/
sprintf(str3,"Version:5.01,Powerwing Studio");
outtextxy(330,20,str3);
setfillstyle(LTSLASH_FILL,YELLOW);/*设定墙边的填充形式*/
bar3d(48,48,58,462,0,0);/*设定墙边*/
bar3d(48,39,611,48,0,0);
bar3d(48,452,611,462,0,0);
bar3d(602,39,611,462,0,0);

}

void gameplay(void){/*构建游戏主函数*/
/*初始化游戏角色*/
randomize();/*随机数发生器*/
goods.yes=1;
block.yes=1;
food.yes=1;/*场景中需建立新的食物*/
snake.life=1;/*初始化蛇生命值*/
snake.direction=1;/*蛇起始的移动方向定义为向右*/
snake.x[0]=100;snake.y[0]=100;/*蛇头的位置坐标初始化*/
snake.x[1]=110;snake.y[1]=100;
snake.node=2;/*蛇初始化节数,共两节只有蛇头*/
/*初始化障碍物的数组*/
block.x[0]=170;block.y[0]=270;/*level 1*/
block.x[1]=410;block.y[1]=310;
block.x[2]=300;block.y[2]=200;
block.x[3]=320;block.y[3]=420;
block.x[4]=250;block.y[4]=350;
block.x[5]=220;block.y[5]=320;/*level 2*/
block.x[6]=310;block.y[6]=410;
block.x[7]=400;block.y[7]=500;
block.x[8]=230;block.y[8]=230;
block.x[9]=280;block.y[9]=280;
block.x[10]=170;block.y[10]=280;/*level 3*/
block.x[11]=420;block.y[11]=310;
block.x[12]=310;block.y[12]=200;
block.x[13]=320;block.y[13]=400;
block.x[14]=250;block.y[14]=260;/*level 4*/
block.x[15]=220;block.y[15]=330;
block.x[16]=130;block.y[16]=410;
block.x[17]=310;block.y[17]=510;
block.x[18]=230;block.y[18]=340;
block.x[19]=280;block.y[19]=380;
block.x[20]=270;block.y[20]=170;/*level 5*/
block.x[21]=410;block.y[21]=450;
block.x[22]=190;block.y[22]=200;
block.x[23]=150;block.y[23]=320;
block.x[24]=270;block.y[24]=350;
block.x[25]=340;block.y[25]=320;

game.score=0;
game.speed=50000;
game.level=1;
prscore();/*得分初始化*/
while(1){/*判断为真可以按Esc退出循环结束游戏*/
while(!kbhit()){/*无按键按下时,蛇自己移动身体*/

if(game.level==1){/*画出障碍物*/
for(j=0;j<5;j++){
setcolor(5);/**/
rectangle(block.x[j],block.y[j],block.x[j]+10,block.y[j]-10);
block.yes=0;
}
}
if(game.level==2){/*画出障碍物*/
for(j=0;j<9;j++){
setcolor(5);/**/
rectangle(block.x[j],block.y[j],block.x[j]+10,block.y[j]-10);
block.yes=0;
}
}
if(game.level==3){/*画出障碍物*/
for(j=0;j<14;j++){
setcolor(5);/**/
rectangle(block.x[j],block.y[j],block.x[j]+10,block.y[j]-10);
block.yes=0;
}
}
if(game.level==4){/*画出障碍物*/
for(j=0;j<19;j++){
setcolor(5);/**/
rectangle(block.x[j],block.y[j],block.x[j]+10,block.y[j]-10);
block.yes=0;
}
}
if(game.level==5){/*画出障碍物*/
for(j=0;j<25;j++){
setcolor(5);/**/
rectangle(block.x[j],block.y[j],block.x[j]+10,block.y[j]-10);
block.yes=0;
}
}
if(food.yes==1){/*需要画出新的食物*/
food.x=rand()%400+60;/*获得间隔60的随机数食物坐标值*/
food.y=rand()%350+60;
while(food.x%10!=0)/*判断坐标值是否满足被10整除,否,自动增加*/
food.x++;
while(food.y%10!=0)
food.y++;
food.yes=0;/*新的食物已经产生*/
}

if(goods.yes==1){/*需要画出新的宝物*/
goods.x=rand()%380+60;/*获得间隔60的随机数宝贝坐标值*/
goods.y=rand()%320+80;
while(goods.x%10!=0)/*判断坐标值是否满足被10整除,否,自动增加*/
goods.x++;
while(goods.y%10!=0)
goods.y++;
goods.yes=0;/*新的宝贝已经产生*/
}
if(goods.yes==0){/*新宝贝产生,应显示出来*/

setcolor(0);/*擦除*/
rectangle(goods.x,goods.y,goods.x+10,goods.y-10);
delay(50);/*延时*/
setcolor(YELLOW);
goods.x=goods.x+random(10)-random(20);/*随机数增量*/
goods.y=goods.y+random(10)-random(20);
while(goods.x%10!=0)/*判断变化后的坐标值是否满足被10整除,否,自动增加*/
goods.x++;
while(goods.y%10!=0)
goods.y++;
rectangle(goods.x,goods.y,goods.x+10,goods.y-10);/*重画出宝贝*/
if(goods.x<65||goods.x>585||goods.y<65|goods.y>445){/*判定宝贝是否越界*/
setcolor(0);/*擦除越界的宝贝*/
rectangle(goods.x,goods.y,goods.x+10,goods.y-10);
goods.yes=1;/*越界后重新生成宝贝*/
}

}

if(food.yes==0){/*新食物产生,应显示出来*/
setcolor(GREEN);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设定当前线型*/
rectangle(food.x,food.y,food.x+10,food.y-10);
}
for(i=snake.node-1;i>0;i--){/*取得需重画的蛇的节数*/
snake.x[i]=snake.x[i-1];/*最后一节的坐标值等于倒数第二节的坐标值*/
snake.y[i]=snake.y[i-1];
}
switch(snake.direction){/*判断蛇头的移动方向*/
case 1:snake.x[0]+=10;break;/*向右*/
case 2:snake.x[0]-=10;break;/*向左*/
case 3:snake.y[0]-=10;break;/*向上*/
case 4:snake.y[0]+=10;break;/*向下*/
}
for(i=3;i<snake.node;i++){/*超过4节后,判断蛇自身碰撞*/
if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0]){/*即自身的任一节坐标值与蛇头坐标相等*/
for(i=1;i<snake.node-1;i++){/*擦除自己碰撞后位置蛇的身子*/
setcolor(0);
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],
snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
}
snake.life-=1;/*生命值减少一*/
snake.node-=5;
prscore();/*输出结果*/
if(snake.life==0){/*判断生命值是否为0*/
gameover();/*游戏结束*/
break;/*退出内循环*/
}
}
}
if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455){/*判断蛇是否与墙体碰撞*/
for(i=1;i<snake.node-1;i++){/*擦除撞墙后位置蛇的身子*/
setcolor(0);
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],
snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
}
snake.x[0]=100;snake.y[0]=100;/*蛇头的位置坐标重新初始化*/
snake.x[1]=110;snake.y[1]=100;
snake.direction=1;/*蛇起始的移动方向定义为向右*/
snake.life-=1;/*生命值减少一*/
snake.node-=5;/*相应节数减少5节*/
prscore();
if(snake.life==0){
gameover();
break;
}
}
/*判断蛇与障碍物碰撞,食物是否与障碍物重叠*/
if(game.level==1){/*判断级别,并设定相应的障碍物数量,即数组个数*/
k=5;
}
else if(game.level==2){
k=9;
}
else if(game.level==3){
k=14;
}
else if(game.level==4){
k=19;
}
else if(game.level==5){
k=25;
}
for(j=0;j<k;j++){
if(snake.x[0]==block.x[j]&&snake.y[0]==block.y[j]){
for(i=1;i<snake.node-1;i++){/*擦除撞墙后位置蛇的身子*/
setcolor(0);
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],
snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
}
if(food.x==block.x[j]&&block.y[j]==food.y){/*防止障碍物与食物重叠*/
setcolor(0);/*设定食物的颜色为背景色,即擦除*/
rectangle(food.x,food.y,food.x+10,food.y-10);
food.yes=1;/*食物重新生成*/
}
snake.x[0]=100;snake.y[0]=100;/*蛇头的位置坐标重新初始化*/
snake.x[1]=110;snake.y[1]=100;
snake.direction=1;/*蛇起始的移动方向定义为向右*/
snake.life-=1;
snake.node-=5;
prscore();
if(snake.life==0){
gameover();
break;
}
}
}

if(snake.x[0]==food.x&&snake.y[0]==food.y){/*判断蛇是否吃到食物*/

setcolor(0);/*设定食物的颜色为背景色,即擦除*/
rectangle(food.x,food.y,food.x+10,food.y-10);
snake.x[snake.node]=-20;/*新的一节放在不可见的位置*/
snake.y[snake.node]=-20;
snake.node++;/*蛇身增加一节*/
if(snake.node>2){/*当节数每增加5节生命值增加一*/
snake.life=1+fabs((snake.node-2)/5);
}
food.yes=1;/*场景需要增加食物*/
game.score+=20;/*加分*/
prscore();/*输出得分*/
}
if(snake.x[0]==goods.x&&snake.y[0]==goods.y){/*判定蛇是否得到宝贝*/
setcolor(0);/*设定宝贝的颜色为背景色,即擦除*/
rectangle(goods.x,goods.y,goods.x+10,goods.y-10);
goods.yes=1;/*场景需要增加新的宝贝*/
game.score+=100;/*得到宝贝后加100分*/
prscore();/*输出得分*/
}

if(game.score<500){/*设定游戏速度和难度级别*/
game.speed=50000;
game.level=1;}
else if(game.score>=500&&game.score<1000){
game.level=2;
game.speed=40000;}
else if(game.score>=1000&&game.score<1500){
game.level=3;
game.speed=30000;}
else if(game.score>=1500&&game.score<2000){
game.level=4;
game.speed=20000; }
else if(game.score>=5000){
game.level=5;
game.speed=10000;}

setcolor(4);/*画出移动的蛇*/
setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设定当前线型*/
for(i=0;i<snake.node;i++)
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);
delay(game.speed);
setcolor(0);/*用背景色擦去最后一节*/
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],
snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);

} /*endwhile(! kbhit) */

if(snake.life==0)/*判断循环结束条件:蛇死或者检测到Esc按键*/
break;

key=bioskey(0);/*判断按键*/
if(key==Esc)
break;
/*判断蛇头接收到的用户按键响应的移动方向*/
else if(key==UP&&snake.direction!=4)
snake.direction=3;
else if(key==RIGHT&&snake.direction!=2)
snake.direction=1;
else if(key==LEFT&&snake.direction!=1)
snake.direction=2;
else if(key==DOWN&&snake.direction!=3)
snake.direction=4;

}/*endwhile(1)*/
}
void gameover(void){/*游戏结束处理*/
cleardevice();/*清屏*/
prscore();/*输出得分*/
setcolor(RED);/*打印出“Game Over”字样*/
settextstyle(0,0,4);
outtextxy(200,200,"Game Over!");
getch();
}

void prscore(void){/*定义分数输出函数*/
char str1[10];
char str2[10];
char str4[20];
setfillstyle(SOLID_FILL,BLUE);/*用于清除旧的显示信息*/
bar(49,10,320,37);
setcolor(WHITE);
settextstyle(0,0,1);
sprintf(str1,"score:%d",game.score);/*输出得分*/
outtextxy(55,20,str1);
sprintf(str2,"level:%d",game.level);/*输出级别*/
outtextxy(250,20,str2);
sprintf(str4,"life:%d",snake.life);/*输出级别*/
outtextxy(150,20,str4);
}

void close(void){/*定义关闭函数,退出图形模式*/
getch();
closegraph();
}

㈢ 用C语言编运动的气球

小球动态碰撞的c程序,岁高正使用彩色小球(运行环境win-tc/tc2.0)
# include <stdio.h>
# include<graphics.h>
int main()
{
int i, gdriver, gmode, size;
void *buf;
gdriver=DETECT; /*由于使乎悔用的是DETECT,故无需再设置gmode的数值*/
initgraph(&gdriver, &gmode, "");
setbkcolor(BLUE);
cleardevice();
setcolor(LIGHTRED);
setlinestyle(0,0,1);
setfillstyle(1, 10);
circle(100, 200, 30);
floodfill(100, 200, 12);
size=imagesize(69, 169, 131, 231);
buf=malloc(size);
getimage(69, 169, 131, 231,buf);
putimage(500, 269, buf, COPY_PUT);
do
{
for(i=0; i<185; i++)
{
putimage(70+i, 170, buf, COPY_PUT);
putimage(500-i, 170, buf, COPY_PUT);
}
for(i=0;i<念没185; i++)
{
putimage(255-i, 170, buf, COPY_PUT);
putimage(315+i, 170, buf, COPY_PUT);
}
}while(!kbhit());
getch();
closegraph();
}

㈣ 如何用C语言制作游戏

你可以先去【绘学霸】网站找“游戏设计/游戏制作”板块的【免费】视频教程-【点击进入】完整入门到精通视频教程列表: www.huixueba.net/web/AppWebClient/AllCourseAndResourcePage?type=1&tagid=307&zdhhr-11y04r-1818074554951406228

想要系统的学习可以考虑报一个网络直播课,推荐CGWANG的网络课。老师讲得细,上完还可以回看,还有同类型录播课可以免费学(赠送终身VIP)。

自制能力相对较弱的话,建议还是去好点的培训机构,实力和规模在国内排名前几的大机构,推荐行业龙头:王氏教育。
王氏教育全国直营校区面授课程试听【复制后面链接在浏览器也可打开】: www.huixueba.com.cn/school/3dmodel?type=2&zdhhr-11y04r-1818074554951406228

在“游戏设计/游戏制作”领域的培训机构里,【王氏教育】是国内的老大,且没有加盟分校,都是总部直营的连锁校区。跟很多其它同类型大机构不一样的是:王氏教育每个校区都是实体面授,老师是手把手教,而且有专门的班主任从早盯到晚,爆肝式的学习模式,提升会很快,特别适合基础差的学生。

大家可以先把【绘学霸】APP下载到自己手机,方便碎片时间学习——绘学霸APP下载: www.huixueba.com.cn/Scripts/download.html

㈤ 学C语言已经半年多了。却对俄罗斯方块,贪吃蛇之类的小游戏的编写一点头绪都没有! 问题块: 1)

单纯学C你是写不出图形程序的,你可以看到,C标准库支持的是dos程序,就是那个黑不溜秋的东西。

如果想知道你离小游戏还多远,咱们可以这么慧友算一下,下面给出几个假设条件:

  1. 提供给你图形绘制函数,你只需要传相应的参数,就能画出图形,点,线,圆,颜色填充之类。

  2. 给出线程函数,让你可以创建系统线程,或者使用定时器等控制贪吃蛇身体的移动。具体的方式可以变,你需要一个按照固定时间间隔来移动蛇身的函数。

那你觉着,你该怎样写一个贪吃蛇?

思路是:

  1. 使用链表等结构,存储蛇的身体,好处就是,可以任意长度。你要想好链表中存储什么属性可以更好地描述蛇的状态,它超哪个方向走,它的身体各个节点处于哪个位置。

  2. 划分屏幕坐标系,将贪吃蛇映射为坐标系中的点。

  3. 写出碰撞检测函数,贪吃蛇碰到了一个食物,就在链表头部添加一个节点并野碧正将头结点更新为这个结点。

  4. 使用碰撞检测函数检测贪吃蛇是否撞到了自己。

  5. 检测蛇是否撞到了屏幕边界。

  6. 使用线程或定时器沿着一个方向移动你的贪吃蛇,移动规律是朝着当前链表头部冲的方向匀速移动,你可以设定0.5s对表头的x/y坐标进行加,减。时间间隔影响了蛇的速度,如果允许长度超过一颂悔个程度升级加速,你就要设置下这里的参数。

  7. 根据表头的移动,设计算法计算蛇的身体各个点的移动轨迹。这个是关键,这个算法想错了,你的蛇就会乱跑。一个比较直接的做法是,将蛇身体的每个节点依次前移,不是坐标的移动,是填充,让后面节点填充它前面节点移动前的位置。

大致是这样,我只是给出个思路,如果我有写错的地方,欢迎指正,又或者是你可以按照你的思路来进行,学习,思路是很重要的,代码是死的,人是活的。


分析问题,你要将实际的问题抽象出编程用的模型。抽象的过程就是,先假设你已经有了你想要的函数,你可以先给出函数的声明,比如碰撞检测函数,线程函数等等。这些函数你不会写,先空着,想象它们已经完成了。

然后你要做的就是,用这些已经被假设存在的构造快,来实现你的逻辑。这个逻辑是什么,就要看你怎么抽象一个具体的问题。就像贪吃蛇,通用的思路是把它抽象为坐标和链表结构。如果你用了另外一种思路,整个过程可能截然不同。

整个过程写完了,你需要知道,那些被你假设了的函数,到底怎么实现。

给个思路:

界面显示用MFC来做,线程,定时器什么的,有相应的windowsAPI,这些图形和线程功能,都需要操作系统做支持,所以你要用到一些windows的API。这些资料都是有的,你可以去找。


以上。再次声明,如有疏漏,请见谅。

㈥ 基于SAT的数独游戏求解程序,求C语言代码

用0代表要填的数

#include <stdio.h>

#include <stdlib.h>

#define SIZE 9

#define get_low_bit(x) ((~x&(x-1))+1)

struct{

int left;

char num;

char try;

}board[SIZE][SIZE];

int bit2num(int bit)

{

switch(bit){

case 16:

case 256:

return 9;

基础解法

排除法(摒除法)

摒除法:用数字去找单元内唯一可填空格,称为摒除法,数字可填唯一空格称为排除法 (Hidden Single)。

根据不同的作用范围,摒余解可分为下述三种:

数字可填唯一空格在“宫”单元称为宫排除(Hidden Single in Box),也称宫摒除法。

数字可填唯一空格在“行”单元称为行排除法(Hidden Single in Row),也称行摒除法。

㈦ 急求《单片机C语言程序设计实训100例——基于8051+Proteus仿真》第三部分综合设计C语言源代码

这本书一共5章节,你说第三部分指的哪里?
第五章才是综合设计部分啊,而且这部分有好多例程,也不知道你要哪部分?
第1章 8051单片机C语言程序设计概述 1
1.1 8051单片机引脚 1
1.2 数据与程序内存 5
1.3 特殊功能寄存器 6
1.4 外部中断、定时器/计数器及串口应用 8
1.5 有符号与无符号数应用、数位分解、位操作 9
1.6 变量、存储类型与存储模式 11
1.7 关于C语言运算符的优先级 13
1.8 字符编码 15
1.9 数组、字符串与指针 16
1.10 流程控制 18
1.11 可重入函数和中断函数 19
1.12 C语言在单片机系统开发中的优势 20
第2章 Proteus操作基础 21
2.1 Proteus操作界面简介 21
2.2 仿真电路原理图设计 22
2.3 元件选择 25
2.4 调试仿真 29
2.5 Proteus与Vision 3的联合调试 29
2.6 Proteus在8051单片机应用系统开发的优势 30
第3章 基础程序设计 32
3.1 闪烁的LED 32
3.2 双向来回的流水灯 34
3.3 花样流水灯 36
3.4 LED模拟交通灯 38
3.5 分立式数码管循环显示0~9 40
3.6 集成式数码管动态扫描显示 41
3.7 按键调节数码管闪烁增减显示 44
3.8 数码管显示4×4键盘矩阵按键 46
3.9 普通开关与拨码开关应用 49
3.10 继电器及双向可控硅控制照明设备 51
3.11 INT0中断计数 53
3.12 INT0及INT1中断计数 55
3.13 TIMER0控制单只LED闪烁 58
3.14 TIMER0控制数码管动态管显示 62
3.15 TIMER0控制8×8LED点阵屏显示数字 65
3.16 TIMER0控制门铃声音输出 68
3.17 定时器控制交通指示灯 70
3.18 TIMER1控制音阶演奏 72
3.19 TIMER0、TIMER1及TIMER2实现外部信号计数与显示 75
3.20 TIMER0、TIMER1及INT0控制报警器与旋转灯 77
3.21 按键控制定时器选播多段音乐 79
3.22 键控看门狗 82
3.23 双机串口双向通信 84
3.24 PC与单片机双向通信 90
3.25 单片机内置EEPROM读/写测试 95
第4章 硬件应用 99
4.1 74HC138译码器与反向缓冲器控制数码管显示 100
4.2 串入并出芯片74HC595控制数码管显示四位数字 103
4.3 用74HC164驱动多只数码管显示 106
4.4 并串转换器74HC165应用 110
4.5 用74HC148扩展中断 112
4.6 串口发送数据到2片8×8点阵屏滚动显示 115
4.7 数码管BCD解码驱动器CD4511与DM7447应用 117
4.8 62256RAM扩展内存 119
4.9 用8255实现接口扩展 121
4.10 可编程接口芯片8155应用 124
4.11 串行共阴显示驱动器控制4+2+2集成式数码管显示 129
4.12 14段与16段数码管演示 133
4.13 16键解码芯片74C922应用 136
4.14 1602字符液晶工作于8位模式直接驱动显示 139
4.15 1602液晶显示DS1302实时时钟 148
4.16 1602液晶屏工作于8位模式由74LS373控制显示 153
4.17 1602液晶屏工作于4位模式实时显示当前时间 155
4.18 1602液晶屏显示DS12887实时时钟 159
4.19 时钟日历芯片PCF8583应用 167
4.20 2×20串行字符液晶屏显示 174
4.21 LGM12864液晶屏显示程序 177
4.22 TG126410液晶屏串行模式显示 184
4.23 Nokia7110液晶屏菜单控制程序 192
4.24 T6963C液晶屏图文演示 199
4.25 ADC0832 A/D转换与LCD显示 211
4.26 用DAC0832生成锯齿波 215
4.27 ADC0808 PWM实验 217
4.28 ADC0809 A/D转换与显示 220
4.29 用DAC0808实现数字调压 221
4.30 16位A/D转换芯片LTC1864应用 223
4.31 I2C接口存储器AT24C04读/写与显示 225
4.32 I2C存储器设计的中文硬件字库应用 233
4.33 I2C接口4通道A/D与单通道D/A转换器PCF8591应用 237
4.34 I2C接口DS1621温度传感器测试 241
4.35 用兼容I2C接口的MAX6953驱动4片5×7点阵显示器 246
4.36 用I2C接口控制MAX6955驱动16段数码管显示 250
4.37 I2C接口数字电位器AD5242应用 254
4.38 SPI接口存储器AT25F1024读/写与显示 257
4.39 SPI接口温度传感器TC72应用测试 264
4.40 温度传感器LM35全量程应用测试 268
4.41 SHT75温湿度传感器测试 272
4.42 直流电机正、反转及PWM调速控制 278
4.43 正反转可控的步进电机 281
4.44 ULN2803驱动点阵屏仿电梯数字滚动显示 284
4.45 液晶显示MPX4250压力值 286
4.46 12864LCD显示24C08保存的开机画面 289
4.47 用M145026与M145027设计的无线收发系统 293
4.48 DS18B20温度传感器测试 296
4.49 1-Wire式可寻址开关DS2405应用测试 303
4.50 MMC存储卡测试 307
第5章 综合设计 316
5.1 带日历时钟及温度显示的电子万年历 316
5.2 用8051+1601LCD设计的整型计算器 321
5.3 电子秤仿真设计 328
5.4 1602液晶屏显示仿手机键盘按键字符 332
5.5 用24C04与1602液晶屏设计的简易加密电子锁 336
5.6 1-Wire总线器件ROM搜索与多点温度监测 341
5.7 高仿真数码管电子钟设计 356
5.8 用DS1302与12864LCD设计的可调式中文电子日历 360
5.9 用T6963C液晶屏设计的指针式电子钟 366
5.10 T6963C液晶屏中文显示温度与时间 370
5.11 T6963C液晶屏曲线显示ADC0832两路A/D转换结果 372
5.12 温度控制直流电机转速 374
5.13 用74LS595与74LS154设计的16×16点阵屏 377
5.14 用8255与74LS154设计的16×16点阵屏 379
5.15 红外遥控收发仿真 381
5.16 GP2D12红外测距传感器应用 388
5.17 三端可调正稳压器LM317应用测试 395
5.18 数码管显示的K型热电偶温度计 399
5.19 交流电压检测与数字显示仿真 403
5.20 用MCP3421与RTD-PT100设计的铂电阻温度计 407
5.21 可接收串口信息的带中英文硬字库的80×16 LED点阵屏 414
5.22 模拟射击训练游戏 422
5.23 GPS仿真 427
5.24 温室监控系统仿真 431
5.25 基于Modbus总线的数据采集与开关控制系统设计仿真 437

建议你到脚本之家网站去搜索一下看看有没有这本书的电子档。

㈧ 用C语言编上升的气球

你说的是冒泡排序吧

/*十名学生参加考试,输入十名学生的考试成绩,
然后按照从高到低,输出成绩采用冒泡法方法做*/
#include <stdio.h>
#define LEN 10
void main()
{
int a[LEN];//蔽颤定义数组a
int i,j,t;//循环变量和中间变量
printf("请输斗并蠢入十名学生的成绩:\n");
for(i=0;i<LEN;i++)
{
scanf("%d",&a[i]);
}
printf("排序前的学生成绩为:\n"空陪);
for(i=0;i<LEN;i++)
{
printf("排序前的学生成绩为:%d\n",a[i]);//输出排序前的顺序
}
for(i=0;i<LEN-1;i++)
{
for(j=LEN-1;j>i;j--)
{
if(a[j]>a[j-1])//按从大到小排列来交换变量的值
{
t=a[j];
a[j]=a[j-1];
a[j-1]=t;
}

}
}
printf("排序后的学生成绩为:\n");
for(i=0;i<LEN;i++)
{
printf("第%d名学生成绩为:%d\n",i+1,a[i]);//输出排序后的顺序
}

}

㈨ C语言代码

看你的代码,应该是想通过使用12个for循环嵌套来实现,但是这种方式效率是比较低的,13的12次方有23298085122481种方案,短时间内是看不到电脑的运行结果的。

所以我采用了另一种方法,最终算得的结果是64种方案。

#include<stdio.h>
#include"LinkedList.h"

intis_unique(int*array,intvalue,intlen)
{
inti=0,j=0;
for(i=0;i<len-1;i++)
{
for(j=i+1;j<len;j++)
{
if(array[i]==array[j])
return0;
}
}
return1;
}


intmain()
{
inti=0,j=0,m=0,n=0,k=0;
int誉局count[4]={0};
inttmp=0;
DataTypevalue;
inta[12]={0};//用于存放临时组合的数据
intmax_num=0;//加减乘除四种运算中,符合条件的方案数量最少的个数
LinkedList_stru*list_array[4];
LinkedList_stru*list_tmp;
LinkNode_stru*p1,*p2,*p3,*p4;
intflag=0;
inttotal=0;

/*定义链表指针,用于存放创建的链表首地址*/
LinkedList_stru*list_addition=NULL,*list_subtraction=NULL;
LinkedList_stru*list_multiplication=NULL,*list_division=NULL;


printf(" 开始玩命分析......... ");

/*分析:总共有+,-,*,÷四种运算,而且运算结果需要在1~13之间。
*所以,我们可以先把这些所有符合条件的结果求出来.
**/

/*创建链表*/
list_addition=LinkedList_Create();//+
list_subtraction=LinkedList_Create();//-
list_multiplication=LinkedList_Create();//×
list_division=LinkedList_Create();//÷


/*1.求出+运算所有符合要求的方案*/
count[0]=0;
for(i=1;i<=13;i++)
{
for(j=1;j<=13;j++)
{
tmp=i+j;
if(tmp<=13)
{
if(i==j||j==tmp||i==tmp)
{
continue;
}
else
{
value.a1=i;
value.a2=j;
value.a3=tmp;
LinkedList_Add_Tail(list_addition,value);
count[0]++;
//printf("%2d+%2d=%2d ",i,j,(i+j));
}
}
}
}
//printf("计算完毕,+运算符合条件的结果总共有%d种! ",count[0]);

/*2.求出-运算所有符合要求的方案*/
count[1]=0;
for(i=1;i<=13;i++)
{
for(j=1;j<=13;j++)
{
tmp=i-j;
if(tmp>0&&tmp<=13)
{
if(i==j||j==tmp||i==tmp)
{
continue;
}
value.a1=i;
value.a2=j;
value.a3=tmp;
LinkedList_Add_Tail(list_subtraction,value);
count[1]++;
孙雹//printf("%2d-%2d=%2d ",i,j,(i-j));
}
}
}
//printf("计算完毕,-运算符合条件的结果总共有%d种! ",count[1]);

/*3.求出×运算所有符合要求的方案*/
count[2]=0;
for(i=1;i<=13;i++)
{
for(j=1;j<=13;j++)
{
tmp=i*j;
if(tmp>0&&tmp<=13)
{
if(i==j||j==tmp||i==tmp)
{
continue;
}
value.a1=i;
庆凯让value.a2=j;
value.a3=tmp;
LinkedList_Add_Tail(list_multiplication,value);
count[2]++;
//printf("%2d×%2d=%2d ",i,j,(i*j));
}
}
}
//printf("计算完毕,+运算符合条件的结果总共有%d种! ",count[2]);

/*4.求出÷运算所有符合要求的方案*/
count[3]=0;
for(i=1;i<=13;i++)
{
for(j=1;j<=13;j++)
{
tmp=i%j;
if(tmp==0)
{
if(i==j||j==(i/j)||i==(i/j))
{
continue;
}
value.a1=i;
value.a2=j;
value.a3=(i/j);
LinkedList_Add_Tail(list_division,value);
count[3]++;
//printf("%2d÷%2d=%2d ",i,j,(i/j));
}
}
}
//printf("计算完毕,÷运算符合条件的结果总共有%d种! ",count[3]);

printf("list_addition:clen=%d! ",list_addition->clen);
printf("list_subtraction:clen=%d! ",list_subtraction->clen);
printf("list_multiplication:clen=%d! ",list_multiplication->clen);
printf("list_division:clen=%d! ",list_division->clen);

list_array[0]=list_addition;
list_array[1]=list_subtraction;
list_array[2]=list_multiplication;
list_array[3]=list_division;
max_num=list_array[0]->clen;
for(i=0;i<4;i++)
{
if(max_num>=list_array[i]->clen)
{
max_num=list_array[i]->clen;
//list_tmp=num[i];
}
}
//printf("最多只能有%d种方案! ",max_num);

/*从上面的计算结果我们可以知道,最多只能有10种方案,因为乘法和除法这两种运算均只有10种方案符合条件
*所以,这里我们就基于除法去做匹配.按理说不应该这么做的,应该在代码中进行判断,但是为了节省时间,只能这样了。
**/
/*遍历链表*/
p4=list_division->pHead->pNext;
for(i=0;i<list_division->clen;i++)
{
p3=list_multiplication->pHead->pNext;
for(j=0;j<list_multiplication->clen;j++)
{
p2=list_subtraction->pHead->pNext;
for(m=0;m<list_subtraction->clen;m++)
{
p1=list_addition->pHead->pNext;
for(n=0;n<list_addition->clen;n++)
{
flag=111;
a[0]=p1->data.a1;a[1]=p1->data.a2;a[2]=p1->data.a3;
a[3]=p2->data.a1;a[4]=p2->data.a2;a[5]=p2->data.a3;
a[6]=p3->data.a1;a[7]=p3->data.a2;a[8]=p3->data.a3;
a[9]=p4->data.a1;a[10]=p4->data.a2;a[11]=p4->data.a3;

for(k=0;k<sizeof(a)/sizeof(a[0]);k++)
{
if(!is_unique(a,a[k],sizeof(a)/sizeof(a[0])))
{
flag=0;
break;
}
}
if(flag==111)
{
//printf(" ");
total++;
printf("方案%d: ",total);
printf("%2d+%2d=%2d ",a[0],a[1],a[2]);
printf("%2d-%2d=%2d ",a[3],a[4],a[5]);
printf("%2d×%2d=%2d ",a[6],a[7],a[8]);
printf("%2d÷%2d=%2d ",a[9],a[10],a[11]);
printf(" ");
}
p1=p1->pNext;
}
p2=p2->pNext;
}
p3=p3->pNext;
}
p4=p4->pNext;
}

printf("计算完毕,总共有%d种方案! ",total);

return0;
}

㈩ c语言,一个球从某高度h落下,每次落地后反弹回原来高度的一半,再落下。编程计算球在10次落地

根据你的题目和输出样式截图分析:

1、每次输出当前坠落的高度,及本次坠落后经过的距离总和

2、输出包含小数,因此高度及距离变量采用浮点数

3、递归/循环只执行10次

3、看你图上,输出浮点数小数不显示多余的0,因此打印格式要用%g而不是%f(最多保留6位)。

#include <stdio.h>

void drop(float height);

int main()

{

float height;

printf("初始高度:");

scanf("%f",&height);

drop(height);

return 0;

}

void drop(float height)

{

static int cnt=1;

static float distance=0;//每次坠落后球移动的距离总和

if(height>0){

distance+=height;

printf("第%d次高度%g ",cnt,height);

printf("第%d次距离%g ",cnt,distance);

if(cnt<10)

cnt++,distance+=height/2,drop(height/2);

else

cnt=1,distance=0;

}

}