全国信息学奥赛一本通(C++)第五版
第一部分 C++语言
第一章 C++语言入门
第一节 C++语言简介
一、C++语言的特点
1.语言简洁紧凑,使用灵活方便
2.运算符丰富
3.数据结构丰富
4.结构化语言
5.生成的代码质量高
6.可移植性强
二、简单的C++语言程序实例
例 1.1 在屏幕上输出“Hello World!
”。
// 2060_例1.1 计算机输出
/*
【题目描述】
在屏幕上输出“Hello World!”。
*/
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
cout<<"Hello World!"<<endl;
system("pause");
return 0;
}
【说明】
1.注释行:“//”
2.#include
3.using namespace std;
4.int main()
5.cout<<“Hello World!”<<endl;
6.system(“pause”);
7.return 0;
三、C++语言系统的使用
Dev C++是一个可视化集成开发环境。
1.启动 Dev C++
2.新建源程序
3.保存源程序到硬盘
4.编译、运行
5.调试程序
第二节 C++语言程序结构
例 1.2 在梯形中阴影部分面积是150平方厘米,求梯形面积。
// 2061_例1.2 梯形面积
/*
【题目描述】
在梯形中阴影部分面积是150平方厘米,求梯形面积。
*/
#include <iostream>
#include <stdio.h>
//#include <iomanip>
using namespace std;
int main()
{
int up,down;
float h,Area,Area1;
up=15;down=25;
Area1=150;
h=2.0*Area1/up;
Area=(up+down)*h/2.0;
printf("Area = %0.2f\n",Area);
system("pause");
//cout<<setprecision(2)<<fixed<<Area<<endl;
return 0;
}
【说明】
所谓namespace
例 1.3 已知一位小朋友的电影票价是10元,计算x位小朋友的总票价是多少?
// 2062_例1.3 电影票
/*
【题目描述】
已知一位小朋友的电影票价是10元,计算x位小朋友的总票价是多少?
*/
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int x,y;
cin>>x;
y=10 * x;
cout<<x<<" "<<y<<endl;
return 0;
}
【说明】
1.int定义x,y为整型变量
2.cin>>
3.cout<<
【小结】
C++语言程序的结构如下:
(1)变量:先定义再使用;
(2)程序由一个或多个函数组成;函数可理解为一个功能块;
(3)调用库函数,必须将相应头文件包含在程序中;
(4)注释行
(5)语句以分号结束;
(6)适当的缩进;
例 1.4 有一个牧场,牧场上的牧草每天都在匀速生长,这片牧场可供15头牛吃20天,或可供20头牛吃10天,那么,这片牧场每天新生的草量可供几头牛吃1天?
// 2063_例1.4 牛吃牧草
/*
z*consumption = increase
z=increase/consumption
now + a*increase = x*a*consumption
now + b*increase = y*b*consumption
a*increase - b*increase = x*a*consumption - y*b*consumption
increase(a-b) = consumption(x*a - y*b)
increase/consumption = (x*a - y*b)/(a-b)
*/
#include <iostream>
using namespace std;
int main()
{
int a, x, b, y,z;
a=15; x=20; b=20; y=10;
z = (x*a - y*b)/( x - y);
cout<<"牛 = "<<z<<endl;
return 0;
}
例 1.5 给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。
// 1004_字符三角形
/*
【题目描述】
给定一个字符,用它构造一个底边长5个字符,
高3个字符的等腰字符三角形。
*/
#include <iostream>
#include <cstdio>
using namespace std;
/*
int main()
{
char c;
cin>>c;
printf(" %c\n",c);
printf(" %c%c%c\n",c,c,c);
printf("%c%c%c%c%c\n",c,c,c,c,c);
return 0;
}
*/
int main()
{
char a;
cin>>a;
cout<<" "<<a<<endl;
cout<<' '<<a<<a<<a<<endl;
cout<<a<<a<<a<<a<<a<<endl;
return 0;
}
【上机练习】
1. Hello,World!
编写一个能够输出“Hello,World!
”的程序,这个程序常常作为一个初学者接触一门新的编程语言所写的第一个程序,也经常用来测试开发、编译环境是否能够正常工作。
// 1001_Hello,World!
#include <iostream>
using namespace std;
int main()
{
cout<<"Hello,World!";
return 0;
}
2. 输出第二个整数
输入三个整数,整数之间由一个空格分隔,整数是32位有符号整数。把第二个输入的整数输出。
// 1002_输出第二个整数
#include <iostream>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b>>c;
cout<<b<<endl;
return 0;
}
3. 对齐输出
读入三个整数,按每个整数占8个字符的宽度,右对齐输出它们,按照格式要求依次输出三个整数,之间以一个空格分开。
// 1003_对齐输出
/*
【题目描述】
读入三个整数,
按每个整数占8个字符的宽度,右对齐输出它们,
按照格式要求依次输出三个整数,之间以一个空格分开。
*/
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b>>c;
printf("%8d %8d %8d",a,b,c);
return 0;
}
4. 字符三角形
给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。
// 1004_字符三角形
/*
【题目描述】
给定一个字符,用它构造一个底边长5个字符,
高3个字符的等腰字符三角形。
*/
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
char c;
cin>>c;
printf(" %c\n",c);
printf(" %c%c%c\n",c,c,c);
printf("%c%c%c%c%c\n",c,c,c,c,c);
return 0;
}
5. 地球人口承载力估计【小学奥数7653】
假设地球上的新生资源按恒定速度增长。照此测算,地球上现有资源加上新生资源可供x亿人生活a年,或供y亿人生活b年。
为了能够实现可持续发展,避免资源枯竭,地球最多能够养活多少亿人?
// 1005_地球人口承载力估计
/*
z*down = up
z=up/down
now + a*up = x*a*down
now + b*up = y*b*down
a*up - b*up = x*a*down - y*b*down
up(a-b) = down(x*a - y*b)
up/down = (x*a - y*b)/(a-b)
*/
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int a,b,x,y;
double z;
cin>>x>>a>>y>>b;
z = (1.0*x*a - y*b)/(1.0*a-b);
printf("%.2f",z);
return 0;
}
6. 入门测试题目
求两个整数的和。
// 1000_入门测试题目
#include <iostream>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
cout<<a+b;
return 0;
}
第二章 顺序结构程序设计