月末考核复习 国庆题三

总结:国庆还是下手轻了 基本也还是熟悉语言环境

国庆题三

一、WHW刷题

WHW学长是一个非常重视课内学习的学长,他每天都会刷题,一个星期中,他周一到周五会刷300题,周六周日时间充裕,会刷500题。

 从星期n开始算(算星期n),经过m天后,你想算算一下他从第x天到第y天内刷了多少题,但是不好意思直接问他,聪明的你写了一个程序轻松算出了他写了多少题。

 数值:n(1~7),m(m < 10000),x ,y同m。

输入

5 3 1 4

1 7 2 6

7 1 1 2

样例输入 
1 9999 1 9999
输出

1600

1700

800

样例输出 
3570900

代码实现 

int main()
{
	int n = 0;//起源星期
	int m = 0;//边界 没用
	int x = 0;//起始星期
	int y = 0;//结束星期
	int temp = 0;
	int weekday = 0;//记录工作日天数
	int weekend = 0;//记录周末天数
	scanf("%d%d%d%d", &n, &m, &x, &y);
	for (int i = n + x - 1; i <= n + y - 1; i++)
	{
		temp = i % 7;//防止超过7
		if (1 <= temp && temp <= 5)
		{
			weekday++;
		}
		else
		{
			weekend++;
		}
	}
	int total = 0;
	total = 300 * weekday + 500 * weekend;
	printf("%d", total);
	return 0;
}

经验总结

不要被题目吓到 先动手试下。

二、坏种造车(没做出来)

启明星智能组打比赛时使用的三楼实验室有很多A4988电机驱动,但是有些电机驱动由于内部结构损坏,芯片逻辑门烧毁而无法使用,我们称之为坏种。

为了筹备工训赛,LHK学长使用V个A4988作为机械臂的驱动,V我们称之为转化属性,也就是说V个A4988可以满足一整台工程机器人的使用需求,不满V个A4988驱动显然造不出一台机器人。 现在实验室有N次比赛记录,其中包含两个数据A和B,A表示此次比赛实验室能找到的所有A4988(个),B表示最终转化的机器人数量(台),实验结果显示,这批A个A4988驱动中有m都是坏种(m数值范围:0~0.99)。

每次比赛是独立的,所以每次比赛中未使用完的电机驱动不会留到下一次比赛。 根据这N次比赛记录,请你猜测一下V转化属性是多少? 题目保证评测数据不存在无解的情况。

输入

第一行两个数:N m

 //表示比赛的次数,m是坏种率 

接下来输入N行,每行两个整数A,B 含义如题目表述所示

3 0.5

75 3
53 2
59 2

 样例输入 
3 0.5
75 3
53 2
59 2

输出

输出两个整数,分别表示 V (转化属性)可能的最小值和最大值,中间用空格分开。

10 12

 样例输出 
10 12

三、学长奖励(寻找包含x的数和x的约数)

智能组今年来了16个新同学,学长们想用奖励的方式来促进同学们积极学习,吸收知识,结果,国庆节期间他们都很认真地完成了学长们出的国庆综合测试题,每一个人都很优秀,这可让学长们犯了难。

CQL学长很喜欢“3”这个数字,于是他想要这次要把奖励发给所有和“3”有关的同学,下一次再奖励其他所有同学。但是MKK学长很喜欢“4”,而MJZ学长很喜欢“6”,大家意见不同。

ZC学长为了解决这个困扰所以向你请求帮助,聪明的你写了一个完美的C语言程序解决了他的困难,为了程序功能更有可移植性,让更多学长都喜欢使用,你直接写出了:在n个人中,输出号码可以被m整除的,和号码数中包含m的所有的成员号码。

注意:90 91 92 93 99 这些都包含9
119 191 911 也都包含9

题干本意就是让你找出从从1到某个数之间能被x整除或者包含x的所有数而已

输入

两个整数,n,m

表示输入为在n个人中,选中可被m整除和号码数含有m的号码。数据不大,int足够满足。

例如:16 3

样例输入 
16 3
输出

一行号码数,中间带有空格,例如: 

3 6 9 12 13 15

样例输出 
3 6 9 12 13 15 

代码实现 

int bao(int x, int y)//寻找包含x的数字
 {
	while (x > 0) //逐位寻找
{
		if (x % 10 == y) {
			return 1;
		}
		x /= 10;
	}
	return 0;
}
int main()
{
	int n, x;
	int i;
	scanf("%d%d", &n, &x);

	for (i = 1; i <= n; i++) {
		if (i % x == 0 || bao(i, x)) {
			printf("%d ", i);
		}
	}

	return 0;
}

经验总结

熟悉了模的运用

