信息学奥赛一本通(C++版)第一部分 C++语言 第二章 顺序结构程序设计

本博客详细介绍了信息学奥赛中C++语言第一部分的内容,重点聚焦于顺序结构程序设计。内容涵盖运算符和表达式、常量和变量、标准数据类型以及数据输入输出的实例,通过多个典型题目解析,帮助读者掌握基本的C++编程技巧和算法应用。

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

第二章 顺序结构程序设计

第一节 运算符和表达式

T1006 : A+B问题

【题目描述】

  大部分的在线题库,都会将A+BA+BA+B问题作为第一题,以帮助新手熟悉平台的使用方法。

  A+BA+BA+B问题的题目描述如下:给定两个整数AAABBB,输出A+BA+BA+B的值。保证A,BA,BA,B及结果均在整型范围内。现在请你解决这一问题。

【输入】

  一行,包含两个整数A,BA,BA,B,中间用单个空格隔开。AAABBB均在整型范围内。

【输出】

  一个整数,即A+BA+BA+B的值。保证结果在整型范围内。

【输入样例】
1 2
【输出样例】
3
【答案&代码】
#include<stdio.h>/*标准输入输出头文件*/
int main(void){
   
   
	int a,b;/*定义a,b两个变量*/
	scanf("%d%d",&a,&b);/*输入两个整数,即a,b的值*/
	printf("%d",a+b);/*输出a+b的值*/
	return 0;/*退出主函数*/
}

T1007 : 计算(a+b)×c的值

【题目描述】

  给定333个整数a,b,ca,b,ca,b,c,计算表达式(a+b)×c(a+b)×c(a+b)×c的值。

【输入】

  输入仅一行,包括三个整数a,b,ca,b,ca,b,c, 数与数之间以一个空格分开。(-10,000&lt;a,b,c&lt;10,000)(-10,000&lt;a,b,c&lt;10,000)(10,000<a,b,c<10,000)

【输出】

  输出一行,即表达式的值。

【输入样例】
2 3 5
【输出样例】
25
【答案&代码】
#include<stdio.h>
int main(void){
   
   
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	printf("%d",(a+b)*c);
	return 0;
}

T1008 : 计算(a+b)/c的值

【题目描述】

  给定333个整数a,b,ca,b,ca,b,c,计算表达式(a+b)÷c(a+b)÷c(a+b)÷c的值。

【输入】

  输入仅一行,包括三个整数a,b,ca,b,ca,b,c, 数与数之间以一个空格分开。(-10,000&lt;a,b,c&lt;10,000,c≠0)(-10,000&lt;a,b,c&lt;10,000,c≠0)(10,000<a,b,c<10,000,c̸=0)

【输出】

  输出一行,即表达式的值。

【输入样例】
1 1 3
【输出样例】
0
【答案&代码】
#include<stdio.h>
int main(void){
   
   
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	printf("%d",(a+b)/c);
	return 0;
}

T1009 : 带余除法

【题目描述】

  给定被除数和除数,求整数商及余数。此题中请使用默认的整除和取余运算,无需对结果进行任何特殊处理。

【输入】

  一行,包含两个整数,依次为被除数和除数(除数非零),中间用一个空格隔开。

【输出】

  一行,包含两个整数,依次为整数商和余数,中间用一个空格隔开。

【输入样例】
10 3
【输出样例】
3 1
【答案&代码】
#include<stdio.h>
int main(void){
   
   
	int a,b;
	scanf("%d%d",&a,&b);
	printf("%d %d",a/b,a%b);
	return 0;
}

T1010 : 计算分数的浮点数值

【题目描述】

  两个整数aaabbb分别作为分子和分母,既分数ab\frac{a}{b}ba,求它的浮点数值(双精度浮点数,保留小数点后999位)。

【输入】

  输入仅一行,包括两个整数aaabbb

【输出】

  输出也仅一行,分数ab\frac{a}{b}ba的浮点数值(双精度浮点数,保留小数点后999位)。

【输入样例】
5 7
【输出样例】
0.714285714
【答案&代码】
#include<stdio.h>
int main(void){
   
   
	double a,b;
	scanf("%lf%lf",&a,&b);
	printf("%.9f",a/b);
	return 0;
}

