首页 分享 做题的心得与经验(C/C++)

做题的心得与经验(C/C++)

来源:花匠小妙招 时间:2025-04-23 16:46

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

推荐分享