导航:首页 > 编程语言 > c语言编写的有趣程序

c语言编写的有趣程序

发布时间:2024-06-11 16:46:37

Ⅰ 很简的51单片机C语言流水灯程序

#include<reg52.h>
#include <intrins.h>
#define LED P2

void delay(char i);

void main()
{ unsigned char LedVablue=0xFE;

while(1)
{

LedVablue= _crol_(LedVablue,1); //_crol_(x,Y)是<intrins.h>
//里面的一个库函数,相当于汇编版的带进位循环权
LED=LedVablue;
delay(100);

}
}

void delay(char i)
{
char j;
for(;i>0;i--)
for(j=0;j<250;j++);
}

Ⅱ C语言的经典编程例子

//最经典的当然是HelloWorld了。
#include"stdio.h"
intmain(void)
{
printf("HelloWorld! ");
}

Ⅲ 用C语言编写一个简单的打字母游戏,给出基本思路及完整程序。

# include<stdio.h>
# include <conio.h>
# include <graphics.h>
# include <time.h>
# pragma comment(lib,”Winmm.lib”) //引用Windows Multimedia APT

int score =0; //全局变量********整型的分数
char s[5]; //全局变量****字符型的分数
struct player_ //自定义的结构体,并顺便定义一个结构体变量
{
char name[20];
int score_;
}player[11];
/***************函数声明*****************/
void record_(); //记录彼此成绩函数
void welcome( ); //欢迎界面函数
void instructions( ); //游戏说明界面函数
void gane (int rank2); //游戏函数
void record ( ); //显示记录函数
int rank_(char rank1); //等级选择函数
void goodbye ( ); //退出界面函数

