做题的心得与经验(C/C++)
1. fixed << setprecision(2) //c++保留2位小数
2. sort(num,num+t) //自带排序函数,从小到大排 参数一首址 参数二 终址
3. 对9取余等于把那个数的每个数相加 在对 9 取余
4. 对10003 取余:num = (num * 10 + num_array[i] - '0') % 10003;
5. next_permutation(start,end),和prev_permutation(start,end) //全排列
6. pow(2,3) //2的3次方
7. reverse(que.begin(),que.end()); //数组倒置
8. getline(cin,str,jieshuweizhi)//接收带空格的字符串
9. cout.setf(ios::right); //设置对齐方式为右对齐
cout.fill('0'); //设置填充方式,不足位补0
cout.width(2); //设置宽度为2,只对下条输出有用
cout<<a<<endl;
10.sqrt(a); 开根号
11.我们先看下cin>>与getline的工作方式,流提取运算符根据它后面的变量类型读取数据,从非空白符号开始,遇到Enter、Space、Tab键时结束。getline函数从istream中读取一行数据,当遇到“n”时结束返回。
getline(cin,str)的读取原理是将以‘/n’为结束符做为一完整读取的一行,'/n'会读。所以当之前用cin读取一个字符的时候,你会输入一个字符然后点击回车,那么下面getline(cin,str)读的时候会读入这个回车,
并判断结束了。
造成程序错误结果的原因是,用户输入完年龄后按回车结束输入,把“n”留在了输入流里,而cin不会主动删除输入流内的换行符,这样换行符就被getline读取到,getline遇到换行符返回,因此程序不会等待用户输入。
解决的办法是手动清除换行符,在cin>>后加上
cin.ignore();
12. setw(5); 设置域宽为5
13. memset(数组名,统一赋值参数, 赋值长度);
C/C++ 使用memset对数组进行整体赋值以及memcpy对 数组复制
14.gets(数组名) 获取包含空格在内的字符串
15.Ascii 0 - 255
16. 算法解题思路:对比两字符数组的 是否重叠 for(int i = 0; i < strlen(buf); i++)
if(strchr(s, buf[i]) == NULL) ok = 0;
sprintf(buf, "%d%d%d%d%d", abc, de, x, y, z); 将数存入字符数组
strchr的作用是在一个字符串中查找单
个字符,而这个sprintf似曾相识:之前用过printf和fprintf。没错!这3个函数是“亲兄
弟”,printf输出到屏幕,fprintf输出到文件,而sprintf输出到字符串
17.:由于字符串的本质是数组,它也不是“一等公民”,只能用strcpy(a, b),
strcmp(a, b), strcat(a, b)来执行“赋值”、“比较”和“连接”操作,
18."fgets(buf, maxn, fin)"将读取完整的一行放在字符数组buf中。应当保证
buf足够存放下文件的一行内容。除了在文件结束前没有遇到“n”这种特殊情况外,buf总是
以“n”结尾。当一个字符都没有读到时,fgets返回NULL。
和fgetc一样,fgets也有一个"标准输入版"gets。遗憾的是,gets和它的"兄弟"fgets差别比
较大:其用法是gets(s),没有指明读取的最大字符数。这里就出现了一个潜在的问题:gets
将不停地往s中存储内容,而不管是否存储得下!难道gets函数不去管s的可用空间有多少
吗?确实如此。
19.的isalpha、isdigit、isprint等工具可以用来判断字符
的属性,而toupper、tolower等工具可以用来转换大小写。如果ch是大写字母,则ch-'A'就是
它在字母表中的序号(A的序号是0,B的序号是1,依此类推);类似地,如果ch是数字,
则ch-'0'就是这个数字的数值本身。
20.
对于求生成元的问题,可以自己做成一个表
21. int less(const char* s, int p, int q) {
int n = strlen(s);
for(int i = 0; i < n; i++)
if(s[(p+i)%n] != s[(q+i)%n])
return s[(p+i)%n] < s[(q+i)%n];
return 0; //相等
}
int main() {
int T;
char s[maxn];
scanf("%d", &T);
while(T--) {
scanf("%s", s);
int ans = 0;
int n = strlen(s);
for(int i = 1; i < n; i++)
if(less(s, i, ans)) ans = i;
for(int i = 0; i < n; i++)
putchar(s[(i+ans)%n]);
putchar('n');
}
return 0;
}
22 . STL set 集合用法:
set<string> s;
insert(key_value); 将key_value插入到set中 ,返回值是pair<set<int>::iterator,bool>,bool标志着插入是否成功,而 iterator代表插入的位置,若key_value已经在set中,则iterator表示的key_value在set中的位置。
inset(first,second);将定位器first到second之间的元素插入到set中,返回值是void.
https://blog.csdn.net/byn12345/article/details/79523516
23. C/C++中没有提供直接获取数组长度的函数。对于存放字符串的字符数组,可用strlen函数获取长度。
24. 集合排序:https://www.cnblogs.com/zhouxiaosong/p/5557990.html
集合用法:https://www.cnblogs.com/mypsq/p/4348565.html
25. int 转 string string 转 int https://www.cnblogs.com/A-Little-Nut/p/8056421.html
int num = 101231;
stringstream ss;
ss << num;
ss >> str;
cout << str << " ";
ss.clear();
int num2;
string str2 = "1213";
ss << str2;
ss >> num2;
cout << num2 << endl;
return 0;
26. c/c++ string 输入获取空格 getline(cin,str);
27. 古风排序 问题出在 len 正好 整除 n 那时候则不需要+1 .。。。。。。。。。。。。。。。。。。。。。。。。。。。
28. 如果要比较的对象是两个string,则利用函数compare() 或者 ==
若要比较string s1和s2则写为:
s1.compare(s2)
1若返回值为0,则两者相等。
29. :把vector作为参数或者返回值时,应尽量改成用引用方式传递参数,以避 免不必要的值被复制。
30. 经典链表算法:
int n = strlen(s+1); //输入保存在s[1],s[2]...中
last = cur = 0;
next[0] = 0;
for(int i = 1; i <= n; i++) {
char ch = s[i];
if(ch == '[') cur = 0;
else if(ch == ']') cur = last;
else {
next[i] = next[cur];
next[cur] = i;
if(cur == last) last = i; //更新"最后一个字符"编号
cur = i; //移动光标
}
}
31.
string s1;//初始化字符串,空字符串 string s2 = s1; //拷贝初始化,深拷贝字符串 string s3 = "I am Yasuo"; //直接初始化,s3存了字符串 string s4(10, 'a'); //s4存的字符串是aaaaaaaaaa string s5(s4); //拷贝初始化,深拷贝字符串 string s6("I am Ali"); //直接初始化 string s7 = string(6, 'c'); //拷贝初始化,cccccc
string s1 = s2 + ", "; //正确 string s3 = "s " + ", "; //错误 string s4 = "hello" + ", " + s1; //错误 string s5 = s1 + "hello " + ", "; //改一下顺序,s1放前头,正确了,注意理解=号右边的运算顺序
string.find("pq", start);
32. https://www.cnblogs.com/skyfsm/p/6934246.html vector
vector<int> v1; vector<father> v2; vector<string> v3; vector<vector<int> >; //注意空格。这里相当于二维数组int a[n][n]; vector<int> v5 = { 1,2,3,4,5 }; //列表初始化,注意使用的是花括号 vector<string> v6 = { "hi","my","name","is","lee" }; vector<int> v7(5, -1); //初始化为-1,-1,-1,-1,-1。第一个参数是数目,第二个参数是要初始化的值 vector<string> v8(3, "hi"); vector<int> v9(10); //默认初始化为0 vector<int> v10(4); //默认初始化为空字符串
请使用push_back加入元素,并且这个元素是被加在数组尾部的。
相关知识
做题的心得与经验(C/C++)
ubuntu linux C/C++环境搭建
常见C/C++ XML解析器比较
学习花艺的心得与体会
园艺联盟App:分享园艺心得与技巧
C/C++/Python实现水仙花数(daffodil)
c语言表白程序源码玫瑰花,小伙子用C语言写出绽放的玫瑰花,成功表白C++代码女神!...
C++书籍推荐(小白变大牛最全书单)
C++开发环境如何设置呢?
浅谈学法之基本花字班心得与经验
网址: 做题的心得与经验(C/C++) https://www.huajiangbk.com/newsview1786634.html
上一篇: 花视频iPhone版免费下载 |
下一篇: iPhone+iOS 18=An |
推荐分享

- 1君子兰什么品种最名贵 十大名 4012
- 2世界上最名贵的10种兰花图片 3364
- 3花圈挽联怎么写? 3286
- 4迷信说家里不能放假花 家里摆 1878
- 5香山红叶什么时候红 1493
- 6花的意思,花的解释,花的拼音 1210
- 7教师节送什么花最合适 1167
- 8勿忘我花图片 1103
- 9橄榄枝的象征意义 1093
- 10洛阳的市花 1039