当前位置:首页 » 编程语言 » 用c语言输入游戏积分求玩家称号
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

用c语言输入游戏积分求玩家称号

发布时间: 2023-08-22 17:11:12

❶ 求帮忙编写c语言抽奖程序

自己看着修改一下就ok了, 。。。

/*
预先将参加抽奖者的资料输入存储起来,主要用结构体数组实现,用结构体表示每项记录,包括身份证号码、姓名、电话、住址等信息。开始抽奖时,屏幕上快速闪动参与者的身份证号码,按任意键停止闪动,把中奖人的信息用显示在屏幕上。可反复抽出一、二、三等奖若干名。
设计实现以下功能:
(1)录入:完成抽奖者信息的输入;
(2)删除:完成抽奖者信息的删除;
(3)修改:允许对已经录入的数据重新进行编辑、修改;
(4)显示:显示所有中奖者的信息;
(5)抽奖:
a. 抽出一等奖 1 名,如果抽过就不能再抽;
b. 抽出二等奖 2 名,如果抽完就不能再抽;
c. 抽出三等奖 5 名,如果抽完就不能再抽;
(6)退出程序。*/

#include<stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <memory.h>
#include <string.h>
#include <time.h>
#define AWARDER_NUM 10
typedef struct tag_award
{
char ID[20];
char name[20];
char telNo[20];
char address[50];
}AWARDER;

AWARDER * awarder = new AWARDER[AWARDER_NUM];
int first_award[1] = {-1};
int second_award[2] = {-1,-1};
int third_award[5] ={-1,-1,-1,-1,-1};
int awarder_num = 0;

void info_login()
{
if(awarder_num >= AWARDER_NUM)
{
AWARDER * new_awarder = new AWARDER[awarder_num + AWARDER_NUM];
memcpy(new_awarder,awarder,awarder_num*sizeof(AWARDER));
delete awarder;
awarder = new_awarder;
}

printf("身份证号:");
scanf("%s",awarder[awarder_num].ID);
printf("姓名:");
scanf("%s",awarder[awarder_num].name);
printf("电话号码:");
scanf("%s",awarder[awarder_num].telNo);
printf("家庭住址:");
scanf("%s",awarder[awarder_num].address);

awarder_num++;
}
void info_delete()
{
char name[20];
printf("输入您要删除的抽奖者的姓名:");
scanf("%s",name);
for(int i=0;i<awarder_num;i++)
{
if (strcmp(awarder[i].name,name) == 0)
{
printf("您选择删除的抽奖者的信息如下:\n");
printf("身份证号:%s\n",awarder[i].ID);
printf("姓名:%s\n",awarder[i].name);
printf("电话号码:%s\n",awarder[i].telNo);
printf("家庭住址:%s\n",awarder[i].address);
break;
}
}
if(i == awarder_num)
{
printf("没有找到您输入的抽奖者!\n");
}
else
{
char c;
printf("您确定要删除吗?(Y//N)");
fflush(stdin);
scanf("%c",&c);
if(c == 'Y' || c == 'y')
{
AWARDER * new_award = new AWARDER[awarder_num-1];
if(i <= 0)
memcpy(new_award,awarder+1,sizeof(AWARDER) * (awarder_num - 1));
else if( i >= awarder_num -1)
memcpy(new_award,awarder,sizeof(AWARDER) * (awarder_num - 1));
else
{
memcpy(new_award,awarder,sizeof(AWARDER) * i);
memcpy(new_award+i,awarder+i+1,sizeof(AWARDER) * (awarder_num - i - 1));
}
awarder_num--;
delete awarder;
awarder = new_award;
}
}

}
void info_modify()
{
char name[20];
printf("输入您要修改的抽奖者的姓名:");
scanf("%s",name);
for(int i=0;i<awarder_num;i++)
{
if (strcmp(awarder[i].name,name) == 0)
{
printf("您选择的抽奖者的信息如下:\n");
printf("身份证号:%s\n",awarder[i].ID);
printf("姓名:%s\n",awarder[i].name);
printf("电话号码:%s\n",awarder[i].telNo);
printf("家庭住址:%s\n",awarder[i].address);
break;
}
}
if(i == awarder_num)
{
printf("没有找到您输入的抽奖者!\n");
}
else
{
printf("请输入该抽奖者的新信息:\n");
printf("身份证号:");
scanf("%s",awarder[i].ID);
printf("姓名:");
scanf("%s",awarder[i].name);
printf("电话号码:");
scanf("%s",awarder[i].telNo);
printf("家庭住址:");
scanf("%s",awarder[i].address);
}
}

