学习日记——多组案例和质数判定

一、多组案例
1、多组案例的题目用语
在【输入】中说明:一个正整数 n,表示测试案例的数量......
表达的含义:需要循环 n 遍,每遍循环中要输入一组案例,计算后输出结果。
【例 1】A+B=?
【描述】
输出两个整数的和
【输入】
第 1 行是一个正整数 n,表示测试样例的数量。
从第 2~第 n+1 行,每行为一组测试数据,包含两个整数,用空格相隔。
分析:第 1 行的描述说明这是多组案例的题目。第 2~n+1 行,这一共是 n 行,每行一组案
例。题目还说明了输入的格式:两个整数。
【输出】
针对每行测试数据,输出这行两个整数的和,以换行符相隔。
分析:每组案例,要求输出两个整数的和。题目还说明了输出的格式:输出总和后要换
行。
【样例输入】
2
1 2
3 4
分析:样例中 2 表示有 2 组案例,其中第一组案例是 1 和 2,第二组案例是 3 和 4。
【样例输出】
3
7
分析:第一组案例中 1+2=3,第二组案例中 3+4=7。
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
while(n--)
{
int a, b;
cin >> a >> b;
cout << a + b << endl;
}
return 0;
}
分析:while(n--)表示循环 n 次,功能等价于 for (int i = 0; i < n; i++)
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n;
cin >> n;
while(n--)
{
double a;
cin >> a;
cout << abs(a) << endl;
}
return 0;
}
说明:abs 是绝对值函数
分析:多组样例的题目中,开头几乎都是 int n; cin>>n; while(n--){...},每组案例的处理在
大括号里写。

注:定义一个布尔型变量flag并初始化为真(true)。

bool flag这是编程中一种常用的标志变量。举例如下:
如果要在一堆元素中选择一个关键字值最小的,逐个判断,这个时候我们可以用flag作为一个标志变量。当你判断每一个元素的时候,先将flag = 1;发现其并不是最小的,那么将它置为0。

二、数组应用:质数判定
质数:如果一个大于 1 的正整数,只能被 1 和自身整除,则称为质数,又叫素数。
【例 3】输入一个正整数,如果是质数则输出 Yes,否则输出 No。
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int a;
cin >> a;
bool f = true;
if (a < 2)
{
f = false;
}
for (int i = 2; i <= sqrt(a); i++)
{
if (a % i == 0)
{
f = false;
break;
}
}
if (f)
{
cout << "Yes";
}
else
{
cout << "No";
}
return 0;
}
说明:f 是一个 bool 类型变量,标志 a 是否为质数。开始的时候假设 a 是质数,如果 a 小于
2,则 a 肯定不是质数,f 改为 false;如果 a 能被 2 到√𝑎之间任意一个整数整除,则 a 肯定
不是质数,f 改为 false。如果最终 f 仍为 true,说明 a 是质数

三、知识补遗

1、long long int

一种长整数类型,占 8 个字节空间,可以表示大约±9 × 10 18范围内的整数数据。当 int 类型无法存放时,可以考虑 long long int。

【例 4】输入 10 个整数,输出这些整数的乘积(保证在 long long int 范围内)

#include<iostream>
using namespace std;
int main()
{
long long int mul = 1;
for (int i = 0; i < 10; i++)
{
int a;
cin >> a;
mul *= a;
}
cout << mul;
return 0;
}

2、unsigned

用于修饰 int、char 等类型,表示无符号数,即二进制编码的最高位 1 不表示负数。

char 的范围是-128~127,unsigned char 的范围是 0~255;

int 的范围是−2 31~2 31 − 1, unsigned int 的范围是0~2^32 − 2^31。

3、溢出

当数值超出一种变量类型的存储范围时,发生溢出现象。

【例 5】以下代码发生了溢出现象,a 的取值范围是 0~255,a--后的 a 值-1 超出了范围, 从-1 变到了取值范围另一端的 255。故输出结果是 255。

#include<iostream>
using namespace std;
int main()
{
unsigned char a = 0;
a--;
cout << (int)a;
return 0;
}

4、const(常数,常量)

用于修饰 int、char 等类型,表示常量,即不可改变的值。

常量必须在定义时初始化, 随后再也不可以修改常量的值。

#include<iostream>
using namespace std;
int main()
{
const double pi = 3.14;
int r;
cin >> r;
cout << pi * r * r;
return 0;
}

5、转义符

有些字符无法直接打出,需要通过转义符的形式表示。常见的转义符有:

 6、三目运算符

由运算符?和:,以及三个操作数凑成的一个运算符。

#include<iostream>
using namespace std;
int main()
{
int a, b, c;
cin >> a >> b;
c = a > b ? a : b;
cout << c;
return 0;
}
代码中右值 a > b ? a : b 的意思是,如果 a>b 为 true,那么该值为:前的 a;如果 a>b
为 false,那么该值为:后的 b。故 c = a > b ? a : b 整句话的意思是把 a 和 b 中的较大值赋
给 c。这句话等价于:
if (a > b)
{
c = a;
}
else
{
c = b;
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值