猜数字游戏 C语言简单程序代码

Python022

猜数字游戏 C语言简单程序代码,第1张

#include

#include

#include

#include

int

i,j=1

int

scores[6]

void

main()

{

char

control='\0'

int

rand1,guess,score

printf("开始游戏吗

?(y?n)")

control=getchar()

while(control!='y'&&control!='y'&&control!='n'&&control!='n')//屏蔽其他按键

{

printf("无效字符!开始游戏吗

?(y?n)")

fflush(stdin)

control=getchar()

printf("%c",control)

}

while((control=='y')||(control=='y'))

{

system("cls")

srand((unsigned)time(null))

rand1=rand()%10+1

//printf("%d",rand1)

for(i=0i<20i++)

{

printf("请输入你猜的数:")

scanf("%d",&guess)

if(guess>rand1)printf("大啦!\n")

else

if(guess

:猜对了\a\n")//响铃\a

break

}

i++

}

i+=1

if(i==1)

{

score=100

scores[0]++

}

else

if(i>=2&&i<=3)

{

score=90

scores[1]++

}

else

if(i>=4&&i<=6)

{

score=80

scores[2]++

}

else

if(i>=7&&i<=10)

{

score=70

scores[3]++

}

else

if(i>=11&&i<=15)

{

score=60

scores[4]++

}

else

{

score=0

scores[5]++

}

printf("第%d次得分是:%d\n",j,score)

scores[7]+=score

j++

printf("是否继续(y?n)\n")

fflush(stdin)//请输入缓冲区

control=getchar()

while(control!='y'&&control!='y'&&control!='n'&&control!='n')

{

printf("无效字符!只能按y或y,n或n是否继续(y?n)\n")

fflush(stdin)

control=getchar()

printf("%c",control)

}

}

system("cls")//清屏

printf("+++++++++++++++-----------------以下是得分情况:---------------*************\n")

for(i=0i<5i++)

{

printf("+++++++++++++++------------------得%d分%d次:------------------*************\n",10*(10-i),scores[i])

}

printf("+++++++++++++++------------------得%d分%d次:------------------*************\n",

0,scores[5])

}

加了得分榜,没写排序,没时间了。自己加一下就OK

#include <stdio.h>

#include <time.h>

#include <stdlib.h>

#include <string.h>//以上的是要用到的头文件

int score=0

void SELECT(int)

void Guess(int,int)

void Select()

void letsgo()

void NB(int)//以上的是函数原型

struct PLAYER

{

char name[10]

int plscore

}

void save()

{ printf("您的得分是%i",score)

PLAYER player

printf("请输入姓名:")

scanf("%s",player.name)

player.plscore=score

FILE *fp

if((fp=fopen("record.txt","ab"))==NULL)

{

printf("不能打开文件!")

exit(0)

}

fwrite(&player,sizeof(PLAYER),1,fp)

printf("记录保存完毕!")

fclose(fp)

}

void print()

{

printf("分数榜:")

FILE *fp

if((fp=fopen("record.txt","rb"))==NULL)

{

printf("不能打开文件!")

exit(0)

}

PLAYER player

while(fread(&player,sizeof(PLAYER),1,fp)==1)

{

printf("\n姓名:%s\n",player.name)

printf("分数:%i\n",player.plscore)

}

fclose(fp)

}

void main()

{

char end

printf(" \t\t欢迎光临!!\n\t 在这里我将来测试你的运气!\n")

printf(" 请你猜下数字,但机会就只有三次!!\n")

printf("\n 1、开始游戏^__^\n 2、我是倒霉鬼,我不玩\n 3、查看分数榜")

printf(" 请选择1或2\n")

Select()

printf("\n按任意键退出")

fflush(stdin)

end=getchar()

if(score>0)

save()

printf("Thanks For Playing \2 886\n")

}

void Select()

{

int s

static int lihai=0

fflush(stdin)

scanf("%d",&s)

switch(s)

{

case 1:

letsgo()break

case 2:

printf("唉,你不想玩,我就不逼你咯\n")exit(0)

case 3:print()

break

default:

lihai++

if(lihai==3||lihai==5)

{

NB(lihai)

break

}

printf("你输入的是什么啊!重新输入<1 或 2 >\n ")

Select()

}

}

void letsgo()

{

int select

printf("请你选择猜数字的难度\n ")

printf("1、简单->猜测 0 到 9 的数字\n ")

printf("2、一般->猜测 0 到 99 的数字\n ")

printf("3、困难->猜测 0 到 999 的数字\n ")

printf("<请不要乱选!!>\n")

scanf("%d",&select)

switch(select)

{

case 1:SELECT(10)break

case 2:SELECT(100)break

case 3:SELECT(1000)break

case 4:print()

default:

{

printf("请不要乱选!!\n")

letsgo()

}

}

}

void NB(int l)

{

char a[20]

static int jihui=0

printf("\n老大!我服了你,%d 次都输入错误。\n",l)

printf("\n<可能你在捣乱~~>\n")

printf("(如果不想结束,请输入[sorry]<中括号内的>否则结束游戏)\n")

fflush(stdin)

gets(a)

if (strcmp(a,"sorry")==0||strcmp(a,"SORRY")==0)

{

jihui++

if(jihui==2)

{

printf("\n死性不改。道歉也没有用了!\n")

goto end

}

printf("好吧。给你次机会<请输入 1 或 2 >\n ")

Select()

}

end:

printf("")

}

void SELECT(int n)

{

int num

srand((unsigned)time(NULL))

num=rand()%n

if(n==10)

{

n=3

printf("\n你有 %d 次猜测的机会\n",n)

}

if(n==100)

{

n=5

printf("\n你有 %d 次猜测的机会\n",n)

}

if(n==1000)

{

n=7

printf("\n你有 %d 次猜测的机会\n",n)

}

Guess(num,n)

}

void Guess(int num,int n)

{

int search,k,o

static int i=1

char ans

if(n==3)

k=10

if(n==5)

k=100

if(n==7)

k=1000

o=(num-k/1)%k

if(o<0)

o=0

printf("\n请猜这个数是多少(在<%d>到<%d>):",o,(k/5+num)%k)

fflush(stdin)

scanf("%d",&search)

if(num>search)

printf("\n小了\n")

if(num<search)

printf("\n大了\n")

if(num==search)

{

printf("\n恭喜您了!你在第 %d 次猜对了\n",i)

score+=10

printf("是否继续<y / n>:\n")

fflush(stdin)

ans=getchar()

if(ans=='y'||ans=='Y')

{

i=1

letsgo()

}

}

else

{

i++

if(i<=n)

Guess(num,n)

else

{

printf("\n你的 %d 次机会已经没有了!!,答案是 %d \n",i-1,num)

printf("是否继续<y / n>:\n")

fflush(stdin)

ans=getchar()

if(ans=='y'||ans=='Y')

{

i=1

letsgo()

}

}

}

}

满意请采纳。

源码如下:

/* File: guess.c */

#include <stdio.h>  /* standard input & output support */

#include <stdlib.h> /* srand() rand() */

#include <time.h>   /* time() */

/* 宏定义 */

#define NUMBER_LENGTH   5   /* 随机数长度 */

#define NUMBER_LIMIT    10  /* 随机数限制, 每一位0-9 */

#define INPUT_LENTH     128 /* 输入缓冲区大小 */

char goal[NUMBER_LENGTH]    = {0}  /* 保存随机数 */

char flag[NUMBER_LIMIT]     = {0}  /* 保存随机数标志, 保证不重复 */

char input[INPUT_LENTH]     = {0}  /* 保存输入 */

/* 初始化用于保存数据的数组 */

void initData()

{

int i = 0

while (i < NUMBER_LENGTH)

goal[i++] = 0

i = 0

while (i < NUMBER_LIMIT)

{

flag[i++] = 0

}

}

/* 初始化用于保存缓冲区的数组 */

void initBuffer()

{

int i = 0

while (i < INPUT_LENTH)

input[i++] = 0

}

/* 显示猜测结果 */

void display()

{

int count = 0

int i = 0

while (i < NUMBER_LENGTH)

{

if (input[i] == goal[i])

{

printf("%c", 'o')

count++

}

else

{

printf("%c", 'x')

}

i++

}

printf("\nRIGHT: %d bit(s)\n", count)

if (count == NUMBER_LENGTH)

{

printf("You win! The number is %s.\n", goal)

exit(0)

}

}

/* 生成随机数 */

void general()

{

/* 以时间作为时间种子保证生成的随机数真正具有随机性质 */

srand((unsigned int)time(NULL))

int i = 0

while (i < NUMBER_LENGTH)

{

char tmp

do

{

tmp = '0' + ((i != 0) ? (rand() % 10) : (1 + rand() % 9))

} while (flag[tmp] != 0)

flag[tmp] = 1

goal[i++] = tmp

}

}

/* 输入方法,用于猜测 */

void guess()

{

printf("Please input the number you guessed:\n")

scanf("%s", input)

display()

initBuffer()

}

/* 主函数,程序主框架 */

int main (int argc, const char * argv[])

{

initData()

initBuffer()

general()

while (1) guess()

return 0

}

==============================================

运行结果见附图,希望我的回答能够对你有所帮助。