2019年CVTE 嵌入式软件 秋招笔试 编程题目

编程题目1:

统计出一个字符串每种字母出现的次数,并且打印出各字符对应的次数。注意:要求时间复杂度为O(n)。

举例如下:

输入字符串:“Hello!”

输出打印如下:

H:1

e:1

l:2

o:1

!:1

代码示例:利用ASCii吗,搞个128数组(或者搞个可见字符数组),每来一个对应加1。

 

 

编程题目2:

6个人摇骰子,各自的编号是1、2、3、4、5、6,没人初始金币是10,游戏规则如下:

①根据骰子的结果确认winner,比如:骰子结果是1,那么“一号选手”是winner,骰子结果是2,那么“2号选手”是winner;

②如果连续同一个人是winner,那么独居金额翻倍。

比如:第一次骰子结果是3,那么其他所有人需要给“三号选手”1元,加入第二轮骰子结果依然是3,那么每人需要给“三号选手”2元;连续三次骰子结果是3,则是4元;以此类推;

③如果非连续同一个人是winner,那么赌局金额重新回到1元,比如:骰子连续两轮结果是3,但是第三轮结果是4,那么第三轮赌局金额重新回到1元,

④如果金钱小于等于0元就出局。

要求:请编写代码模拟游戏过程,输出每一局每个人的剩余金额,并输出第一个人出局人的编号,可以使用rand()函数来输出随机整数。

代码示例: 

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

int main()
{
	int	dat = 0;           //本局骰子
	int dat_before = -1;   //上局骰子
	int i;
	int k=1;    //起始赌金
	int money[6]={10,10,10,10,10,10};
	srand((unsigned)time(NULL));     //初始化随机数产生器
	while(1)
	{
        printf("\n-----------------------------------\n");
        for(i=0;i<=5;i++)       //检查余额
        {
                if(money[i]<=0)  //其中一位余额不足
                {
                    printf("编号:%d,金额:%d\n",i+1,money[i]);
                    printf("游戏结束");
                        return -1;   //游戏结束
                }
        }

        dat=rand()%6+1;    //产生随机数(1~6)
        if(dat == dat_before)    //比较骰子,赌金是否翻倍
        {
            k*=2;
            printf("%d号连胜,赌金翻倍 !!\n",dat);
        }
        else
            k =1;

        printf("赌局金额 : %d\n",k);
        printf("本局胜者 :%d\n",dat);

        for(i=0;i<=5;i++)       //支付罚金
        {

                if(i == (dat-1))
                {
                    money[dat-1]=k*5+money[dat-1];//编号为随机数的人将钱收入囊中
                    printf("编号:%d,金额:%d (本局胜者)\n",dat,money[dat-1]);
                }
                else
                {
                    money[i]-=k;  //每一位输的给出罚金
                    printf("编号:%d,金额:%d\n",i+1,money[i]);
                }
        }

        dat_before = dat;    //记住上局的骰子
	}

}

运行示例 :


-----------------------------------
赌局金额 : 1
本局胜者 :4
编号:1,金额:9
编号:2,金额:9
编号:3,金额:9
编号:4,金额:15 (本局胜者)
编号:5,金额:9
编号:6,金额:9

-----------------------------------
赌局金额 : 1
本局胜者 :6
编号:1,金额:8
编号:2,金额:8
编号:3,金额:8
编号:4,金额:14
编号:5,金额:8
编号:6,金额:14 (本局胜者)

-----------------------------------
赌局金额 : 1
本局胜者 :1
编号:1,金额:13 (本局胜者)
编号:2,金额:7
编号:3,金额:7
编号:4,金额:13
编号:5,金额:7
编号:6,金额:13

-----------------------------------
1号连胜,赌金翻倍 !!
赌局金额 : 2
本局胜者 :1
编号:1,金额:23 (本局胜者)
编号:2,金额:5
编号:3,金额:5
编号:4,金额:11
编号:5,金额:5
编号:6,金额:11

-----------------------------------
赌局金额 : 1
本局胜者 :4
编号:1,金额:22
编号:2,金额:4
编号:3,金额:4
编号:4,金额:16 (本局胜者)
编号:5,金额:4
编号:6,金额:10

-----------------------------------
赌局金额 : 1
本局胜者 :1
编号:1,金额:27 (本局胜者)
编号:2,金额:3
编号:3,金额:3
编号:4,金额:15
编号:5,金额:3
编号:6,金额:9

-----------------------------------
赌局金额 : 1
本局胜者 :5
编号:1,金额:26
编号:2,金额:2
编号:3,金额:2
编号:4,金额:14
编号:5,金额:8 (本局胜者)
编号:6,金额:8

-----------------------------------
赌局金额 : 1
本局胜者 :2
编号:1,金额:25
编号:2,金额:7 (本局胜者)
编号:3,金额:1
编号:4,金额:13
编号:5,金额:7
编号:6,金额:7

-----------------------------------
赌局金额 : 1
本局胜者 :4
编号:1,金额:24
编号:2,金额:6
编号:3,金额:0
编号:4,金额:18 (本局胜者)
编号:5,金额:6
编号:6,金额:6

-----------------------------------
编号:3,金额:0
游戏结束
Process returned -1 (0xFFFFFFFF)   execution time : 0.124 s
Press any key to continue.

猜你喜欢

转载自blog.csdn.net/weixin_41939983/article/details/108196557
今日推荐