自学考试C++书上例题Word格式文档下载.docx
《自学考试C++书上例题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《自学考试C++书上例题Word格式文档下载.docx(36页珍藏版)》请在冰点文库上搜索。
![自学考试C++书上例题Word格式文档下载.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/cb153789-047e-4705-96bd-58e4d502057a/cb153789-047e-4705-96bd-58e4d502057a1.gif)
reverse_copy(a,a+4,b);
1.7数组降幂排序,查找和输出
functional>
doublea[]={1.1,4.4,3.3,2.2};
sort(a,a+4,greater<
());
double*x=find(a,a+4,4.4);
if(x==a+4)cout<
没有值为4.4的数组元素"
elsecout<
有值为"
*x<
的数组元素"
x=find(a,a+4,8);
if(x==a+4)cout<
没有值为8的数组元素"
elsecout<
1.8对一维数组进行局部操作
doublea[]={1.1,4.4,3.3,2.2},b[8]={8};
copy(a+2,a+4,ostream_iterator<
//输出a[2]和a[3],copy(a,a+Len...
reverse_copy(a+1,a+4,ostream_iterator<
//输出a[3]~a[1]
copy(a,a+4,&
b[4]);
//将数组赋值到数组b的尾部
copy(b,b+8,ostream_iterator<
//输出数组b
sort(a+1,a+3);
//对部分数组元素升幂排序
//输出数组a
sort(b,b+6,greater<
//对部分数组元素降幂排序
1.9对字符数组进行操作
chara[]="
wearehere!
b[11];
reverse(a,a+10);
//数组元素逆向
copy(a,a+10,ostream_iterator<
char>
(cout));
//输出逆向后的数组内容
copy(a,a+11,b);
//原样赋值到数组b
sort(a,a+10);
//默认升幂排序
a<
//输出排序结果
b<
//输出数组b的内容
reverse_copy(a,a+10,b);
//逆向赋值到数组b
reverse(b+2,b+8);
//数组b部分逆向
copy(b+2,b+8,ostream_iterator<
//输出数组b逆向后的部分内容
sort(a,a+10,greater<
//降幂排序
(*find(a,a+10,'
e'
)=='
)<
<
o'
}
1.10使用setw设置输出宽度
iomanip>
inta=29,b=1001;
setw(6)<
//输出结果为:
291001
291001
1.11在下面的程序中,当要求输入时,均输入100,给出程序的输出结果。
constdoublePI=3.141592;
PI<
endl
setprecision(0)<
setprecision
(1)<
setprecision
(2)<
setprecision(3)<
setprecision(7)<
intb=100;
Dec:
dec<
Hex:
Oct:
100<
Inputb="
cin>
>
b;
setiosflags(ios_base:
:
showpos)<
resetiosflags(ios_base:
showpos);
1.12分析下面程序的输出
setfill('
*'
)
setw(0)<
15<
setw
(1)<
setw
(2)<
setw(3)<
setw(4)<
setw(16)<
right)
setw(5)<
1
2
3<
right);
left)
习题1p27
1.分别用字符和ASCII码形式输出整数值65和66.
chara='
A'
b='
B'
intascii_1=53,ascii_2=54;
//ASCII码中的5和6
字符输出:
(int)a<
"
int(b)<
ASCII码输出:
(char)ascii_2<
(char)ascii_1<
2.编写一个为int型变量分配100个整型量空间的程序。
int*p;
p=newint[100];
100;
{
*(p+i)=i;
for(i=0;
*(p+i)<
deletep;
3.编完完整的程序,它读入15个float值,用指针把它们存放在一个存数块里,然后输出这些值的和以及最小值。
float*p;
p=newfloat[15];
输入15个float类型的值:
15;
cin>
*(p+1);
sort(p,p+15);
\n最小的是:
*(p)<
4.声明如下数组:
inta[]={1,2,3,4,5,6,7,8};
先查找4的位置,将数组a复制给数组b,然后将数组a的内容反转,再查找4的位置,最后分别输出数组a和b的内容。
voidmain()
{
inta[]={1,2,3,4,5,6,7,8},b[8];
数组a中'
4'
的位置是:
find(a,a+8,4)<
copy(a,a+8,b);
//将数组a制造给数组b
reverse_copy(b,b+8,a);
//把数组b逆向复制给a,完成a的逆转
数组a反转后,'
的位置是:
//再查找4的位置
数组a的内容:
8;
a[i]<
\n数组b中的内容:
2.1使用成员函数的实例
structPoint{
voidSetxy(doublea,doubleb)//成员函数,用来重新设置数据成员
{x=a;
y=b;
voidDisplay()//成员函数,按指定格式输出数据成员的值
{cout<
x<
\t"
y<
doublex,y;
//数据成员
Pointa;
//定义对象a
a.Setxy(10.6,18.5);
//设置对象a的数据成员
a.Display();
//显示对象a的数据成员
a.x<
a.y<
例2.2使结构具有封装性的实例
private:
public:
};
例2.3使用构造函数初始化对象的实例
Point(){};
Point(doublea,doubleb)
voidSetxy(doublea,doubleb)
voidDisplay()
Pointb(18.5,10.6);
b.Display();
2.4定义类的实例
classpoint{
private:
//类point的数据成员
point(){};
//类point的无参数构造函数
point(doublea,doubleb)//具有两个参数的构造函数
voidsetxy(doublea,doubleb)//成员函数,用来重新设置数据成员
voiddiaplay()//成员函数,按指定格式输出数据成员的值
例2.8演示使用string对象及初始化的例子
string>
stringstr1("
wearehere!
);
stringstr2="
whereareyou?
str1[0]<
str1[11]<
str1<
str2[0]<
str2[13]<
str2<
pleaseinputaword:
str1;
lengthofthe"
is"
str1.size()<
."
2.10演示使用complex和string对象及初始化的例子
complex>
complex<
int>
num1(2,3);
float>
num2(3.5,4.5);
realis"
iamgeis"
num1.real()<
num1.imag()<
num2.real()<
num2.imag()<
例2.11演示string对象的例子
stringstr1="
str2=str1;
reverse(&
str1[0],&
str1[0]+12);
//str字符串的元素逆向
//输出逆向后的内容
copy(&
str1[0]+12,&
str2[0]);
//原样复制到str2
//输出str2
reverse_copy(&
str2[0],&
str2[0]+12,ostream_iterator<
//逆向输出str2
演示string对象使用成员函数表示存储区间的例子
str2(str1);
//使用str1初始化str2
reverse(str1.begin(),str1.end());
//字符串的元素逆向
copy(str1.begin(),str1.end(),str2.begin());
//原样复制到str2,str2应能容纳下str1
sort(str1.begin(),str1.end());
reverse_copy(str1.begin(),str1.end(),str2.begin());
//逆向复制到str2
//输出逆向后的str2的内容
reverse(str2.begin()+2,str2.begin()+8);
copy(str2.begin()+2,str2.begin()+8,ostream_iterator<
//输出逆向后的部分内容
sort(str1.begin(),str1.end(),greater<
//输出排序后的字符串str1
str1.swap(str2);
//互相交换内容
(*find(str1.begin(),str1.end(),'
//注意不是成员函数find
0'
例2.13演示string对象数组的例子
stringstr[]={"
welcome!
3;
i++){
copy(str[i].begin(),str[i].end(),ostream_iterator<
str[0].swap(str[2]);
str[0].swap(str[1]);
str[i]<
3.1传对象不会改变原来对象数据成员值的例子
voidswap(string,string);
//使用string类的对象作为函数参数
现在"
),str2("
过去"
//定义对象str1和str2
swap(str1,str2);
//使用传值方式传递str1和str2的数据成员值
返回后:
str1="
str1<
str2="
voidswap(strings1,strings2)///string类的对象s1,s2作为函数参数
stringtemp=s1;
s1=s2;
s2=temp;
交换为:
s1<
s2<
例3.2使用对象指针作为函数参数的例子
voidswap(string*,string*);
//使用string类的指针作为函数参数
swap(&
str1,&
str2);
//使用传地址值方式传递str1和str2的地址值
str1="
str2="
voidswap(string*s1,string*s2)//string类的对象指针s1和s2作为函数参数
stringtemp=*s1;
*s1=*s2;
*s2=temp;
*s1<
*str2="
*s2<
例3.3传递数组名实例
#