宝子们,当你们来到这里,是不是已经开始做C语言课设了,如果做出圈游戏的话,直接复制我的代码吧。
大一上完C语言自己的课设,当时就想发了,后来搞忘记了,最近在学人工人工智障算法。哈哈,昨天发了个第一个文章,可惜也是照着视频写的,今天这个全是自己弄的了。
大一做C语言出圈游戏的时候,也想从网上找,但是找到了都是以数字作为人名,感觉好拉跨,然后自己也是琢磨了一个可以输入汉字作为人名的出圈游戏。
当时课设要求创新功能,然后我就把大一学的代码都加进去了,所以代码显得很冗余,但是我每个模块都有单独的函数实现,大家自己看一下,提取出来就好了,我懒得提取了。
(再次提示,里面有很多附加东西,都是函数实现,需要出圈游戏的直接提出来就好,多的解释我就不做了,三年过去,忘了,自我觉得代码注释很到位了)
然后就先简单说一下结果,说明一下。
我的课设里运行之后会显示当前日期和时间,然后又一个“输入密码的提示”其实这个密码就是下面各个模块功能对应的数字。
这里演示出圈游戏,直接按键输入数字 1 回车键,之后输入你想要的游戏人数,这里输入数字 6 ,然后回车,随后会提示输入人的名字,每次输入一个人名之后,回车输入下一个,直到第六个输入完毕再回车的时候,会总体打印一遍人名。之后提示输入出圈数字,这里输入4然后火车,游戏结果就出来啦。
随后会回到最开始输入数字选择模式的地方。
最后,我的课设报告还在,看不懂出圈游戏代码的,评论区@我,发给你就好。
示列结果:
今天的日期是: May 10 2024
编译的时间是 11:50:38
请输入游戏密码:
开始出圈游戏:1
解一元二次方程: 2
输入年月日,告诉你这是该年的第几天: 3
想得道乘法口诀吗?;4
你想得到杨辉三角吗?;5
你想得到有意思的fibonacci数列吗?;6
退出7
1
请输入人数
6
请输入人名
呃呃
请输入人名
单独
请输入人名
反复
请输入人名
小明
请输入人名
哈哈
请输入人名
啊啊
第1个人的名字:呃呃
第2个人的名字:单独
第3个人的名字:反复
第4个人的名字:小明
第5个人的名字:哈哈
第6个人的名字:啊啊
请输入出圈数字:
4
依次出圈的人是:
小明
单独
呃呃
反复
啊啊
哈哈
今天的日期是: May 10 2024
编译的时间是 11:50:38
请输入游戏密码:
开始出圈游戏:1
解一元二次方程: 2
输入年月日,告诉你这是该年的第几天: 3
想得道乘法口诀吗?;4
你想得到杨辉三角吗?;5
你想得到有意思的fibonacci数列吗?;6
退出7
整体源码:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <windows.h>
int game();
double jie();
int day();
int koujue();
int yang();
int fibonacci();
int switchs();
main()
{
system("color 74");
int code=0;
while(code!=7)
{
switchs();
scanf("%d",&code);
while(code==1)
{
game();
printf("\n");
switchs();
scanf("%d",&code);
}
while(code==2)
{
jie();
printf("\n");
switchs();
scanf("%d",&code);
}
while(code==3)
{
day();
printf("\n");
switchs();
scanf("%d",&code);
}
while(code==4)
{
koujue();
printf("\n");
switchs();
scanf("%d",&code);
}
while(code==5)
{
yang();
printf("\n");
switchs();
scanf("%d",&code);
}
while(code==6)
{
fibonacci();
printf("\n");
switchs();
scanf("%d",&code);
}
}
printf("已结束,若想游戏,请重启页面。\n");
}
int game()
{
int size;
int out; //第out个人出圈。
int outed=0; // 已经出圈outed个人。
printf("请输入人数\n");
scanf("%d",&size);
char peopo[size][10];
int biao[size]; //创建一个数组用来储存出圈人的下标。
for(int x=0;x<size;x++) //给 标[] 数组每一个元素赋值为 -2 .
{
biao[x]=-2;
}
for(int i=0;i<size;i++) //依次获取游戏人名。
{
printf("请输入人名\n");
scanf("%s",peopo[i]);
char ch=getchar();
}
for(int j=1;j<=size;j++) //以此输出游戏人名。
{
printf("第%d个人的名字:",j);
puts(peopo[j-1]);
}
printf("\n");
printf("请输入出圈数字:\n"); //获取第几个人出圈。
scanf("%d",&out); //作为下标使用。
int m=-1;
printf("依次出圈的人是: \n");
for(int i=1;i<=(size*out);i++) //报数。
{
m++;
while(m==size) //当下标大于溢出归零。
{
m=0;
}
for(int k=0;k<=(size-1);k++) //当遇到已经输出过的下标时跳过。
{
while(biao[k]==m)
{
m++;
k=0;
while(m==size) //当下标大于溢出归零。
{
m=0;
}
}
}
while(i%out==0) //当报数到 out 的倍数时输出此时下标对应的人。
{
printf("%s\n",peopo[m]);
outed++; //记录出圈人数。
biao[outed-1]=m; //把已经出圈的人的下标放到数组里。
break;
}
}
}
double jie()
{
printf("请输入一元二次方程 a , b , c ,的值,为你解出 x 的值。\n");
double a=0,b=0,c=0,d;
scanf("%lf",&a);
scanf("%lf",&b);
scanf("%lf",&c);
d=pow(b,2)-4*a*c;
while(d<0)
{
printf("该方程无解\n");
printf("\n");
printf("\n");
break;
}
while(d==0)
{
printf("方程的解是:X1=X2=%lf",(-b)/2*a);
printf("\n");
printf("\n");
break;
}
while(d>0)
{
printf("方程的解是:X1=%lf\nX2=%lf\n",((-b)+sqrt(d))/2*a,((-b)-sqrt(d))/2*a);
printf("\n");
printf("\n");
break;
}
}
int day()
{
int c=0;
while (!c)
{
int year,month,days,sum;
int m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12;
m1=m3=m5=m7=m8=m10=m12=31;
m4=m6=m9=m11=30;
printf("依次输入年,月,日。告诉你这是这一年的第几天:\n");
scanf("%d",&year);
scanf("%d",&month);
scanf("%d",&days);
if(year%4==0) //判断平年还是瑞年,瑞年结果为真,平年为假,并以此判断 2 月份的天数。
{
if(year%100==0)
{
if(year%400==0)
m2=29;
else
m2=28;
}
else
m2=29;
}
else
m2=28;
switch(month) //求该日是一年的第几天。
{
case 1:
sum=days;break;
case 2:
sum=m1+days;break;
case 3:
sum=m1+m2+days;break;
case 4:
sum=m1+m2+m3+days;break;
case 5:
sum=m1+m2+m3+m4+days;break;
case 6:
sum=m1+m2+m3+m4+m5+days;break;
case 7:
sum=m1+m2+m3+m4+m5+m5+days;break;
case 8:
sum=m1+m2+m3+m4+m5+m6+m7+days;break;
case 9:
sum=m1=m2+m3+m4+m5+m6+m7+m8+days;break;
case 10:
sum=m1+m2+m3+m4+m5+m6+m7+m8+m9+days;break;
case 11:
sum=m1+m2+m3+m4+m5+m6+m7+m8+m9+m10+days;break;
case 12:
sum=m1+m2+m3+m4+m5+m6+m7+m8+m9+m10+m11+days;break;
default :
printf("重新输入\n");
}
printf("这是今年的第 %d 天。",sum);
c++;
}
}
int koujue()
{
int a,b,c;
for(a=1;a<=9;a++)
{
for(b=1;b<=9;b++)
{
if(b>a)
continue;
c=a*b;
printf("%d*%d=%-3d",a,b,c);
}
printf("\n");
}
}
int yang()
{
int z;
printf("那么你想要几行杨辉三角呢?");
scanf("%d",&z);
int a[z][z];
for(int i=0;i<=(z-1);i++)
{
for(int j=0;j<=(z-1);j++)
{
if(j==0||i==j)
{
a[i][j]=1;
}
if(j>i)
{
a[i][j]=0;
}
}
}
for(int i=2;i<=(z-1);i++)
{
for(int j=1;j<=i-1;j++)
{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
for(int i=0;i<=(z-1);i++)
{
for(int j=0;j<=i;j++)
{
printf("%5d",a[i][j]);
}
printf("\n");
}
}
int fibonacci()
{
int f;
printf("你想要几行fibonacci数列?");
scanf("%d",&f);
unsigned long long int a=1,b=1,i;
for(i=1;i<=f;i++)
{
printf("%llu\n%llu\n",a,b);
a=a+b;
b=a+b;
}
return(0);
}
int switchs()
{
printf("今天的日期是: %s\n",__DATE__);
printf("编译的时间是 %s\n",__TIME__);
printf("请输入游戏密码:\n");
printf("开始出圈游戏:1\n");
printf("解一元二次方程: 2\n");
printf("输入年月日,告诉你这是该年的第几天: 3\n");
printf("想得道乘法口诀吗?;4\n");
printf("你想得到杨辉三角吗?;5\n");
printf("你想得到有意思的fibonacci数列吗?;6\n");
printf("退出7\n");
}
下课。。。。。