我是靠谱客的博主 舒服河马,最近开发中收集的这篇文章主要介绍Linux_C练习:设计一个洗牌发牌的程序;(随机产生52个不同的数),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main()
{
	srand((unsigned)(time(NULL)));
	int num;
	int i, j;
	int a[52] = {0};//存放牌
	int flag;//标志位,用于判断前面发的牌是否存在与本次发牌相同的
	int index = 0;//对已发放的牌计数
	int count = 0;//换行显示计数
	/*----------开始发牌------------*/
	for(i = 1; ; ++i)
	{
		flag = 0;
		num = rand()%52 + 1;
		//判断发牌与之前发牌是否相同
		for(j = 0; j < 52; ++j)
		{
			if(num == a[j])
			{
				flag = 1;
	
			}

		}
	//如果发牌达到52张则退出循环
		if(index > 51)
		{
			break;
		}
	//如果相同,跳出本次循环
		if(flag == 1 )
		{
			continue;
		}
	//将牌放到数组中	
		a[index] = num;
		index++;
	//判断随即生成的52以内的数对应的牌
		if(num > 0 && num < 14 )
		{
			if(num > 1 && num <11)
			{
				printf("红桃%dt",num);
		
			}
			else
			{
				switch (num)
				{
					case 11:printf("红桃%st","J");
							break;
					case 12:printf("红桃%st","Q");
							break;
					case 13:printf("红桃%st","K");
							break;
					case 1 :printf("红桃%st","A");
							break;
					default: printf("111t");
							break;
				}
			}
		}
		if(num > 13 && num < 27 )
		{
			num = num - 13;
			if(num > 1 && num < 11)
			{
				printf("红方%dt",num );
			}
			else
			{
				switch (num)
				{
					case 11:printf("红方%st","J");
							break;
					case 12:printf("红方%st","Q");
							break;
					case 13:printf("红方%st","K");
							break;
					case 1 :printf("红方%st","A");
							break;
					default: printf("111t");
							break;
				}
			}
		}
		if(num > 26 && num < 40 )
		{
			num = num - 26;
			if(num > 1 && num < 11)
			{
				printf("黑桃%dt",num);
			}
			else
			{
				switch (num)
				{
					case 11:printf("黑桃%st","J");
							break;
					case 12:printf("黑桃%st","Q");
							break;
					case 13:printf("黑桃%st","K");
							break;
					case 1 :printf("黑桃%st","A");
							break;
					default: printf("111t");
							break;
				}
			}
		}	
		if(num > 39 && num < 53 )
		{
			num = num - 39;
			if(num > 1 && num < 11)
			{
				printf("梅花%dt",num);
			}
			else
			{
				switch (num)
				{
					case 11:printf("梅花%st","J");
							break;
					case 12:printf("梅花%st","Q");
							break;
					case 13:printf("梅花%st","K");
							break;
					case 1 :printf("梅花%st","A");
							break;
					default: printf("111t");
							break;
				}
			}
		}
		//换行
		count ++;
        if(count == 13)
		{
			count = 0;
			printf("n");
		}
	
	}
	printf("n");
	return 0;
}

刚学c程序不久,刚看到这个题目觉得很简单.但是实际操作的时候又有点的烦.关键是在判断何时跳出循环,发牌结束.刚开始我将发牌结束的条件设为index < 52发现一直 不对.后来发现应该改为index < 51.就这个小问题让我纠结的好半天,-_-||

最后

以上就是舒服河马为你收集整理的Linux_C练习:设计一个洗牌发牌的程序;(随机产生52个不同的数)的全部内容,希望文章能够帮你解决Linux_C练习:设计一个洗牌发牌的程序;(随机产生52个不同的数)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部