CSDN编程竞赛-第六期(上)

                        CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16

努力是为了让自己不平庸:

前言/背景

四道题都是相关字符串的,思路很好想,但是需要熟练使用,不能有小错误。

参赛流程

活动时间:9月8日-21日(竞赛时间截止9.18)

竞赛考试时间:9月18日 8:30-11:00(作答时间2小时)

获奖名单公布:9月23日,在本页面公布获奖名单链接

获奖用户信息收集:9月27日

奖品发放:9月30日后7个工作日内

参赛经历

这是我的第一次竞赛,在今天早早的就起来了,提前洗漱完毕,等待竞赛开始就直接进入

一、严查枪火

题目

X国最近开始严管枪火。 像是“ak”,“m4a1”,“skr”。都是明令禁止的。 现在小Q查获了一批违禁物品其中部分是枪支。 小Q想知道自己需要按照私藏枪火来关押多少人。 (只有以上三种枪被视为违法)

解题思路

先定义一个变量用于用于控制输入多少字符串,一个for循环将输入的字符串存入定义好的数组里,再用枚举法判断每一个字符串是否满足为“ak”或“m4a1”或“skr”,满足则计数加1,最后输出计数

代码

#include "stdio.h"
#include "string.h"

int main() {
	int n, count;
	scanf("%d", &n);
	char str[n][10];

	for (int i = 0; i < n; i++) {
		scanf("%s", &str[i]);
	}

	for (int j = 0; j < n; j++) {
		if (strcmp(str[j], "ak") == 0 || strcmp(str[j], "m4a1") == 0 || strcmp(str[j], "skr") == 0) {
			count++;
		}
	}

	printf("%d", count);
	return 0;
}

运行结果

CSDN编程竞赛-第六期(上)_第1张图片

二、鬼画符门

题目

鬼画符门,每年都会统计自己宗门鬼画符消耗的数量,往年一直是大师兄管理, 但是这次鬼艺接手了, 你能帮鬼艺写一个 程序统计每年消耗数量最多的鬼画符吗?

解题思路

本题考查的是找出数组中出现最多的元素并输出,可以用两个for循环计算每个元素在数组的个数然后放进一个数组里,对它们进行比大小,从而找到出现最多的索引。

代码

#include "stdio.h"
#include "string.h"

int main() {
	int n;
	scanf("%d", &n);
	char str[n][10];
	int count[n];

	for (int i = 0; i < n; i++) {
		scanf("%s", &str[i]);
	}

	for (int j = 0; j < n; j++) {
		for (int k = 0; k < n; k++) {
			if (strcmp(str[k], str[j]) == 0) {
				count[j]++;
			}
		}
	}

	int max = count[0];
	int m;

	for (int p = 0; p < n; p++) {
		if (max < count[p]) {
			max = count[p];
			m = p;
		}
	}

	printf("\n%s", str[m]);
	return 0;
}

执行结果

CSDN编程竞赛-第六期(上)_第2张图片

经验心得

要多多练习,多多刷题,熟练的使用算法。

总结

可以先看输入,输出实例可以快速理解题意,缩短做题时间。

你可能感兴趣的:(CSDN竞赛,算法,c)