/**************主函数**************/
int main ()
{
char rank1; //rank1接受从键盘输入的字符,根据字符判断等级
int rank2=15; // 控制延时时间,从而控制速度
intsign=1; // 当做标记,用于标记是否弹出MessageBox对话框

welcome ( ); //调用欢迎界面函数
instructions ( ); //调用游戏什么函数
record( ); //调用显示记录函数
InputBox(player[10].name,20,"请输入玩家昵称"; //以对话框形式获取用户输入函数
rank1=getch();//读入一个字母
rank2=rank_(rank1); //调用等级函数
game (rank2); //调用游戏函数
HWND wnd =GetHWnd();
while (sign) //sign作为标记,执行循环
if (MessageBox(wnd,"游戏结束!!!\n再来一局,挑战更高分数","询问",MB_YESNO|MB_ICONQUESTION)==IDYES)
game (rank2);
else
{
sign=0;
goodbye( );
}
closegraph( );
return 0;
}
/***************记录本次成绩函数***************/
void record_()
{
FILE*fp; //文件指针
int i,j;
struct player_t; //定义结构体变量t,冒泡法比较大小时用
player[10].score_=score; //把该局的分数赋给该局用户的结构体变量中
fp=fopen("记录.dat","rb"); //打开二进制文件
for (i=0;i<10;i++)
{
fread(player[i].name,20,l,fp); //读入记录中的成绩和名字
fread (&player[i].score_,4,l,fp);
}
fclose(fp); //关闭二进制文件
for (j=0;j<10;j++) //冒泡法排序
for (i=0;i<10-j;i++)
if (player[i].score_)
{
t=player[i];
player[i]=player[i+1];
player[i+1]=t;
}
fp=fopen("记录.dat","wb"); //打开文件
for (i=0;i<10;i++) //把排好序列的数据存入记录文件
{
fwrite(player[i].name,20,l,fp);
fwrite (&player[i].score_,4,l,fp);
}
fclose(fp); //关闭文件
}
/****************欢迎界面函数****************/
void welcome ( )
{
char ch;
mciSendString("open\"res\\Sleep Away.mp3\"alias mymusic",NULL,0,NULL);

initgraph(640,480); //初始化画图界面
IMAGE img; //定义IMAGE对象
loadimage (&img,"res\\00.jpg"); //读取图片到img对象中
putimage (0,0,&img); //在坐标(0,0)位置显示IMAGE对象
ch=getch(); //吸收掉一个按键
cleardevice(); //清屏
}

/***************游戏说明界面函数**************/
void instructions()
{
int c=255; //控制变色的变量
setcolor(YELLOW); //设置颜色
setfont (30,0,"黑体"); //设置字体
outtextxy(0,0,"游戏说明"); //输出文字
setcolor(WHITE);
setfont(28,0,"宋体");
outtextxy(0,30,"一、每次游戏下落200个字母"); //输出文字
outtextxy(0,58,"二、请按数字键选择游戏等级");
outtextxy(0,86,"三、统计被击中的个数");
setfont(30,0,"华文行楷")
outtextxy (20,220,"等级一二三四 五六七八九");
outtextxy(20,260,“按键 1 2 3 4 5 6 7 8 9”);
while (!kbhit()) //kihit()作用是判断是否有字幕输入
{
setcolor(RGB(c,255,0));
setfont (80,0,"楷体");
outtextxy(140,130,"请选择等级");
setcolor(RGB(c,0,255));
setfont(100,0,"Wickenden Cafe NDP");
outtextxy(100,135,"Let's go!!!");
c-=25; //控制颜色的变量自减
if(c<0)c=255; //控制颜色的变量小于0时,再把255赋给c
cleardevice(); //清屏
}
/***************退出界面函数***************/
void goodbye()
{
int c=255; //控制变色变量
cleardevice(); //清屏
setcolor(YELLOW);
setfont (48,0,"黑体");
outtextxy (104,120,"的最终成绩是: ");
setfont (48,0,"华文楷体");
setcolor(RGB(255,255,0));
outtextxy(140,320,"按任意键退出游戏");
setcolor(YELLOW);
setfont(48,0,"黑体");
outtextxy (104,120,"的最终成绩是: ");
outtextxy(104,70,player[10].name);
record_(); //调用记录本次成绩函数
while(!kbhit())
{
setcolor(RGB(255,0,c-100)); //设置颜色
setfont(100,0,”Wickenden Café NDP”);
outtextxy(400,90,s); //输出数字
setcolor(RGB(c,0,255));
setfont(48,0,”黑体”);
if (score==200)
outtextxy(100,200,”全部击中!!!”);
else
if(score>190)
outtextxy(100,200,”不错!继续加油!”);
else
outtextxy(100,200,”不要灰心!继续加油!”);
c-=25;
if(c<0)
c=255;
Sleeep(20); //延时20秒
}
getch( ); //提供给用户时需要等待输入后再退出
}
/**************等级选择函数**************/
int rank_(char rank1)
{
int rank2;
switch(rank1) //判断字符,确定等级
{
case’0’:rank2=11;break;
case’1’:rank2=10;break;
case’2’:rank2=9;break;
case’3’:rank2=8;break;
case’4’:rank2=7;break;
case’5’:rank2=6;break;
case’6’:rank2=5;break;
case’7’:rank2=4;break;
case’8’:rank2=3;break;
case’9’:rank2=2;break;
default:rank2=15;break;
}
return rank2;
}

/**************显示记录函数***********/
void record( )
{
FILE *p; //文件指针
int a[10],j;
char b[10][10];
fp=fopen(“记录。dat”,”rb”); //打开文件
for (j=0;j<10;j++)
{
fread(player[j].name,20,1,fp); //读取文件中的信息
fread(&player[j].score_,4,1,fp);
}
fclose(fp); //关闭文件
setfont(60,0,”Arial”);
setcolor(RGB(250,250,0));
outtextxy(250,0,”TOP10”);
for(j=0;j<10;j++)
{
sprintf(“b[j],%d”,player[j].score_); //把整型转换为字符型
setcolor(RGB(0,100,255));
setfont(40,0,”Arial”);
outtextxy(420,50+40*j,b[j]);
outtextxy(120,50+40*j,player[j].name); //输出名字

/**********游戏函数******************/
void game (int rank2)
{
cleardevice( ); //清屏
score=0; //清除掉原有的分数
outtextxy(0,0,”玩家:”);
outtextxy(90,0,player[10].name);
setfont(20,0,”Arial”);
outtextxy(100,460,” 人生有享受片刻优雅恬适的权力,让打字母游戏放松你一下吧!”);
int i;
char target; //目标字母
char key; //用户的按键
intx,y; //字母的位置
int flag =1; //标记是否按了退出键
int sum=0; //成绩计数
int num =200; //规定下落字母的个数
srand (time(NULL)); //随机时间种子,设置第一个随机函数的值
setfillstyle(BLACK); //设置下面矩形内图的颜色
setcolor(YELLOW); //
line(0,450,640,450); //用3条线规定一下工作区
line(0,440,640,440); //用3条线规定一下工作区
line(0,40,640,40); //用3条线规定一下工作区

while (flag&&num)
{
setfont(40,0,”宋体”); //设置字母的字体和大小
i=rand()%2; //rand()函数返回0~32767之间的一个整数
if(i)
target=97+rand()%26; //产生任意小写字母
else
target=65+rand()%26; //产生任意大写字母
x=rand()%610; //产生任意下落位置
for (y=41;y<380;y++)
{
setcolor (RGB(255,0,255));
outtextxy(x,y,target); //显示字母

if(kbhit())
{
key=getch(); //获取用户按键
if ((key==target)||( key==target-32)||( key==target+32))
{
score++; //分数统计
sprintf(s,”%d”score);
setfont(30,0,”Arial”);
outtextxy(500,0,“分数”);
outtextxy(600,0,s); //输出分数
bar(x-10,y-10,x+35,y+50); // 击中用黑框形擦去字母
break; //跳出循环,进行下一个字母
}
else if (key==27) //判断是否按了
{
flag=0; //若果按ESC,退出游戏主循环
break;
}
}
Sleep(rank2); //控制清除字母的时间爱你也就是控制下落速度
bar(x,y,x+35,y+60); //擦最下面的字符
}
num--; //计数
}
}

Ⅳ 求一些恶搞程序的C语言源代码

#include "stdio.h"
#include "stdlib.h"
result love(boy, girl)
{
if ( boy.有房() and boy.有车() )
{
boy.set(nothing);
return girl.嫁给(boy);
}
if ( girl.愿意等() )
{
while( ! (boy.赚钱 > 100,000 and girl.感情回 > 8 ) )
{
for ( day=1; day <=365; day++)
{
if ( day == 情人节 )
if ( boy.givegirl(玫瑰答) )
girl.感情++;
else
girl.感情--;
if( day == girl.生日)
if ( boy.givegirl(玫瑰) )
girl.感情++;
else
girl.感情--;
boy.拼命赚钱();
}
}
if ( boy.有房() and boy.有车() )
{
boy.set(nothing);
return girl.嫁给(boy);
}
年龄++;
girl.感情--;
}
return girl.goto( another_boy);
}

Ⅳ c语言能写出什么样有意思的小程序

  1. C语言是一门通用计算机编程语言,应用广泛。

  2. C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

  3. C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

  4. 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。

程序源代码:

main()

{int i,j,k;printf( );for(i=1;i<5;i++)/*以下为三重循环*/for(j=1;j<5;j++)

for (k=1;k<5;k++),{f (i!=ki!=jj!=k) /*确保i、j、k三位互不相同*/printf(%d,%d,%d ,i,j,k); }}

题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。

程序源代码:

main()

{

long int i;

int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;

scanf(%ld,i);

bonus1=100000*0.1;bonus2=bonus1+100000*0.75;

bonus4=bonus2+200000*0.5;

bonus6=bonus4+200000*0.3;

bonus10=bonus6+400000*0.15;

if(i<=100000)

bonus=i*0.1;

else if(i<=200000)

bonus=bonus1+(i-100000)*0.075;

else if(i<=400000)

bonus=bonus2+(i-200000)*0.05;

else if(i<=600000)

bonus=bonus4+(i-400000)*0.03;

else if(i<=1000000)

bonus=bonus6+(i-600000)*0.015;

else

bonus=bonus10+(i-1000000)*0.01;

printf(bonus=%d,bonus);

}

6.题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后 的结果满足如下条件,即是结果。

程序源代码:

#include math.h

main()

{

long int i,x,y,z;

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

{ x=sqrt(i+100); /*x为加上100后开方后的结果*/

y=sqrt(i+268); /*y为再加上168后开方后的结果*/

if(x*x==i+100y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/

printf( %ld ,i);

}

}

7.题目:输入某年某月某日,判断这一天是这一年的第几天?

程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

程序源代码:

main()

{

int day,month,year,sum,leap;

printf( please input year,month,day );

scanf(%d,%d,%d,year,month,day);

switch(month)/*先计算某月以前月份的总天数*/

{

case 1:sum=0;break;

case 2:sum=31;break;

case 3:sum=59;break;

case 4:sum=90;break;

case 5:sum=120;break;

case 6:sum=151;break;

case 7:sum=181;break;

case 8:sum=212;break;

case 9:sum=243;break;

case 10:sum=273;break;

case 11:sum=304;break;

case 12:sum=334;break;

defaultrintf(data error);break;

}

sum=sum+day; /*再加上某天的天数*/

if(year%400==0||(year%4==0year%100!=0))/*判断是不是闰年*/

leap=1;

else

leap=0;

if(leap==1month>2)/*如果是闰年且月份大于2,总天数应该加一天*/

sum++;

printf(It is the %dth day.,sum); }

8.题目:输入三个整数x,y,z,请把这三个数由小到大输出。

程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。

程序源代码:

main()

{

int x,y,z,t;

scanf(%d%d%d,x,y,z);

if (x>y)

/*交换x,y的值*/

if(x>z)

/*交换x,z的值*/

if(y>z)

/*交换z,y的值*/

printf(small to big: %d %d %d ,x,y,z);

}

9.题目:用*号输出字母C的图案。

程序分析:可先用<|>*<|>号在纸上写出字母C,再分行输出。

程序源代码:

#include stdio.h

main()

{

printf(Hello C-world! );

printf( **** );

printf( * );

printf( * );

printf( **** );

}

10.题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!

程序分析:字符共有256个。不同字符,图形不一样。

程序源代码:

#include stdio.h

main()

{

char a=176,b=219;

printf(%c%c%c%c%c ,b,a,a,a,b);

printf(%c%c%c%c%c ,a,b,a,b,a);

printf(%c%c%c%c%c ,a,a,b,a,a);

printf(%c%c%c%c%c ,a,b,a,b,a);

printf(%c%c%c%c%c ,b,a,a,a,b); }

11.题目:输出9*9口诀。

程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

程序源代码:

#include stdio.h

main()

{

int i,j,result;

printf( );

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

{ for(j=1;j<10;j++)

{

result=i*j;

printf(%d*%d=%-3d,i,j,result);/*-3d表示左对齐,占3位*/

}

printf( );/*每一行后换行*/

}

}

12.题目:要求输出国际象棋棋盘。

程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。

程序源代码:

#include stdio.h

main()

{

int i,j;

for(i=0;i<8;i++)

{

for(j=0;j<8;j++)

if((i+j)%2==0)

printf(%c%c,219,219);

else

printf( );

printf( );

}

}

13.题目:打印楼梯,同时在楼梯上方打印两个笑脸。

程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。

程序源代码:

#include stdio.h

main()

{

int i,j;

printf( );/*输出两个笑脸*/

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

{

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

printf(%c%c,219,219);

printf( );

}

Ⅵ 仅用c语言能编出哪些小游戏

可以编写狼追兔子游戏,掷骰子游戏,24点游戏,井字棋游戏,农夫过河游戏,扫雷小游戏,人机猜数游戏,三色球游戏, 推箱子游戏,坦克大战游戏,贪吃蛇游戏等。

阅读全文

与c语言编写的有趣程序相关的资料

热点内容
win7共享win10打印机如何打印文件 浏览:388
海马定位安卓版 浏览:227
mysql同步数据库结构 浏览:107
打开方式怎么添加压缩文件 浏览:679
怎么插入单页网站 浏览:430
压缩文件过大发不过去怎么办 浏览:17
苹果手机无线传输文件 浏览:647
怎么把aep文件转换为gif 浏览:727
人寿保险app如何更改银行卡账号 浏览:713
食品生产风险大数据 浏览:718
文件ftp格式怎么转换成cad 浏览:117
小米平板2win10dnx 浏览:486
删除psd文件空白 浏览:19
手机默认应用程序修改器 浏览:299
苹果5s设置来电铃声 浏览:799
dnf90版本平民搬砖装备 浏览:422
group是什么文件 浏览:890
微信几天前删的文件怎么恢复 浏览:71
迅雷不下载上传数据文件 浏览:566
怎么把文件夹的图片拖到ps中 浏览:400

友情链接