c语言小游戏Word文件下载.docx

上传人:b****6 文档编号:20681437 上传时间:2023-01-25 格式:DOCX 页数:48 大小:159.46KB
下载 相关 举报
c语言小游戏Word文件下载.docx_第1页
第1页 / 共48页
c语言小游戏Word文件下载.docx_第2页
第2页 / 共48页
c语言小游戏Word文件下载.docx_第3页
第3页 / 共48页
c语言小游戏Word文件下载.docx_第4页
第4页 / 共48页
c语言小游戏Word文件下载.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

c语言小游戏Word文件下载.docx

《c语言小游戏Word文件下载.docx》由会员分享,可在线阅读,更多相关《c语言小游戏Word文件下载.docx(48页珍藏版)》请在冰豆网上搜索。

c语言小游戏Word文件下载.docx

//电脑出拳

intresult;

//比赛结果

//为了避免玩一次游戏就退出程序,可以将代码放在循环中

while

(1){

printf("

这是一个猜拳的小游戏,请输入你要出的拳头:

\n"

);

A:

剪刀\nB:

石头\nC:

布\nD:

不玩了\n"

scanf("

%c%*c"

&

gamer);

switch(gamer){

case65|97:

//A|a

gamer=4;

break;

case66|98:

//B|b

gamer=7;

case67|99:

//C|c

gamer=10;

case68|100:

//D|d

return0;

default:

你的选择为%c选择错误,退出...\n"

gamer);

getchar();

system("

cls"

//清屏

}

srand((unsigned)time(NULL));

//随机数种子

computer=rand()%3;

//产生随机数并取余,得到电脑出拳

result=(int)gamer+computer;

//gamer为char类型,数学运算时要强制转换类型

电脑出了"

switch(computer)

{

case0:

剪刀\n"

break;

//41

case1:

石头\n"

//72

case2:

布\n"

//103

你出了"

switch(gamer)

case4:

case7:

case10:

if(result==6||result==7||result==11)printf("

你赢了!

"

elseif(result==5||result==9||result==10)printf("

电脑赢了!

elseprintf("

平手"

pause>

nul&

//暂停并清屏

}

代码分析

1)首先,我们需要定义3个变量来储存玩家出的拳头(gamer)、电脑出的拳头(computer)和最后的结果(result),然后给出文字提示,让玩家出拳。

接下来接收玩家输入:

scanf("

注意:

由于每次输入以回车结束,缓冲区中除了玩家输入的字母,还有回车符。

回车符要跳过,以免影响下次输入。

Scanf()函数的格式控制字符串个数可以多于参数个数,scanf("

的作用是从缓冲区多输出一个字符(回车符),却不赋给任何变量。

玩家输入结束,使用switch语句判断输入内容,65(A)、97(a)、66(B)、98(b)、67(C)、99(c)、68(D)、100(d)为相应字符的ASCII码。

system("

语句的作用是清屏。

System()函数用来执行dos命令,这里相当于在dos里输入cls命令。

2)玩家出拳结束,电脑开始出拳。

电脑通过产生随机数来出拳:

srand((unsigned)time(NULL));

//为了避免多次运行结果相同,故在前面加入上(需要time.h)

computer=rand()%3;

//获取0~2的随机数

最后通过玩家和电脑出拳的和来判断输赢:

result=(int)gamer+computer;

//...

if(result==6||result==7||result==11)printf("

elseif(result==5||result==9||result==10)printf("

elseprintf("

这是一个很巧妙的算法,玩家和电脑出拳不同,result的值就不同,且不会重复,见下表:

电脑--玩家

石头(4)

剪刀(7)

布(10)

石头(0)

10

剪刀

(1)

11

(2)

9

12

3)每次猜拳结束,暂停并清屏,进入下一次猜拳:

//暂停运行和清屏

C语言输出九九乘法表(5种解法)

九九乘法表共9行9列,重点考察for循环的掌握情况。

下面给出了输出完整乘法表、右上、右下、左上、左下乘法表的代码。

【代码一】输出完整的三角形:

intmain(){

inti,j;

//i,j控制行或列

for(i=1;

i<

=9;

i++){

for(j=1;

j<

j++)

//%2d控制宽度为两个字符,且右对齐;

如果改为%-2d则为左对齐

//\t为tab缩进

%d*%d=%2d\t"

i,j,i*j);

运行结果:

1*1=11*2=21*3=31*4=41*5=51*6=61*7=71*8=81*9=9

2*1=22*2=42*3=62*4=82*5=102*6=122*7=142*8=162*9=18

3*1=33*2=63*3=93*4=123*5=153*6=183*7=213*8=243*9=27

4*1=44*2=84*3=124*4=164*5=204*6=244*7=284*8=324*9=36

5*1=55*2=105*3=155*4=205*5=255*6=305*7=355*8=405*9=45

6*1=66*2=126*3=186*4=246*5=306*6=366*7=426*8=486*9=54

7*1=77*2=147*3=217*4=287*5=357*6=427*7=497*8=567*9=63

8*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=648*9=72

9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81

【代码二】输出右上三角形和左上三角形:

i++){

j++){

if(j<

i)

//打印八个空格,去掉空格就是左上三角形

"

else

%d*%d=%2d"

i,j,i*j);

2*2=42*3=62*4=82*5=102*6=122*7=142*8=162*9=18

3*3=93*4=123*5=153*6=183*7=213*8=243*9=27

4*4=164*5=204*6=244*7=284*8=324*9=36

5*5=255*6=305*7=355*8=405*9=45

6*6=366*7=426*8=486*9=54

7*7=497*8=567*9=63

8*8=648*9=72

9*9=81

去掉八个空格后的运行结果:

2*2=42*3=62*4=82*5=102*6=122*7=142*8=162*9=18

3*3=93*4=123*5=153*6=183*7=213*8=243*9=27

4*4=164*5=204*6=244*7=284*8=324*9=36

5*5=255*6=305*7=355*8=405*9=45

6*6=366*7=426*8=486*9=54

7*7=497*8=567*9=63

8*8=648*9=72

9*9=81

【代码三】输出右下和左下三角形:

intmain(){

inti,j,n;

//将下面的for循环注释掉,就输出左下三角形

for(n=1;

n<

=9-i;

n++)

=i;

1*1=1

2*1=22*2=4

3*1=33*2=63*3=9

4*1=44*2=84*3=124*4=16

5*1=55*2=105*3=155*4=205*5=25

6*1=66*2=126*3=186*4=246*5=306*6=36

7*1=77*2=147*3=217*4=287*5=357*6=427*7=49

8*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=64

去掉循环后的运行结果:

1*1=1

2*1=22*2=4

3*1=33*2=63*3=9

4*1=44*2=84*3=124*4=16

5*1=55*2=105*3=155*4=205*5=25

6*1=66*2=126*3=186*4=246*5=306*6=36

7*1=77*2=147*3=217*4=287*5=357*6=427*7=49

8*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=64

C语言文件加密解密软件

文件加密解密是常用的一个功能,可以很好的保护你的隐私内容;

本软件简单的实现了文件加密解密的功能。

为了防止别人随意使用软件,软件本身也有一个密码,必须输入密码才能使用软件。

软件的功能有:

∙加密文件:

打开需要加密的文件,输入密钥,将加密的文件保存;

∙解密文件:

打开需要解密的文件,输入密钥,将解密的文件保存;

∙修改密码:

可以临时修改软件的使用密码,但是软件重启后会被重置;

∙退出程序:

完成工作后退出。

软件使用流程

1)启动软件,输入密码

软件启动后,必须输入密码才能使用(默认密码为123456)。

用户有3次输入密码的机会,连续3次输入错误软件将自动退出。

截图如下:

图1 

软件启动时校验密码

2)密码校验正确,显示功能菜单

密码校验完成后,会显示功能菜单,让用户选择要进行的操作,如下图所示:

图2 

软件菜单

3)用户选择要进行的操作

①文件加密:

输入1并回车,进入文件加密功能,要求用户输入要加密的文件名、密钥、保存加密内容的文件。

在D盘下创建文件demo.txt,输入一些文本,对该文件进行加密。

加密成功后,用记事本打开加密的文件,看到的全部是乱码,截图如下:

图3 

加密成功

如果输入的文件路径错误,或者打开/创建文件失败,将导致加密失败,截图如下:

图4 

加密失败

文件名要包含路径,只有文件名表示当前程序所在文件夹下的文件。

②文件解密:

回到主菜单,输入2并回车,进入文件解密功能,同样要求用户输入要解密的文件、密钥和保存解密内容的文件。

输入上次加密的文件,将解密后的文件保存到demo2.txt,解密成功后打开demo2.txt,可以看到被还原的具有可读性的内容。

图5 

解密文件成功

③修改密码:

回到主菜单,输入3并回车,进入密码修改功能。

修改密码前要求用户输入原来的密码,并两次输入新密码,保证不会误输入。

图6 

修改密码成功

④退出系统:

回到主菜单,输入0退出软件。

对于该软件,我们提供了详细的说明文档,包括软件的使用、设计思路、重要知识点以及常用的编程技巧,并且在代码中做了详细的注释。

软件、说明文档及源码下载地址:

 

提取密码:

l2aw

C语言写的简单的定时关机程序

写一个定时关机的小程序,可以立即关闭计算机,也可以一段时间后关闭计算机。

这里主要考察system()命令。

string.h>

charcmd[20]="

shutdown-s-t"

;

chart[5]="

0"

intc;

titleC语言关机程序"

//设置cmd窗口标题

modeconcols=48lines=25"

//窗口宽度高度

colorf0"

//可以写成red调出颜色组

date/T"

TIME/T"

-----------C语言关机程序-----------\n"

1.实现10分钟内的定时关闭计算机\n"

2.立即关闭计算机\n"

3.注销计算机\n"

0.退出系统\n"

-------------------------------------\n"

%d"

c);

switch(c){

您想在多少秒后自动关闭计算机?

(0~600)\n"

%s"

t);

system(strcat(cmd,t));

shutdown-p"

case3:

shutdown-l"

Error!

pause"

这个程序虽然实用价值不大,但是可以让我们了解system()函数。

在Windows下,system()函数可以执行dos命令;

在Unix/Linux中,可以执行Shell。

请在Windows下运行上面的程序。

程序中对dos界面的设置和关机功能都是通过dos命令实现的。

你肯定听过内存溢出吧?

通俗地理解就是内存不够。

在运行某些比较吃内存的程序的时候,他们所需要的内存超出了你的电脑能承受的大小,系统会提示内存不足,有时候程序会自动退出。

请用C语言写一个简单的内存溢出的例子。

while

(1){//死循环

malloc

(1);

//分配一个字节长度的内存

不要害怕,编译试试,打开任务管理器,可以看到你的内存占用直飚上去,再等等,程序会出错。

这时候windows的内存管理机制发现了问题,把这个程序给终结了,防止系统奔溃(其他的系统也有相应的措施)。

C语言动态数组的实现:

数组长度随数组元素改变,不会溢出,不会浪费资源

我们知道,C语言中的数组大小是固定的,定义的时候必须要给一个常量值,不能是变量。

这带来了很大的不便,如果数组过小,不能容下所有数组,如果过大,浪费资源。

请实现一个简单的动态数组,能够随时改变大小,不会溢出,也不会浪费内存空间。

下面的代码实现了简单的动态数组:

//从控制台获取初始数组大小

intN;

int*a;

inti;

Inputarraylength:

%d\n"

N);

//分配空间

a=(int*)calloc(N,sizeof(int));

//填充数据

for(i=0;

N;

a[i]=i+1;

%-5d"

a[i]);

if((i+1)%10==0){

//释放内存

free(a);

a=NULL;

20

12345678910

11121314151617181920

一道题目,玩转C语言指针数组和指向指针的指针

请先看下面的代码:

char*lines[5]={

COSC1283/1284"

Programming"

Techniques"

is"

greatfun"

};

char*str1=lines[1];

char*str2=*(lines+3);

charc1=*(*(lines+4)+6);

charc2=(*lines+5)[5];

charc3=*lines[0]+2;

str1=%s\n"

str1);

str2=%s\n"

str2);

c1=%c\n"

c1);

c2=%c\n"

c2);

c3=%c\n"

c3);

returnEXIT_SUCCESS;

str1=Programming

str2=is

c1=f

c2=2

c3=E

看下面的分析之前,请先了解指针数组和指向指针的指针的基本概念,如果你不了解,先看下面的文章:

∙指针数组:

∙指向指针的指针:

为了更加直观,把上面的数组改成下面的形式:

char*string0="

char*string1="

char*string2="

char*string3="

char*string4="

char*lines[5];

lines[0]=string0;

lines[1]=string1;

lines[2]=string2;

lines[3]=string3;

lines[4]=string4;

这样,或许会清晰很多,char*lines[5];

定义了一个指针数组,数组的每一个元素都是指向char类型的指针。

最后5行,为数组的每一个元素赋值,都是直接赋给指针。

而lines,是一个指向指针的指针,它的类型为char**,所以*lines是一个指向字符的指针,**lines是一个具体的字符。

这一点很重要,一定要明白。

指针是可以进行运算的,lines为lines[5]数组的首地址,即第0个元素的地址;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 广告传媒

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1