c++数字,数组,字符串
1,数字
实例
#include <iostream> using namespace std; int main () { // 数字定义 short s; int i; long l; float f; //32位 double d; //64位 // 数字赋值 s = 10; i = 1000; l = 1000000; f = 230.47; d = 30949.374; // 数字输出 cout << "short s :" << s << endl; cout << "int i :" << i << endl; cout << "long l :" << l << endl; cout << "float f :" << f << endl; cout << "double d :" << d << endl; return 0; }
数字运算相关的内置函数:使用的时候先要导入头文件<cmath>
序号 | 函数 & 描述 |
---|---|
1 | double cos(double); 该函数返回弧度角(double 型)的余弦。 |
2 | double sin(double); 该函数返回弧度角(double 型)的正弦。 |
3 | double tan(double); 该函数返回弧度角(double 型)的正切。 |
4 | double log(double); 该函数返回参数的自然对数。 |
5 | double pow(double, double); 假设第一个参数为 x,第二个参数为 y,则该函数返回 x 的 y 次方。 |
6 | double hypot(double, double); 该函数返回两个参数的平方总和的平方根,也就是说,参数为一个直角三角形的两个直角边,函数会返回斜边的长度。 |
7 | double sqrt(double); 该函数返回参数的平方根。 |
8 | int abs(int); 该函数返回整数的绝对值。 |
9 | double fabs(double); 该函数返回任意一个十进制数的绝对值。 |
10 | double floor(double); 该函数返回一个小于或等于传入参数的最大整数。 |
实例:
#include <iostream> #include <cmath> using namespace std; int main () { // 数字定义 short s = 10; int i = -1000; long l = 100000; float f = 230.47; double d = 200.374; // 数学运算 cout << "sin(d) :" << sin(d) << endl; //-634939 正弦 cout << "abs(i) :" << abs(i) << endl; //1000 绝对值 cout << "floor(d) :" << floor(d) << endl; //200 求最大整数 cout << "sqrt(f) :" << sqrt(f) << endl; //15.1812 cout << "pow( d, 2) :" << pow(d, 2) << endl; //401497.7 次方运算 return 0; }
补充随机数:srand+rand
#include <iostream> //输入输出流头文件 #include <ctime> //时间相关的头文件 #include <cstdlib> //系统时间相关的头文件 using namespace std; int main () { int i,j; // 设置种子 srand( (unsigned)time( NULL ) ); /* srand函数是随机数发生器的初始化函数。原型: void srand(unsigned seed);用法:它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子后面的rand()函数会出现一样的随机数。如: srand(1); 直接使用 1 来初始化种子。不过为了防止随机数每次重复,常常使用系统时间来初始化,即使用 time 函数来获得系统时间生成 10 个随机数 */ for( i = 0; i < 10; i++ ) { // 生成实际的随机数 j= rand(); cout <<"随机数: " << j << endl; } return 0; }
补充获取一定范围内的随机数:
#include <iostream> #include<stdio.h> #include<time.h> #define random(x)(rand()%x) //需要提前声明一下random函数才能用,函数方法是求余数 using namespace std; int main() { srand((int)time(0));//部署随机种子 for (int i = 0; i < 10; i++){ cout << random(100) << endl; //求0-100内的随机数就是把系统常用的求随机数的方法除以100然后取余数 //输出0-100的随机数 }; return 0; }
2,数组
C++ 支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。
声明数组:
double balance[10]; //声明一个包含10个double元素的数组balance,balance 是一个可用的数组,可以容纳 10 个类型为 double 的数字。
初始化:
double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0}; //大括号 { } 之间的值的数目不能大于我们在数组声明时在方括号 [ ] 中指定的元素数目,当然方括号内也可以不加数字,此时系统会自动添加上元素的初始化时候的个数,如:double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0};和上面的例子是一样的
为某个元素赋值:
balance[4] = 51;
赋值和获取数组内的元素实例:
#include <iostream> using namespace std; int main () { int n[ 10 ]; // n 是一个包含 10 个整数的数组 // 初始化数组元素 for ( int i = 0; i < 10; i++ ) { n[ i ] = i + 100; // 设置元素 i 为 i + 100 } cout << "Element" << "Value" << endl; // 输出数组中每个元素的值 for ( int j = 0; j < 10; j++ ) { cout << j << n[ j ] << endl; } return 0; }
补充:
多维数组:
初始化(以二维数组为例):
int a[3][4] = { {0, 1, 2, 3} , /* 初始化索引号为 0 的行 */ {4, 5, 6, 7} , /* 初始化索引号为 1 的行 */ {8, 9, 10, 11} /* 初始化索引号为 2 的行 */ };
//以下也是可以的:int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};
访问二维数组:
#include <iostream> using namespace std; int main () { // 一个带有 5 行 2 列的数组 int a[5][2] = { {0,0}, {1,2}, {2,4}, {3,6},{4,8}}; // 输出数组中每个元素的值 ,直接全局遍历一遍好了 for ( int i = 0; i < 5; i++ ) for ( int j = 0; j < 2; j++ ) { cout << "a[" << i << "][" << j << "]: "; cout << a[i][j]<< endl; } return 0; }
数组详解看2-4篇介绍
3,字符串
c风格的字符串:
本质上是一堆字符数组,存储在数组中,因为用null‘\0’结尾,所以数组比普通的数组长1,
声明和初始化:
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; char greeting[] = "Hello";
字符串相关操作:
序号 | 函数 & 目的 |
---|---|
1 | strcpy(s1, s2); 复制字符串 s2 到字符串 s1。 |
2 | strcat(s1, s2); 连接字符串 s2 到字符串 s1 的末尾。 |
3 | strlen(s1); 返回字符串 s1 的长度。 |
4 | strcmp(s1, s2); 如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回值小于 0;如果 s1>s2 则返回值大于 0。 |
5 | strchr(s1, ch); 返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。 |
6 | strstr(s1, s2); 返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。 |
c++标准库提供的string类:需要引入头文件<string>
#include <iostream> #include <string> using namespace std; int main () { string str1 = "Hello"; string str2 = "World"; string str3; //声明但是没有初始化 int len ; // 复制 str1 到 str3 str3 = str1; cout << "str3 : " << str3 << endl; //World // 连接 str1 和 str2 str3 = str1 + str2; //HelloWorld cout << "str1 + str2 : " << str3 << endl; // 连接后,str3 的总长度 len = str3.size(); cout << "str3.size() : " << len << endl; //10 return 0; }
string其他的可用函数:
- 1. append() -- 在字符串的末尾添加字符
- 2. find() -- 在字符串中查找字符串
- 4. insert() -- 插入字符
- 5. length() -- 返回字符串的长度
- 6. replace() -- 替换字符串
- 7. substr() -- 返回某个子字符串
实例:
#include <iostream> #include <string> using namespace std; int main() { //定义一个string类对象 string http = "www.runoob.com"; //打印字符串长度 cout<<http.length()<<endl; //拼接 http.append("/C++"); cout<<http<<endl; //打印结果为:www.runoob.com/C++ //删除 int pos = http.find("/C++"); //查找"C++"在字符串中的位置 cout<<pos<<endl; http.replace(pos, 4, ""); //从位置pos开始,之后的4个字符替换为空,即删除 cout<<http<<endl; //找子串runoob int first = http.find_first_of("."); //从头开始寻找字符'.'的位置 int last = http.find_last_of("."); //从尾开始寻找字符'.'的位置 cout<<http.substr(first+1, last-first-1)<<endl; //提取"runoob"子串并打印 return 0; }