bool check_over(int cur_award,int awarderNo)
{
if(awarderNo == 1)
{
if(cur_award == first_award[0])
return true;
}
else if(awarderNo <= 3)
{
if(cur_award == first_award[0])
return true;
for(int i=0;i<awarderNo-1;i++)
if(cur_award == second_award[i])
return true;
}
else if(awarderNo <= 8)
{
if(cur_award == first_award[0])
return true;
for(int i=0;i<2;i++)
if(cur_award == second_award[i])
return true;
for(i=0;i<awarderNo-3;i++)
if(cur_award == third_award[i])
return true;
}
return false;
}
void award()
{
if(awarder_num < 8)
{
printf("人数太少,请添加足够的人再抽奖!\n");
return;
}
srand((long)time(0));
char hit_id[20];
printf("\n开始抽第一等奖(1名),按任意键开始...\n");
getch();
while(!kbhit())
{
first_award[0] = rand() % awarder_num;
memcpy(hit_id,awarder[first_award[0]].ID,18);
printf("\r ");
printf("\r %s",hit_id);
}
printf("\n\n开始抽第二等奖(2名)");
for (int i=0;i<2;i++)
{
printf("\n第%d个二等奖,按任意键开始...\n",i+1);
getch();
while(!kbhit())
{
second_award[i] = rand() % awarder_num;
while(check_over(second_award[i],1+i))
second_award[i] = rand() % awarder_num;
memcpy(hit_id,awarder[second_award[i]].ID,18);
printf("\r ");
printf("\r %s",hit_id);
}
}
printf("\n\n开始抽第三等奖(5名)");
for (i=0;i<5;i++)
{
printf("\n第%d个三等奖,按任意键开始...\n",i+1);
getch();
while(!kbhit())
{
third_award[i] = rand() % awarder_num;
while(check_over(third_award[i],3+i))
third_award[i] = rand() % awarder_num;

memcpy(hit_id,awarder[third_award[i]].ID,20);
printf("\r ");
printf("\r %s",hit_id);
}
}

}
void info_show()
{
printf("一等奖获得者:\n");
printf("\t身份证号:%s\n",awarder[first_award[0]].ID);
printf("\t姓名:%s\n",awarder[first_award[0]].name);
printf("\t电话号码:%s\n",awarder[first_award[0]].telNo);
printf("\t家庭住址:%s\n",awarder[first_award[0]].address);
printf("二等奖获得者:\n");
for (int i=0;i<2;i++)
{
printf("第%d个二等奖获得者:\n");
printf("\t身份证号:%s\n",awarder[second_award[i]].ID);
printf("\t姓名:%s\n",awarder[second_award[i]].name);
printf("\t电话号码:%s\n",awarder[second_award[i]].telNo);
printf("\t家庭住址:%s\n",awarder[second_award[i]].address);
}
printf("三等奖获得者:\n");
for (int i=0;i<5;i++)
{
printf("第%d个三等奖获得者:\n");
printf("\t身份证号:%s\n",awarder[third_award[i]].ID);
printf("\t姓名:%s\n",awarder[third_award[i]].name);
printf("\t电话号码:%s\n",awarder[third_award[i]].telNo);
printf("\t家庭住址:%s\n",awarder[third_award[i]].address);
}

}
/*提示信息*/
bool raise()
{
printf("\n请输入你需要的操作代号:\n");
printf("\t1.录入:完成抽奖者信息的输入;\n");
printf("\t2.删除:完成抽奖者信息的删除;\n");
printf("\t3.修改:允许对已经录入的数据重新进行编辑、修改;\n");
printf("\t4.抽奖:开始抽奖!\n");
printf("\t5.显示:显示所有中奖者的信息;\n");
printf("\t6.退出。\n");
printf("==>");
int operate;
fflush(stdin);
scanf("%d",&operate);
switch(operate)
{
case 1:
info_login();
break;
case 2:
info_delete();
break;
case 3:
info_modify();
break;
case 4:
award();
break;
case 5:
info_show();
break;
case 6:
return false;
default:
break;
}
printf("\n操作完成。\n");
return true;
}