四、串口数据(没做出来)

LX学姐在使用STM32打比赛的时候最常用的通信方式就是串口通信,一般我们发送的数据包结构是:数据头@+数据内容+数据尾##。 

例如:@01,111,111,222,222,333,333##

 LX学姐使用@后面的01来代表任务号,例如01就是需要读取111,111上代表的目的点坐标值,02就是读取222,222上的坐标值,03以此类推。然而在实际应用里,中断收到的数据包并不是归整有序的,而是很多段数据包在一起的集合。假如在20ms内,中断收到了M个字符类型的数据包(M<=500),例如以下这段数据:

...1,222,222,333,333##@01,111,111,222,222,333,333##@02,111,111,222,222,333,333##@03,111,111,222...

LX学姐想请你帮帮她,将数据包里的数据分析整合出来。

只收集完整的数据包,没有数据头和数据尾的数据包不作处理。

输入

,222,222,333,333##@01,111,111,222,222,333,333##@02,122,113,222,222,333,333##@02,111,111,321,123,333,333##@03,111,111,222,22

样例输入 
,222,222,333,333##@01,111,111,222,222,333,333##@02,122,113,222,222,333,333##@02,111,111,321,123,333,333##@03,111,111,222,22
输出

01:

111,111 

02:

222,222

321,123

03:

样例输出 
01:
111,111

02:
222,222
321,123

03:

五、扫雷兵王(没做出来) 

智能组五楼的柜子里有很多电子元器件,工作室的柜子大小是n*m,但是顽皮的LZB学长和TZQ学长悄悄放了几个电源反接的电容到某些格子中,等你拉开格子就会合上开关,BOOM!~~

反接电容是Q,如果没有则是O,为了避免实验室发生意外,请你写一套程序:

当有人选中含有反接电容的柜子的时候,程序会输出“Q!”警告。

当选中附近3*3范围内含有反接电容的柜子的时候,会输出“!”作为提醒。

输入:

第一个输入是柜子大小n m的值

第二个输入是炸弹的数量V

第三组输入是炸弹的坐标x y

第四组输入是要准备的柜子坐标x0 y0

输出:

只有一个输出Q!或者是!

输入

5 5

2

0 2

0 4

1 3

样例输入 
5 5
1
3 3
0 0
输出

!

样例输出 
O

六、整理开发板(字母排序) 

PJY学姐最近购买了一大批开发板,可能的型号有26种(A~Z),她想请你帮忙整理一下,从A~Z的顺序依次有序排列在桌上。

当然,有些型号的开发板不止一个,有些型号的开发板并没有购买。

简单的排序问题

输入

ZXCVBSDFGHWERTYU

ZZZZZZZZZZZZZZZZZZZZA

FGYUIKJBVFTYUIOKJIJ

样例输入 
ZXCVBSDFGHWERTYU
ZZZZZZZZZZZZZZZZZZZZA
FGYUIKJBVFTYUIOKJIJ
输出

BCDEFGHRSTUVWXYZ

AZZZZZZZZZZZZZZZZZZZZ

BFFGIIIJJJKKOTUUVYY

样例输出 
BCDEFGHRSTUVWXYZ
AZZZZZZZZZZZZZZZZZZZZ
BFFGIIIJJJKKOTUUVYY

代码实现 

#include <string.h>
void biaopai(char a[]) {
	char b[26] = { 0 };
	for (int i = 0; i < strlen(a); i++) {
		if (a[i] >= 'A' && a[i] <= 'Z') {
			b[a[i] - 'A']++;//ascll码错位标记
		}
	}
	for (int i = 0; i < 26; i++) {//第i个标记位
		for (int j = 0; j < b[i]; j++) {//有j次标记
			printf("%c", 'A' + i);
		}
	}
	putchar('\n');
}
int main()
{
	char a[100];
	int i = 0;
	while (gets_s(a))
		biaopai(a);
	return 0;
}

经验总结

利用ascll错位标记(指针偏移的思想) 排序不一定就是排序 还可以是重现

七、斐波那契数列求和

启明星招新的时候,PJY学姐出了一道题是这样的:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前n项之和。

现在LX学姐想请你帮他整理一下这个编程题的标准答案,希望你不要让她失望*~*

输出只保留两位小数

输入

20

样例输入 
20
输出

32.66

样例输出 
32.66

代码实现 

int main()
{
    int N;
    double n = 2, m = 1, sum = 0, t;
    int i;
    scanf("%d", &N);
    for (i = 1; i <= N; i++)
    {
        sum = sum + n / m;
        t = n;
        n = m + n;
        m = t;
    }
    printf("%.2f", sum);
}

经验总结

真没啥 就是找到数学规律的简单模拟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值