第二节 常量和变量

T1011 : 甲流疫情死亡率

【题目描述】

  甲流并不可怕,在中国,它的死亡率并不是很高。请根据截止200920092009121212222222日各省报告的甲流确诊数和死亡数,计算甲流在各省的死亡率。

【输入】

  输入仅一行,有两个整数,第一个为确诊数,第二个为死亡数。

【输出】

  输出仅一行,甲流死亡率,以百分数形式输出,精确到小数点后333位。

【输入样例】
10433 60
【输出样例】
0.575%
【答案&代码】
#include<stdio.h>
int main(void){
   
   
	double a,b;
	scanf("%lf%lf",&a,&b);
	printf("%.3f%%",b/a*100);
	return 0;
}

T1012 : 计算多项式的值

【题目描述】

  对于多项式f(x)=ax3+bx2+cx+df(x)=ax^{3}+bx^{2}+cx+df(x)=ax3+bx

### C++数据结构在CSP与信奥赛中的学习路径 在CSP(中国计算机软件专业水平考试)和信奥赛信息学奥林匹克竞赛)中,C++作为一种高效且功能强大的编程语言,被广泛应用于算法与数据结构的学习。以下是关于C++数据结构学习的重点内容及推荐资料。 #### 1. 数据结构基础 数据结构是组织和存储数据的方式,选择合适的数据结构可以显著提高程序的性能和效率[^2]。以下是一些常见的线性数据结构及其特点: - **数组**:一种线性数据结构,由相同类型的元素组成,内存中连续存储。可以过下标实现随机访问,时间复杂度为O(1)。 - **向量(`std::vector`)**:动态数组,支持动态扩展大小,适合需要频繁插入或删除元素的场景。 - **链表(`std::list`)**:非连续存储的线性结构,适合频繁插入和删除操作,但不支持随机访问。 #### 2. 常用数据结构详解 除了线性数据结构外,还有一些高级数据结构在CSP和信奥赛中非常重要: - **栈(`std::stack`)**:后进先出(LIFO)的数据结构,常用于括号匹配、深度优先搜索等问题。 - **队列(`std::queue`)**:先进先出(FIFO)的数据结构,适用于广度优先搜索(BFS)等场景。 - **优先队列(`std::priority_queue`)**:基于堆的实现,能够快速获取最大或最小值,常用于Dijkstra算法等。 - **集合(`std::set` 和 `std::unordered_set`)**:用于存储唯一元素,分别基于红黑树和哈希表实现。 - **映射(`std::map` 和 `std::unordered_map`)**:键值对存储结构,分别基于红黑树和哈希表实现。 #### 3. 学习资料推荐 以下是一些针对CSP和信奥赛C++数据结构学习资料: - **书籍**: - 《算法竞赛入门经典》(刘汝佳著):详细介绍了C++在算法竞赛中的应用,涵盖基本数据结构和常见算法。 - 《挑战程序设计竞赛》(秋叶拓哉等著):深入讲解了各种数据结构及其在实际问题中的应用。 - **在线资源**: - [OI Wiki](https://oi-wiki.org/):一个专注于信息学竞赛的开源知识库,涵盖了数据结构、算法等内容。 - [Luogu(洛谷)](https://www.luogu.com.cn/):提供丰富的练习和教程,适合初学者到高级选手的全面训练。 - **视频课程**: - B站上的信奥赛相关课程:许多UP主分享了高质量的C++数据结构和算法教学视频。 - 牛客网竞赛课程:提供了系统化的学习路径,适合准备CSP-J/S的选手。 #### 4. 示例代码 以下是一个简单的`std::vector`使用示例: ```cpp #include <iostream> #include <vector> int main() { std::vector<int> vec; vec.push_back(10); // 添加元素 vec.push_back(20); vec.push_back(30); for (int i = 0; i < vec.size(); ++i) { std::cout << vec[i] << " "; // 遍历输出 } return 0; } ``` #### 5. 总结 学习C++数据结构时,应注重理论与实践相结合。过阅读经典书籍、利用在线资源以及参与竞赛平台的练习,可以逐步掌握各类数据结构的应用技巧[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值