1. %m.ns 打印输出( 二 )


#include#include using namespace std;// 本题牛客测试用例不全,至少应该增加以下两组测试用例// 输入: // 4// 1 3 2 3 // 输出:2// 输入: // 6 // 3 2 1 1 2 3 // 输出:2#include using namespace std;int main() {int n = 0;cin>>n;int arr[n+1];for(int i=0;i>arr[i];}arr[n] = 0;int i = 0;int count = 0;while(i=arr[i+1]){++i;}count++;++i;}}cout << count << endl;return 0;}
6. 类和库函数
【答案解析】
#include #include #include using namespace std;int main(){string s1;getline(cin, s1);auto start = s1.begin();auto end = start;for (int i = 0; i < s1.size(); i++){if (*(end + i) == ' '){reverse(start, end + i);start = end + i + 1;}}reverse(start, s1.end());reverse(s1.begin(), s1.end());cout << s1.c_str() << endl;return 0;}
【解题思路1】:
先将整个字符串逆置过来,再遍历字符串,找出每个单词,对单词逆置 。这里我们使用了stl算法中的,所以这里使用迭代器遍历
#include #include #include using namespace std;int main(){string s;// 注意这里要使用getline,cin>>s遇到空格就接收结束了getline(cin, s);// 翻转整个句子reverse(s.begin(), s.end());// 翻转单词auto start = s.begin();while (start != s.end()){auto end = start;while (end != s.end() && *end != ' ')end++;reverse(start, end);if (end != s.end())start = end + 1;elsestart = end;}cout << s << endl;return 0;}
【解题思路2】:
第二思路是一个比较讨巧的思路,直接利用cin>>s接收输入,遇到空格就结束了,自然就分割开了每个单词,其次将每次接收到的单词拼接到之前串的前面就逆置过来了
#include #include using namespace std;// cin读取string时自动会被空格分隔开,用另一个字符串存储进行逆序输出int main(){string s1, s2;cin >> s2;while (cin >> s1)s2 = s1 + " " + s2;cout << s2 << endl;return 0;}
day03 7. 大小端与栈性质的运用
假设在一个 32 位的机器上运行下面的程序,结果是多少?
#include int main() {long long a = 1, b = 2, c = 3;printf("%d %d %d\n", a, b, c);return 0;}
A 1,2,3
B 1,0,2
C 1,3,2
D 3,2,1
【答案解析】B
day04 8. 进制的输入输出形式
有以下程序
#include#includeusing namespace std;int main() {int m = 0123, n = 123;printf("%o %o\n", m, n);return 0;}
程序运行后的输出结果是()
A 0123 0173
B 0123 173
C 123 173
D 173 173
【答案解析】C
首先我们需要了解的就是进制的输出形式和表示方法
表达方式
二进制: (结尾带b)
八进制:0123 (开头带0)
十进制:123
十六进制:0x123 或者 123h (开头带0x)或者(末尾带h)
输出方式
%d:十进制方式输出
%o:八进制方式输出
%x:十六进制方式输出
9. 通过表达式计算对应值
10. 进制转换
【答案解析】:
【解题思路】:
本题思路很简单,首先想清楚原理:N进制数,每个进制位的值分别是X0* N ^ 0,X1 * N ^ 1, X2* N ^ 2…,X0,X1,X2就是这些进制位的值,就是就是进行取模余数就是当前低进制的位的值是多少,通过除掉进制数,进入下一个进制位的计算 。
#include #include#includeusing namespace std;int main(){string s, table = "0123456789ABCDEF";int m, n;cin >> m >> n;bool flag = false;// 如果是负数,则转成正数,并标记一下if (m