eofbit和failbit

最近和基友thinszx一起刷题的时候,发现了航电OJ上的一些写法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

#include <iostream>

int main() {

using namespace std;

int a, b;

while (cin >> a >> b) {

cout << a + b << endl;

}

return 0;

}

我承认这个题很low,但是我想在想cin对象的返回值是什么…

阅读更多

使用双向链表解决约瑟夫环问题

问题描述:

N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1。

源码:

阅读更多

C和C++的使用不同总结

在MOOC上报了C语言的课结果忘了听。最近在PTA上写题,一直按照C++的模式写,发现了许多错误,在这里总结一下。

这里C,C++的编译环境都是VS2017。(扩展名不同,.c和.cpp)

1.C语言中的结构体定义时写法和C++中有所不同。在C语言中,比如定义一个有理数的结构体。

1
2
3
4
struct Rational {
int Up;
int Down;
};
阅读更多

获取一个数组的长度

今天在 https://blog.csdn.net/bopzhou/article/details/6063163 上看到了如何获取一个数组的长度,收藏一下。

1
2
3
4
5
6
7
8
9
#include <iostream>
template <typename T>
int length(const T& arr) {
return sizeof(arr) / sizeof(arr[0]);
}
int main() {
int array[6] = { 1,2,3,4,5,6 };
std::cout << length(array) << '\n';
}

大作业题(一)

作业题(一),题目描述:

有理数运算

问题描述

有理数是一个可以化为一个分数的数,例如2/3,533/920,-12/49都是有理数,而就为无理数。在C++中,并没有预先定义有理数,需要时可以定义一个有理数类,将有理数的分子和分母分别存放在两个整型变量中。对有理数的各种操作都可以用重载运算符来实现。

基本要求

定义并实现一个有理数类,通过重载运算符+、-、*、/对有理数进行算术运算,通过重载运算符==实现判定两个有理数是否相等。写一个优化函数,它的作用是使有理数约去公分母,也即是使保存的有理数分子和分母之间没有公约数(除去1以外)。此外,还要定义一个将有理数转换为实数的函数,再加上构造函数和有理数输出函数。

测试数据

在应用程序中,创建若干有理数对象,通过带参数的构造函数使得各有理数对象值各不相同,然后分别进行各类运算,输出运算结果,检验其正确性。

实现提示

设有两个有理数a/b和c/d,则有:

(1) 有理数相加 分子=ad+bc;分母=b*d

(2) 有理数相减 分子=ad-bc;分母=b*d

(3) 有理数相乘 分子=ac; 分母=bd

(4) 有理数相除 分子=ad; 分母=bc

(5) 重载插入(<<)和提取(>>)运算符,使得对有理数可以直接输入输出。设有理数输入格式为:

整数1 整数2 //整数1为分子,整数2为分母

有理数输出格式为:

分子/分母

优化函数在创建有理数对象时应执行,在执行其它各种运算之后也需执行它,这样可保证所存储的有理数随时都是最优的。对于判断两个有理数是否相等,由于在对有理数进行各种运算后都对其进行优化,所以判定两个有理数是否相等只需判定它们两个的分子和分母分别相等即可。

阅读更多

字符串转置的一种方法

最近看C++课本发现了substr这个神奇的函数,然后就根据这个写了个字符串转置的函数。

阅读更多