1. ios::binary可以显示指定它的打开方式为ios::binary,也就是以二进制方式打开。
2. 结构与联合的区别:
联合类型和结构类型的变量都有不同类型的成员,但是联合类型的变量系统仅按占空间最大的成员分配空间,几个成员共用同一块内存空间,即在某一时刻只能存放其中一种而不是几种。而对于结构类型的变量,系统将为其分配所有成员占用空间的总和大小的空间,即各成员同时存在,所以联合类型变量不能用作函数参数或返回值,而结构类型变量都可以。
3. 对于一个枚举类型
enum color{WHITE,BLACK,BLUE,PINK}
不定值的话那么它的成员的值依次为0,1,2…
如果指定其中一个值,那就从那个值后依次加
举个?:enum color{WHITE,BLACK,BLUE,PINK}
WHITE=0,BLACK=1,BLUE=2,PINK=3
enum color{WHITE,BLACK=100,BLUE,PINK}
而对于上式,WHITE=0,BLACK=100,BLUE=101,PINK=102
4. 用rand()函数生成随机数要包含头文件stdlb.h
使用time()要包含头文件ctime
srand((unsigned int)time(NULL));这条语句是给rand()一个种子值,其中time(NULL)是取系统当前时间值,为了每次调用rand()函数时产生一系列不同的随机数。如果不加此句,则rand()函数对于同一个程序每次运行生成的随机数是一样的。
练习题和代码嗷
// character4.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
#include<iomanip>
#include<cmath>
#include<fstream>
#include<stdlib.h>
#include<ctime>
using namespace std;
void exp3()
/*40个学生用1-10分评价食堂质量,
将40个分数放在整形数组中并汇总调查结果*/
{
const int cStuNum = 40;
const int cScoreNum = 11;
int score[cStuNum] = {
1,2,6,4,8,5,9,7,8,10,
1,2,3,8,6,4,9,4,7,8,
3,6,5,9,8,10,5,1,5,4,
2,6,9,3,8,1,5,3,8,9
};//全部分数
int counts[cScoreNum] = { 0 };
int k;
for (int k = 0; k < cStuNum; k++)
{
counts[score[k]]++;
}
cout << "score" << setw(10) << "counts" << endl;
for (int k = 1; k < cScoreNum; k++)
{
cout << setw(3) << k << setw(10) << counts[k] << endl;
}
}
void exp5()
//将正弦函数的一个周期分成N等分,定义数组显示自变量值和函数值
{
const int N = 8;
double x[N];
double y[N];
const double PI2 = 3.1415926 * 2;
double delta = PI2 / N;
cout << setw(8) << "弧度" << setw(12) << "sin(x)" << endl;
for (int k = 0; k < N; k++)
{
x[k] = k * delta;
y[k] = sin(x[k]);
cout << setw(10) << x[k] << ", " << y[k] << endl;
}
}
void exp6()//存储一个周期正余弦函数值并存到test.txt
{
const int N = 16;
double x[N];
double y_sin[N], y_cos[N];
const double pi2 = 3.14159 * 2;
double delta = pi2 / N;
ofstream ofile("test.txt");
for (int k = 0; k < N; k++)
{
x[k] = k * delta;
y_sin[k] = sin(x[k]);
y_cos[k] = cos(x[k]);
cout << setw(10) << x[k] << " " << setw(10) << setprecision(4) << y_sin[k] << " "
<< setw(10) << setprecision(4) << y_cos[k] << endl;
ofile<< setw(10) << x[k] << " " << setw(10) << setprecision(4) << y_sin[k] << " "
<< setw(10) << setprecision(4) << y_cos[k] << endl;
}
ofile.close();
}
void exp7()//把上题存的再读出来
{
ifstream ifile("test.txt");
const int N = 16;
double x[N], y_sin[N], y_cos[N];
for (int k = 0; k < N; k++)
{
ifile >> x[k] >> y_sin[k] >> y_cos[k];
cout << setw(10) << x[k] << "," << setw(10) << setprecision(4)
<< y_sin[k] << "," << setw(10) << setprecision(4) << y_cos[k] << endl;
}
ifile.close();
}
void exp8()//输出进行36000次投掷两次骰子之和实验的结果
{
const int N = 11;
const int Dice = 6;
const int EXP_TIMES = 36000;
int result_times[N] = { 0 };
int add_result;
int i, j;
srand((unsigned int)time(NULL));
for (i = 0; i < EXP_TIMES; i++)
{
add_result = rand() % Dice + 1;
add_result += (rand() % Dice + 1);
result_times[add_result - 2]++;
}
for (int i = 0; i < N; i++)
cout << setw(10) << i + 2 << setw(10) << result_times[i] << endl;
}
int main()
{
exp8();
system("pause");
return 0;
}