void main()
{
while(raise());
}

❷ 怎样用C语言编写一个猜拳游戏

/*至搂主:本游戏系统可支持多个用户游戏,一次只能登录一个用户,运行此程序会生成一个文件来存储用户信息,本程序允许承载的用户个数为1000个,为使游戏更有趣味,程序特意为不同的玩家分数设计了不同的等级,程序初始化时,会生成一个只含有5个系统玩家的文件。游戏过程中,文件会不断刷新,如果玩家要删除一切曾经的游戏记录,只需将存储文件删除,存储记录的文件名为'sunyi',如果搂主想与我们联系,请加QQ好友865363864。(加好友时请搂主注明身份)。
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//#define NULL 0
/**************************************************************************************************************************/
struct computer //定义系统玩家结构体
{
char player[30];
int score;
int times;
int time;
}cpt[1000]={"player1",100,1,1,"player2",100,1,1,"player3",100,1,1,"player4",100,1,1,"player5",100,1,1,};
FILE *in; //生成记录玩家信息的文件的指针
int number,rool; //rool:玩家所在数组位置的角标.number:数组元素的个数.
/****************************************************************************************************************************/
int h() //生成一个随机数(1,2或3);
{
int k,n;
n=rand()%3;
return n+1;
}
/****************************************************************************************************************************/
int str_to_num(char a[]) //引入函数str_to_num:使字符串(string)转化为整数数形式(int)!
{

int i=strlen(a)-1,num=0,time=1;
for(;i>=0;i--)
{
num=num+(a[i]-'0')*time;
time=time*10;
}
return(num);
}
/*****************************************************************************************************************************/
void b(int n)
{
switch((int)(n/20))
{
case(0):printf("等级:江湖渣子");break;
case(1):
case(2):printf("等级:初入江湖");break;
case(3):
case(4):
case(5):printf("等级:江湖浪子");break;
case(6):
case(7):
case(8):
case(9):printf("等级:江湖侠客");break;
case(10):
case(11):
case(12):
case(13):
case(14):
case(15):
case(16):
case(17):
case(18):
case(19):printf("等级:一派掌门");break;
default:
{
switch((int)(n/1000))
{
case(0):printf("等级:武林盟主");break;
case(1):
case(2):
case(3):
case(4):printf("等级:江湖奇侠");break;
case(5):
case(6):
case(7):
case(8):
case(9):printf("等级:孤独求败");break;
default:printf("等级:不死之身");break;
}

}

}

}
/*****************************************************************************************************************************/
int readfile(void) //读文件
{
int i,number=5;
if((in=fopen("sunyi.txt","rb"))!=NULL)
{
fread(&number,sizeof(int),1,in);
for(i=0;i<number;i++)
{
fread(&cpt[i],sizeof(struct computer),1,in);
}
fclose(in);

}
return(number);
}
/******************************************************************************************************************************/
void writefile() //写文件
{
int i;
in=fopen("sunyi.txt","wb");
fwrite(&number,sizeof(int),1,in);
for(i=0;i<number;i++)
{
fwrite(&cpt[i],sizeof(struct computer),1,in);
}
fclose(in);
}
/*******************************************************************************************************************************/
void rule() //规则函数
{
printf(" 猜拳游戏\n");
printf("规则:\n");
printf(" 输入“N”或“n”查看积分,第一次游戏时,会免费赠送玩家100枚金币,每局游戏都会");
printf("提示您输入押金,押金必须大于1枚金币!(含1枚),提示游戏开始后,输入一个1~3");
printf("之间的值;1表示石头,2表示剪刀,3表示布。同时,系统也将出拳,按照通俗规则,赢者");
printf("将得到押金,否则扣除,当积分小于5分时,您有五次机会得到系统免费赠送的30分,");
printf("当玩家金币数为零时(又用完5次得到30金币的机会), 系统将提示玩家游戏结束。并删");
printf("除用户。\n");
printf(" #本系统会自动生成5个系统玩家轮流与您游戏,游戏前,玩家需要登录来调出自己");
printf("的游戏记录,如果是第一次游戏,请输入“register”,再输入新用户名注册,如果以前");
printf("进行过游戏,请输入“entry”再输入“用户名”登录.\n(注:本系统允许存储本记录多个用户的信息。)\n\n");
}
/*********************************************************************************************************************************/
int registe() //开始游戏前的登录和注册.
{
char ch[30];
int i;
loop4:
printf("\n第一次玩游戏?请输入“register”注册!\n登录?请输入“entry”登录\n");
loop3:
scanf("%s",ch);
if(strcmp("register",ch)==0)
{
loop2:
printf("请输入新用户名:(长度小于30个字符)");
scanf("%s",ch);
for(i=5;i<number;i++)
{
if(strcmp(cpt[i].player,ch)==0)
{
printf("这个用户已被注册过!注册失败!请重新注册!\n");
goto loop2;
}
}
strcpy(cpt[number].player,ch);
cpt[number].score=100;
cpt[number].time=cpt[number].times=1;
number+=1;

writefile();
printf("注册成功!请登录并在您的用户下进行游戏!:");
goto loop4;
}
else if(strcmp("entry",ch)==0)
{
printf("请输入用户名登录:");
scanf("%s",ch);
for(i=5;i<number;i++)
{
if(strcmp(cpt[i].player,ch)==0)
{
printf("登录成功!\n");
printf("您将在您的用户下进行游戏。!");
break;
}
}
if(i==number)
{
printf("输入错误或没有注册或该用户由于输光金币已被系统删除!\n请重新输入用户名登录!");
goto loop4;
}
}
else
{
printf("您输入的不是“register”也不是“entry”,系统无法执行您的命令,请重新输入:\n");
goto loop3;
}
return(i);

}
/*********************************************************************************************************************************/
void game() //游戏和查询的主体函数
{
int o,p;
char a[10],wether[1];

if(cpt[rool].time==1)printf("本局游戏系统将免费赠予您100枚金币。\n");
if(cpt[rool].score<5&&cpt[rool].times<=5)
{
if(cpt[rool].times<5)
{
printf("您的积分已少于5分,系统第%d次赠送你30枚金币\n",cpt[rool].times);
}
else
{
printf("您的积分已少于5分,系统最后一次赠送你30枚金币!\n");
}
cpt[rool].score+=30;
cpt[rool].times+=1;
game();
}
if(cpt[rool].score==0)
{
int q;
printf("您不能在没有积分的状态下游戏!你的用户将被删除,如果您还想继续游戏,请重新申请用户\nGAME OVER!\n");
for(q=rool;q<number-1;q++)
{
strcpy(cpt[q].player,cpt[q+1].player);
cpt[q].time=cpt[q+1].time;
cpt[q].times=cpt[q+1].times;
cpt[q].score=cpt[q+1].score;
}
number-=1;
writefile();
return;
}
else
{
printf("是否继续游戏,输入‘y’或‘Y’继续游戏\n");
scanf("%s",wether);
if(strcmp("y",wether)!=0 && strcmp("Y",wether)!=0)
{
printf("GAME STOP");
return;
}
else
{
loop1:
printf("请输入你对本局游戏的押金或输入'N'或‘n’查询积分排名\n");
loop5:
scanf("%s",a);

/****************************************************************************************************************************************************/
if(a[0]=='n'||a[0]=='N') //查寻排名
{
int i[5]={-1,-1,-1,-1,-1},j,k,d=0,e=0,line=-1;
for(k=1;k<=5;k++)
{
for(d=0;d<5;d++)
{
if(d!=i[0]&&d!=i[1]&&d!=i[2]&&d!=i[3]&&d!=i[4])break;
}
for(j=0;j<number;j++)
{
if(cpt[j].score>=cpt[d].score&&j!=i[0]&&j!=i[1]&&j!=i[2]&&j!=i[3]&&j!=i[4])d=j;
}
i[k-1]=d;
if(d==rool)
{
line=k;
}
printf("\n玩家:%10s,金币数:%4d,",cpt[d].player,cpt[d].score);
b(cpt[d].score);
}
if(line!=-1)
{
printf("\n\n您目前的积分为:%d,\n排名为:%d,\n",cpt[rool].score,line);
b(cpt[rool].score);
printf("\n\n");
}
else
{
printf("\n\n您目前的积分为:%d,\n没有进入前5名\n",cpt[rool].score);
b(cpt[rool].score);
printf("\n\n");
}
game();
}
/*****************************************************************************************************************************************************/
else //玩游戏
{
int g=0,le=strlen(a);
for(;g<le;g++)
{
if(!(a[g]>='0'&&a[g]<='9'))
{
printf("你输入了游戏系统无法识别的字符,请重新输入:");
break;
}
}
if(g<le)
{
goto loop5;
}

int money=str_to_num(a);
if(money==0)
{
printf("押金不能为‘0’,请重新输入:");
goto loop5;
}
if(money<0)
{
printf("押金不能为负数,请重新输入:");
goto loop5;
}

printf("和您进行本轮游戏的是系统玩家player%d。\n",(cpt[rool].time-1)%5+1);
if(cpt[(cpt[rool].time-1)%5].score<5)
{
cpt[(cpt[rool].time-1)%5].score+=50;
printf("你的对手的金币小于5个,系统赠送你的对手50枚金币\n");
}
printf("您设定的押金为%d\n",money);
if(money>cpt[rool].score)
{
printf("抱歉,您的金币不足!请重新输入!\n");
goto loop1;
}
if(money>cpt[(cpt[rool].time-1)%5].score)
{
printf("抱歉,您的对手金币不足!请重新输入!\n");
goto loop1;
}
if(1>0)
{
printf("游戏开始,请出拳!(1表示石头,2表示剪刀,3表示布)");
scanf("%d",&o);
p=h();
switch(o)
{
case 1:
{
printf("玩家出拳:石头\n");
break;
}
case 2:
{
printf("玩家出拳:剪子\n");
break;
}
case 3:
{
printf("玩家出拳:布\n");
break;
}
}
switch(p)
{
case 1:
{
printf("系统出拳:石头\n");
break;
}
case 2:
{
printf("系统出拳:剪子\n");
break;
}
case 3:
{
printf("系统出拳:布\n");
break;
}
}
switch(o-p)
{
case 0 :
{
printf("平局!系统将不改变你的金币数量,你的余额为:%d\n",cpt[rool].score);
break;
}
case 1 :
case -2:
{
printf("你输了,系统将扣除你%d个金币,你的余额为:%d\n",money,cpt[rool].score-money);
cpt[rool].score-=money;
cpt[(cpt[rool].time-1)%5].score=cpt[(cpt[rool].time-1)%5].score+money;
break;
}
case -1:
case 2 :
{
printf("你赢了,系统将给予你%d个金币,你的余额为:%d\n",money,cpt[rool].score+money);
cpt[rool].score+=money;
cpt[(cpt[rool].time-1)%5].score=cpt[(cpt[rool].time-1)%5].score-money;
break;
}
}
cpt[rool].time+=1;

writefile();

}
game();

}

}

}

}
main() //主函数
{
srand( (unsigned)time(0) );
number=readfile();
rule();
rool=registe();
game();
}

