1、iomanip库与cout
iomanip库是一个控制cout输出格式的库文件,在调用库中某函数即可之后输出对应格式,也可以对格式进行取消。如在用其它进制输出整数后,需要再设置十进制数输出,否则一直其它进制。
cout<<setf(ios::showpoint); cout<<a<<endl;//强制显示小数点后的无效0,这个就需要调用iomanip库 cout<<oct<<x<<endl;//不需要调库 cout<<dec<<y<<endl;
2、函数的参数
1、参数为指针,将空的占用的内存删除
void FenLei(int* a,int* b,int length){...} int ban[10]={1,1...}; int num[2]={0}; FenLei(ban,num,10);
参数为指针类型,也可以代入int整型数组
2、内存整理,参数为字符数组
void DelZero(char* ch,int size){ int length=size; for(int i=0;i<z;i++) { if(ch[i]==' ') for(int j=i;j<size;j++) { ch[j]=ch[j+1]; length--; i--;//与i--对应 } } ch=new char[length]; }
3、返回多个值。可以存入一个数组返回,函数的类型变为int*型
int* FenPei(int* a,int* b,int num) { int* remain=new int[num]; ... return remain; } void main { ... premain=FenPei(fruit,num_people,10); delete[] premain; premain=NULL; }
//定义函数时,new申请的内存不能在函数体内释放,否则之后获取不到首地址
4、参数为字符二维数组
void exam(char** ch,int row,int col){ ... } ... char** ch=new char*[m]; for(int i=0;i<m;i++) ch[i]=new char[n]; ... delete[] ch; ch=NULL; ...
5、参数为字符串数组
void name(char *ch,string &str) { string str_first[26]={"曹魏","东吴"...}; ... str+=str_first[ch[i]];//第一个 ... }
参数为字符串(一维数组),是封装好的string类,有头文件<string>,需要和字符二维数组相区分
6.形参为引用
当形参采用指针传递时,使得内存的安全性没有保障,而形参采用引用更安全。
void change_name(string &name.string later) { name=later; }
指针传递的是地址值,而引用是某块内存的别称,传递的是具体的值。
3、<cctype.h>头文件
用于函数isalpha的使用,可以判断元素是否为字母
4、头文件重定义错误
良好的编程习惯是,在.h头文件里面只是函数和类的声明,如何随便写了函数的定义在.h,并且由多个头文件包含,就会出现重定义的错误。因此,我们的函数实现功能的定义代码放在cpp文件里来写。
5、重载函数
重载函数可以根据参数类型的不同,调用不同定义的同名函数。
函数重载的多个函数名字必须相同,参数列表必须不同,个数或者类型。但是返回值的类型不同无用。
重载函数尽量不要有默认参数,如果一共三个参数,实际上就是非默认的两个参数,系统可能不知道调用哪个,容易产生二义性。
6、main后执行代码
void main()
{
atexit(add);
atexit(substract);
cout<<"main中"<<endl;
}
main之后执行代码需要在main中注册函数。
用atexit注册的函数返回类型必须是void。_onexit()也可以注册函数,返回类型必须是int。
如全局对象的析构会在main结束之后运行。先被注册的函数后被执行
7、递归
递归函数是一直返回,知道不再调用自身,即终止
double JieCheng(int n)
{
if(n==0)
return 1;
else
return n*JieCheng(n-1);
}
8、随机数生成
RAND_MAX 指的是C语言标准库 <stdlib.h> 中定义的一个宏。任何一次对 rand 的调用,都将得到一个 0~RAND_MAX 之间的伪随机数。
其值最小默认为32767,最大为2147483647,通常在产生随机小数时可以使用RAND_MAX。
#include<iostream>
#include<ctime>
#include<cstdlib>
using namespace std;
int main(void)
{
srand((unsigned int)time(NULL));
double a[10];
int i;
cout << RAND_MAX << endl;
for (i = 0; i < 10; i++)
a[i] = (double)rand() / RAND_MAX;
for (i = 0; i < 10; i++)
cout << a[i] << endl;
return 0;
}
(alt+prtscreen...当前窗口截图)
9、main函数接收参数
main在启动运行时传递参数
int main(int argc,char** argv)
int main(int argc,char* argv[])