c++学习笔记(1)
常用的c++库:
#include <iostream> // 输入输出 #include <cstdlib> // 随机函数 #include <cctype> // 字符函数 #include <string> // 字符串函数 #include <iomanip> // 格式化输出 #include <fstream> // 文件读写操作 #include <cmath> // 数学函数相关的函数
字符串读取:
#include <iostream> using namespace std; int main() { char ch; cout<<"Enter a char: "; cin >> ch; cout << "You input " << ch << endl; cout << "He said \"program is interetsing\"." << endl; int c = static_cast<int>(ch); //类型转换 cout << "num is " << c << endl; return 0; }
字符大小写转换:
#include <iostream> using namespace std; int main() { cout << "Enter a lowercase char: "; char lowercase; cin >> lowercase; char uppercase = static_cast<char>('A' + lowercase - 'a'); //原理 'A'-'a'='C'-'c' cout << "The corresponding letter is " << uppercase << endl; return 0; }
生成一个随机字母:
生成固定范围内的整数: 公式 a+rand()%(b-a+1) ----> (a, a+b)之间的随机数
#include <iostream> #include <cstdlib> // 随机函数 int main() { int a = static_cast<int>('a'); int b = static_cast<int>('z'); srand(time(0)); char random_char = a + rand() % (b-a+1); //公式 a+rand()%(b-a+1) ----> (a, a+b)之间的随数 cout << "The random char is " << random_char << endl; return 0; }
随机在两个字符之间生成一个字符(ASCII 码 America standard code for information interchange)
#include <iostream> #include <cstdlib> // 随机函数 int main() { cout << "input a char: "; char ch1; cin >> ch1; cout << "Input a char: "; char ch2; cin >> ch2; int a = static_cast<int>(ch1); // 类型转换 int b = static_cast<int>(ch2); if(a<b) { char random_char = a + rand() % (b - a + 1); cout << "The random char between " << ch1 << " and " << ch2 << " is " << random_char << endl; } else if(a>b) { char random_char = b + rand() % (a - b + 1); cout << "The random char between " << ch2 << " and " << ch1 << " is " << random_char << endl; } else { cout << "You Inpit two same char!" << endl; } return 0; }
猜生日code:
简单原理:
0~31之间的数字,可以用二进制11111表示,可以看到没一张表中的第一个数字分别是1,2,4,8,16,用二进制可以表示为
00001, 00010, 00100, 01000, 10000。五张表中的数字分布是有一定的规律的。0-31之间的任何一个数字都可以由前面
五个数字组成,将能够组成生日的数字所在的表中填入即可,直接判断自己的生日在不在表中,将得到的表第一个数字相加集
即可得到正确的数字。
#include <iostream> using namespace std; int main() { int day = 0; char answer; cout << "Is your birthday in set1" << endl; cout << "1 3 5 7\n" << "9 11 13 15\n" << "17 19 21 23\n" << "25 27 29 31\n" << endl; cout << "Enter your answer(y/n): "; cin >> answer; if(answer == 'y' || answer == 'Y') { day += 1; } cout << "\nIs your answer in set2: " << endl; cout << "2 3 6 7\n" << "10 11 14 15\n" << "18 19 22 23\n" << "26 27 30 31\n" << endl; cout << "ENter your answer(y/n): "; cin >> answer; if(answer == 'y' || answer == 'Y') { day += 2; } cout << "\nIs your answer in set3: " << endl; cout << "4 5 6 7\n" << "12 13 14 15\n" << "20 21 22 23\n" << "28 29 30 31\n" << endl; cout << "ENter your answer(y/n): "; cin >> answer; if(answer == 'y' || answer == 'Y') { day += 4; } cout << "\nIs your answer in set4: " << endl; cout << "8 9 10 11\n" << "12 13 14 15\n" << "24 25 26 27\n" << "28 29 30 31\n" << endl; cout << "ENter your answer(y/n): "; cin >> answer; if(answer == 'y' || answer == 'Y') { day += 8; } cout << "\nIs your answer in set5: " << endl; cout << "16 17 18 19\n" << "20 21 22 23\n" << "24 25 26 27\n" << "28 29 30 31\n" << endl; cout << "ENter your answer(y/n): "; cin >> answer; if(answer == 'y' || answer == 'Y') { day += 16; } cout << "Your birth day is " << day << endl; return 0; }
大小写转换(cctype 里的函数)
如果输入是大写,则转换为小写,输入小写,转换为大写, 如果不是字母给出提示;
字符常用函数:
isdigit()
isalpha()
isalnum() : 是否为数字或者字母
islower(): 是否为小写
isupper()
isspace() : 是否是空白字符
tolower()
toupper()
#include <iostream> #include <cstdlib> // 随机函数 #include <cctype> // 字符函数 using namespace std; int main() { cout << "Enter a character: "; char ch; cin >> ch; cout << "You Entered " << ch << endl; if(islower(ch)) { char temp; cout << "It is a lowercase." << endl; temp = static_cast<char>(toupper(ch)); cout << "The equilent is " << temp << endl; } else if(isupper(ch)) { char temp; cout << "It is a uppercase" << endl; temp = static_cast<char>(tolower(ch)); cout << "The equilent is " << temp << endl; } else { cout << "It is not a alpha" << endl; } return 0; }
字符串操作:
常用字符串函数入下:
length(), size() : 字符串长度
at(index): 字符串索引
#include <iostream> #include <cstdlib> // 随机函数 #include <cctype> // 字符函数 #include <string> // 字符串函数 using namespace std; int main() { string message = "Hello python"; string str1 = "ABCDEF"; cout << "string len is " << str1.length() << endl; cout << "C is at " << str1.at(2) << endl; return 0; }
彩票:
生成两位的随机数与输入的两位数比较:
完全相同
次序相同
只有一个数字相同
涉及到:(1)随机数字生成, 字符串比较
#include <iostream> #include <cstdlib> // 随机函数 #include <cctype> // 字符函数 #include <string> // 字符串函数 using namespace std; int main() { // 彩票代码 string lottery; // string类型的变量可以直接用+连接 srand(time(0)); // time(0)返回格林尼治时间起经过的秒数,作为随机数的种子 int digit = rand() % 10; // 生成一位随机整数 lottery += static_cast<char>(digit + '0'); digit = rand() % 10; lottery += static_cast<char>(digit + '0'); // 两个随机整数链接为字符串 cout << "Enter a guess(two numbers): "; string guess; cin >> guess; if(lottery == guess) { cout << "You win $10 000" << endl; } else if(lottery[0]==guess[1] && lottery[1]==guess[0]) { cout << "You win $3000" << endl; } else if(lottery[0]==guess[0] || lottery[0]==guess[1] || lottery[1]==guess[0] || lottery[1]==guess[1]) { cout << "You win $1000" << endl; } else { cout << "You loss" << endl; } return 0; }
格式化输出:
常用的格式化输出函数
setprecision(n)
fixed()
showpoint()
setw(width)
left() 左对齐
right() 右对齐
#include <iostream> #include <cstdlib> // 随机函数 #include <cctype> // 字符函数 #include <string> // 字符串函数 #include <iomanip> // 格式化输出 using namespace std; int main() { double amount = 3342.3456; double rate = 0.0087; double interest = amount * rate; cout << "Interest is " << fixed << setprecision(3) <<interest << endl; return 0; }
文件读写:
写文件: ofstream output ;
读文件: ifstream input ;
程序从文件中读取数据相当于input,写入数据到文件中相当于output
#include <iostream> #include <cstdlib> // 随机函数 #include <cctype> // 字符函数 #include <string> // 字符串函数 #include <iomanip> // 格式化输出 #include <fstream> // 文件读写操作 #include <cmath> // 数学函数相关 using namespace std; int main() { //文件写操作 ofstream output; output.open("numbers.txt"); // 创建文件 output << 23 << " " << 90 << " " << 56 << endl; //output << 98 << " " << "hello" << " " << 98 <<endl; output.close(); // 读取文件 ifstream input; // 用Input对象的open()函数打开文件 input.open("numbers.txt"); int score1, score2, score3; input >> score1; input >> score2; input >> score3; cout << "Read from file: \n" << "score1== " << score1 << endl; cout << "score2== " << score2 << endl; cout << "score3== " << score3 << endl; input.close(); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)