天梯赛L1常用知识(自我复习使用)

这篇博客介绍了C++中实现欧几里得算法求最大公约数的函数,以及如何初始化数组、结构体。同时,讲解了素数判断、循环输入的处理方法,以及字符串查找、删除和输出的相关函数。涉及到的知识点包括标准库函数如memset、结构体初始化、字符串处理等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

欧几里得求约数

int gcd(int a, int b)
{
	return b ? gcd(b, a%b) : a;
}

初始化数组或字符串

memset(a, 0, sizeof(a));

初始化结构体

struct per
{
	int node;
	int money;
	int cnt;
}a[11000];
for (int i = 1; i <= n; i++) {
	a[i] = per{ i,0,0 };
}

素数筛

bool judge(int n)
{
    if(n<2)
    {
    	return false;
    }
    for(int i=2;i<=sqrt(n);i++)
        if(n%i==0)
        {
            return false;
            break;
        }
    return true;
}

如何卡循环输入

	while (getline(cin, a), a != ',') {//输入为','时截至

	}
	while (getline(cin, a)) {//没有输入时截至

	}

查找某个字符串的位置,返回字符下表,否则返回-1

int id=s.find("chi1 huo3 guo1");

字符串删除

1erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符

输出数据

	int a = 5;
	float b = 10;
	printf("%02d\n", a);
	printf("%.2f\n", b);
	return 0

正代表着左对齐,2卡的宽度是2,0代表用0去补位。
.2代表保留小数点后两位。
常见字符串函数

int ispunct(int c);
	//c是一个标点符号字符,则该函数返回非零值,否则返回0
	string strstr(string a, string b);
	//返回一个指针,指向string2在string1中出现的位置,否则返回NULL
	int tolower(int c);
	//将字符转化为小写字母,非字母字符不做处理,可以直接接字符串
	//处理的阿斯克码值
	char *strncpy(char *destinin, char *source, int maxlen);
	//destinin:表示赋值的目标字符数组
	//source:表示复制的源字符数组
	//maxlen:表示复制的字符串长度
	char *strcat(char *dest, const char *src);
	//把src所指向的字符串复制到dest所指向的字符串后面
	//(删掉*dest原来末尾的“\0”。要保证*dest足够长,以容纳被复制进来的*src
	//*src中原来的字符不变,返回指向dest的指针。L

return code;

关于2022年CCF天梯赛L1的具体试题及解析,目前并未在所提供的引用材料中找到相关内容。然而,可以推测的是,作为一项面向高校学生的程序设计竞赛,天梯赛通常会涉及基础算法、数据结构以及编程能力的考察[^1]。 以下是基于以往经验和类似赛事的特点所总结的内容: ### 天梯赛L1可能覆盖的知识点 #### 1. **基本输入输出** L1级别的题目往往注重考查选手对简单输入输出的理解和实现能力。例如: ```python n = int(input()) print(n * 2) ``` #### 2. **条件判断与分支语句** 题目可能会要求根据特定条件返回不同的结果,这需要掌握`if-else`语句的应用。 ```c++ #include <iostream> using namespace std; int main() { int a; cin >> a; if (a % 2 == 0) cout << "Even"; else cout << "Odd"; return 0; } ``` #### 3. **循环控制** 循环是解决重复计算问题的核心工具之一,在L1级别中常见于求和、累乘等问题。 ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int sum = 0, num = sc.nextInt(); while(num != 0){ sum += num; num = sc.nextInt(); } System.out.println(sum); } } ``` #### 4. **数组操作** 数组是最常用的数据存储形式之一,理解如何初始化、遍历和修改数组对于解答此类问题是必要的。 #### 5. **字符串处理** 字符串的操作也是常见的考点,包括但不限于子串提取、字符替换等。 虽然具体的2022年天梯赛L1试题未被提及,但上述知识点几乎涵盖了该等级的主要测试范围[^2]。 ### 解析示例 假设一道典型的L1级题目如下:“给定一个整数序列,请找出其中的最大值。”其解法可表示为: ```cpp #include <bits/stdc++.h> using namespace std; int main(){ vector<int> nums; int temp; while(cin>>temp && temp!=-1){ // 使用-1作为结束标志 nums.push_back(temp); } sort(nums.begin(),nums.end()); cout<<nums.back(); // 输出最大值 } ``` 此代码片段展示了标准库函数的应用,体现了简洁高效的编码风格[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值