❸ c语言编程题目求解

#include<stdio.h>
int fun(int a)
{
int i;
for(i=2;i<=a;i++)
{
if(a%i==0)
{
break;
}
}
if(i>=a)
{
return 1;
}
else{
return 0;}
}
int main()
{
int a;
scanf("%d",&a);
if(fun(a))
{
printf("yes\n");
}
else{
printf("no\n");}

return 0;
}
第二题

❹ 用c语言编程计算积分

#include #include float f1(float x) { return(1.0+x); } float f2(float x) { return(2.0*x+3.0); } float f3(float x) { return(exp(x)+1); } float f4(float x) { return(pow(1+x,2)); } float f5(float x) { return(pow(x,3)); } float fsimp(float a,float b,float (*p)(float)) { float c,s; c=(a+b)/2; s=(b-a)/6*(p(a)+4*p(c)+p(b)); return s; } int main() { float a,b; printf("请输入积分下限a的值:"); scanf("%f",&a); printf("请输入积分上限b的值:"); scanf("%f",&b); printf("%f\n",fsimp(a,b,f1)); printf("%f\n",fsimp(a,b,f2)); printf("%f\n",fsimp(a,b,f3)); printf("%f\n",fsimp(a,b,f4)); printf("%f\n",fsimp(a,b,f5)); }