在C++中,setw(int n)用来控制输出间隔,(n-1个空格)。
setw()默认填充的内容为空格,可以setfill()配合使用设置其他字符填充。
cout<<setfill('*')<<setw(5)<<'a'<<endl;
则输出:
****a //4个*和字符a共占5个位置。
Array 是固定大小的,不能额外增加元素.当我们想定义不固定大小的字符时,可以使用 vector(向量) 标准库。
#include <iostream> #include <vector> using namespace std; int main() { // 创建向量用于存储整型数据 vector<int> vec; int i; // 显示 vec 初始大小 cout << "vector size = " << vec.size() << endl; // 向向量 vec 追加 5 个整数值 for(i = 0; i < 5; i++){ vec.push_back(i); } // 显示追加后 vec 的大小 cout << "extended vector size = " << vec.size() << endl; return 0; }
vec 的大小随着 for 循环的输入而增大。
执行以上代码,输出结果:
vector size = 0 extended vector size = 5
Array 直接初始化 char 数组是特殊的,这种初始化要记得字符是以一个 null 结尾的。
char a1[] = {'C', '+', '+'}; // 初始化,没有 null char a2[] = {'C', '+', '+', '\0'}; // 初始化,明确有 null char a3[] = "C++"; // null 终止符自动添加 const char a4[6] = "facesho"; // 报错,没有 null 的位置
a4 是错误的,虽然 a4 包括 6 个直接字符,但是 array 大小是 7:6个字符 + 一个null。正确的是:
const char a4[7] = "facesho";
使用随机数来发红包:
#include <iostream> #include <ctime> #include <cstdlib> #include <iomanip> #include <math.h> using namespace std; int main() { int i, number; int best;//手气最佳 float total; cout << "请输入红包金额:"; cin >> total; cout << "请输入抢红包人数:"; cin >> number; /* 生成随机数 */ // 设置种子 srand((unsigned)time(NULL)); float a[1024];//保存每个人的随机数。最多支持1024个人抢红包。 float b[1024];//保存每个人获得的红包金额。 float suma = 0;//随机数总和。 float sumb = 0;//红包总和。 int max = 0; for (i = 0; i < number; i++) { // 生成实际的随机数 a[i] = rand() % 100; if (a[i] > max){ max = a[i]; best = i;//获取手气最佳 } suma += a[i]; } for (i = 0; i < number - 1; i++) { b[i] = a[i] / suma * total;//按照随机数计算每个人实际获得的金额 sumb += round(b[i] * 100) / 100.0;//将红包金额保留两位小数 //输出信息 cout << "第" << setiosflags(ios::right)<< setw(3) << i + 1 << "个人的红包是:" << setiosflags(ios::right) << setw(6) << setiosflags(ios::fixed) << setprecision(2) << round(b[i] * 100) / 100.0 ; if (best == i){ cout << "(手气最佳)" << endl; } else { cout << endl; } } //最后一人的红包金额等于总金额减去前面的金额。 cout << "第" << setiosflags(ios::right)<< setw(3) << number << "个人的红包是:" << setiosflags(ios::right) << setw(6) << setiosflags(ios::fixed) << setprecision(2) << round((total - sumb) * 100) / 100.0; if (best == number - 1){ cout << "(手气最佳)" << endl; } else { cout << endl; } return 0; }
结果:
请输入红包金额:100 请输入抢红包人数:10 第 1个人的红包是: 0.38 第 2个人的红包是: 3.06 第 3个人的红包是: 11.66 第 4个人的红包是: 4.40 第 5个人的红包是: 17.02 第 6个人的红包是: 14.53 第 7个人的红包是: 6.12 第 8个人的红包是: 13.19 第 9个人的红包是: 11.85 第 10个人的红包是: 17.79(手气最佳) 请按任意键继续. . .
补充说明:
1、rand 随机数产生的范围:在标准的 C 库中函数 rand() 可以生成 0~RAND_MAX 之间的一个随机数,其中 RAND_MAX 是 stdlib.h 中定义的一个整数,它与系统有关,至少为 32767。
2、使用 rand() 和 srand() 产生指定范围内的随机整数的方法:“模除+加法”的方法。如要产生 [m,n] 范围内的随机数 num,可用:int num=rand()%(n-m+1)+m;(即 rand()%[区间内数的个数]+[区间起点值])
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
1894C++ 数组
在C++中,setw(int n)用来控制输出间隔,(n-1个空格)。
setw()默认填充的内容为空格,可以setfill()配合使用设置其他字符填充。
则输出:
1893C++ 数组
Array 是固定大小的,不能额外增加元素.当我们想定义不固定大小的字符时,可以使用 vector(向量) 标准库。
实例
vec 的大小随着 for 循环的输入而增大。
执行以上代码,输出结果:
1892C++ 数组
Array 直接初始化 char 数组是特殊的,这种初始化要记得字符是以一个 null 结尾的。
实例
a4 是错误的,虽然 a4 包括 6 个直接字符,但是 array 大小是 7:6个字符 + 一个null。正确的是:
1891C++ 数字
使用随机数来发红包:
结果:
1890C++ 数字
补充说明:
1、rand 随机数产生的范围:在标准的 C 库中函数 rand() 可以生成 0~RAND_MAX 之间的一个随机数,其中 RAND_MAX 是 stdlib.h 中定义的一个整数,它与系统有关,至少为 32767。
2、使用 rand() 和 srand() 产生指定范围内的随机整数的方法:“模除+加法”的方法。如要产生 [m,n] 范围内的随机数 num,可用:int num=rand()%(n-m+1)+m;(即 rand()%[区间内数的个数]+[区间起点值])