C语言出圈游戏(汉字人名)C语言课程设计

        宝子们,当你们来到这里,是不是已经开始做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");
}

        下课。。。。。

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值