c++第五单元习题.docx

上传人:b****6 文档编号:8258558 上传时间:2023-01-30 格式:DOCX 页数:37 大小:223.31KB
下载 相关 举报
c++第五单元习题.docx_第1页
第1页 / 共37页
c++第五单元习题.docx_第2页
第2页 / 共37页
c++第五单元习题.docx_第3页
第3页 / 共37页
c++第五单元习题.docx_第4页
第4页 / 共37页
c++第五单元习题.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

c++第五单元习题.docx

《c++第五单元习题.docx》由会员分享,可在线阅读,更多相关《c++第五单元习题.docx(37页珍藏版)》请在冰豆网上搜索。

c++第五单元习题.docx

c++第五单元习题

第五单元

例题:

P136(5.1)

#include

#include

usingnamespacestd;

intmain()

{

inti,a[10];

for(i=0;i<=9;i++)

a[i]=i;

for(i=9;i>=0;i--)

cout<

cout<

return0;

}

P137(5.2)

#include

#include

usingnamespacestd;

intmain()

{

inti;

intf[20]={1,1};

for(i=2;i<20;i++)

f[i]=f[i-1]+f[i-2];

for(i=0;i<20;i++)

{

if(i%5==0)

cout<

cout<

}

cout<

return0;

}

P137(5.3)

#include

usingnamespacestd;

intmain()

{

inta[11];

inti,j,m;

cout<<"enter10numbers:

"<

for(i=1;i<=10;i++)

cin>>a[i];

cout<

for(j=1;j<10;j++)

for(i=0;i<=10-j;i++)

{

if(a[i]>a[i+1])

m=a[i+1],

a[i+1]=a[i],

a[i]=m;

}

for(i=1;i<=10;i++)

cout<

cout<

return0;

}

P142(5.4)

#include

usingnamespacestd;

intmain()

{

inta[2][3]={{1,2,3},{4,5,6}};

intb[3][2],i,j;

cout<<"arraya:

"<

for(i=0;i<=1;i++)

{

for(j=0;j<=2;j++)

{

b[j][i]=a[i][j];

cout<

}

cout<

}

cout<<"arrayb:

"<

for(i=0;i<=2;i++)

{

for(j=0;j<=1;j++)

{

cout<

}

cout<

}

return0;

}

P143(5.5)

#include

usingnamespacestd;

intmain()

{

inta[3][4]={{5,12,23,56},{19,28,37,46},{-12,-34,6,8}};

inti,j,row=0,colum=0,max;

max=a[0][0];

for(i=0;i<=2;i++)

for(j=0;j<=3;j++)

if(a[i][j]>max)

max=a[i][j],

row=i,

colum=j;

cout<<"max="<

<<"row="<

<<"colum="<

return0;

}

P144(5.6)

#include

usingnamespacestd;

intmain()

{

voidselect_sort(intarry[],intn);

inta[10],i;

cout<<"enteroriginlarry:

"<

for(i=0;i<10;i++)

cin>>a[i];

cout<

select_sort(a,10);

cout<<"thesortedarry:

"<

for(i=0;i<10;i++)

cout<

cout<

return0;

}

voidselect_sort(intarry[],intx)

{

inti,j,m,n;

for(i=0;i

{

for(j=i+1;j

{

n=i;

if(arry[j]

n=j;//将最小值的下标存放在n中

m=arry[n];//将余下10-i个数的最小值和第i个数组元素交换数值

arry[n]=arry[i];

arry[i]=m;

}

}

}

P147(5.8)

#include

usingnamespacestd;

intmain()

{

intmax(intb[][4]);

inta[3][4]={{11,32,45,67},{22,44,66,88},{15,72,43,37}};

cout<<"max="<

return0;

}

intmax(intb[][4])

{

inti,j,max;

max=b[0][0];

for(i=0;i<3;i++)

for(j=0;j<4;j++)

{

if(b[i][j]>max)

max=b[i][j];

}

returnmax;

}

心得:

在用数组名作为函数参数时要注意两点:

1:

定义函数时形参与实参名称不能一致,而且要注意至少要给出二维数组第二维的大小;

2:

在调用此类函数时应注意在调用时只需写出函数名即可(如max=(a))

P149(5.9)

#include

usingnamespacestd;

voidmain()

{

chardiamond[][5]={{'','','*'},{'','*','','*'},{'*','','','','*'},{'','*','','*'},{'','','*'}};

inti,j;

for(i=0;i<5;i++)

{

for(j=0;j<5;j++)

{

cout<

}

cout<

}

cout<

}

P155(5.10)

#include

#include

usingnamespacestd;

intmain()

{

voidmax_string(charstr[][30],intn);

inti;

charcountry_name[3][30];

for(i=0;i<3;i++)

cin>>country_name[i];

max_string(country_name,3);

return0;

}

voidmax_string(charstr[][30],intn)

{

inti;

charstring[30];

strcpy(string,str[0]);

for(i=1;i

{

if(strcmp(str[i],string)>0)//将string(值等于str[0])与str[0]相比并把较大的值赋给string,再将string与str[2]相比人去较大值赋给string

{strcpy(string,str[i]);}

}

cout<

"<

}

心得:

再含有多个{}包含的嵌套函数时要注意每个函数是否被完全包含在同一个{}内。

P159(5.11)

#include

#include

usingnamespacestd;

intmain()

{

stringstr[3],tem;

inti,j;

for(i=0;i<3;i++)

cin>>str[i];

cout<

for(i=0;i<2;i++)

{for(j=i;j<3;j++)

{

if(str[j]

tem=str[j],

str[j]=str[i],

str[i]=tem;

}

}

for(i=0;i<3;i++)

cout<

cout<

return0;

}

心得:

在使用string数组时不能出现string[i+1]的情况。

P160(5.12)

#include

#include

usingnamespacestd;

stringname[50],num[50];

intn;

intmain()

{

voidinput_date();

voidsearch(stringfind_name);

stringfind_name;

cout<<"pleaseinputnumberofthisclass:

"<

cin>>n;

input_date();

cout<<"pleaseinputthenameyouwant:

"<

cin>>find_name;

search(find_name);

return0;

}

voidinput_date()//记录输入的同学信息

{

inti;

for(i=0;i

{

cout<<"inputnameandNO.ofstudent:

"<

cin>>name[i]>>num[i];

}

}

voidsearch(stringfind_name)//开始寻找要找的姓名,通过name[]数组实现

{

inti;

for(i=0;i

{

if(name[i]==find_name)

{

cout<

"<

break;//感觉在这部分完全没有用布尔函数的必要,一个break直接跳出循环就行

}

}

}

习题:

1:

#include

#include

usingnamespacestd;

intmain()

{

inti,j,m;

for(i=1;i<=100;i++)

{

for(j=2;j

{

m=i%j;

if(m!

=0)

continue;

else

break;

}

if(m!

=0)

cout<

}

cout<

return0;

}

2:

#include

usingnamespacestd;

intmain()

{

cout<<"pleaseinput10number:

"<

inta[11];

inti,j,b,m;

for(i=1;i<=10;i++)

cin>>a[i];

for(i=1;i<10;i++)

{

m=i;

for(j=i+1;j<=10;j++)//将a[i]与其后的元素一一比较

{

if(a[j]

m=j;

}

b=a[i];

a[i]=a[m];

a[m]=b;

}

for(i=1;i<=10;i++)//从小到大的顺序输出

//for(i=10;i>0;i--)//从大到小顺序输出

cout<

cout<

return0;

}

3:

#include

usingnamespacestd;

intmain()

{

inta[3][3];

inti,j,sum=0;

cout<<"pleaseintera[3][3]:

\n";

for(i=0;i<3;i++)

for(j=0;j<3;j++)

cin>>a[i][j];

for(i=0;i<3;i++)

sum=sum+a[i][i];

cout<<"duijiaoxianzhihe:

\n"<

return0;

}

4:

#include

#include

usingnamespacestd;

intmain()

{

inti,j,m,temp;

inta[10]={0,1,2,3,4,5,7,8,9};

cout<<"原数列从小到大顺序为:

\n";

for(i=0;i<9;i++)

cout<

cout<<"请输入要添加的数:

\n";

cin>>m;

a[9]=m;

for(i=0;i<10;i++)

{

if(a[9]

{

temp=a[9];

a[9]=a[i];

a[i]=temp;

}

}

cout<<"新数列的顺序为:

\n";

for(i=0;i<10;i++)

cout<

cout<

return0;

}

5:

#include

usingnamespacestd;

intmain()

{

intn,i;

cout<<"请输入数组的长度:

\n";

cin>>n;

int*a=newint[n];//利用指针指向一个数组

cout<<"请输入数组元素:

\n";//确定数组长度new表示申请空间

for(i=0;i

cin>>a[i];

cout<<"该数组的逆序为:

\n";

for(i=0;i

cout<

delete[]a;//释放空间

cout<

return0;

}

心得:

在处理不知道要输入的元素个数是可以用指针定义一个动态数组,再用new来确定数组的长度。

不能直接定义inta[n](不符合数组定义规则);

最后记的用delete[]a释放多余的空间。

6:

#include

usingnamespacestd;

intmain()

{

inti,j,n;

cout<<"请输入你想要的杨辉三角行数:

\n";

cin>>n;

inta[100][100];

a[1][1]=a[2][1]=a[2][2]=1;//定义杨辉三角的前两行

for(i=3;i<=n;i++)

{

a[i][1]=a[i][i]=1;//第i行首位两个元素的值都为1

for(j=2;j

a[i][j]=a[i-1][j-1]+a[i-1][j];//杨辉三角出第一层外每个元素的求法:

等于相邻的正上方的左上方两个数的和

}

cout<<"杨辉三角如下图:

\n";

for(i=1;i<=n;i++)

{

for(j=1;j<=i;j++)

cout<

cout<

}

return0;

}

7:

#include

#include

usingnamespacestd;

intmain()

{

inta[3][4];

inti,j,max,maxj;

cout<<"请输入一个3*4的数组:

\n";

for(i=0;i<3;i++)//输入数组

{

for(j=0;j<4;j++)

{

cin>>a[i][j];

}

}

cout<<"您输入的数组为:

\n";

for(i=0;i<3;i++)//输出数组

{

for(j=0;j<4;j++)

{

cout<

}

cout<

}

boolflag,incl;//定义bool型变量flag判断第i行是否存在鞍点,incl判断数组整体是否含有鞍点

incl=false;

for(i=0;i<3;i++)//找到每行最大值并记录其列标

{

max=a[i][0];

maxj=0;

for(j=0;j<4;j++)

{

if(max

{

max=a[i][j];

maxj=j;//得到每行最大值所在的列标

}

}

flag=true;//假设鞍点存在

intk;

for(k=0;k<3;k++)//在该列寻找最小值并记录其行标

{

if(max>a[k][maxj])

{

flag=false;//第i行不含鞍点时跳出本次循环进行下一次循环

continue;

}

}

if(flag)

{

incl=true;

cout<<"该数组的鞍点为:

"

<<"a["<

}

}

if(incl==0)//判断数组整体是否含鞍点

{

cout<<"该数组没有鞍点\n";

}

return0;

}

8:

#include

#include

usingnamespacestd;

intmain()

{

inta[15]={28,26,24,22,20,18,16,14,12,10,8,6,4,2,0};

intm,n,i,p,q;

boolflag;

flag=false;

for(i=0;i<15;i++)

cout<

cout<

\n";

cin>>m;

p=0,q=14;

for(i=1;i<=5;i++)

{

if((m==a[p])||(m==a[q]))//判断要找的数是不是在所找区间的首尾

{

cout<<"这个数字在该数组中:

\n";//是的话输出存在的结果

flag=true;

break;

}

else//不是的换判断m在那个区间继续二分

n=(p+q)/2;

if(m

p=n;

else

q=n;

}

if(!

flag)

cout<<"这个数不在该数组内:

\n";

return0;

}

9:

#include

usingnamespacestd;

intmain()

{

inti,j,upper,lower,digit,space,other;

chartext[3][80];

upper=lower=digit=space=other=0;

for(i=0;i<3;i++)//输入每行内容

{

cout<<"请输入第"<

"<

gets(text[i]);

}

for(i=0;i<3;i++)

{

for(j=0;j<80&&text[i][j]!

='\0';j++)//判断第i行各种字符的个数

{

if(text[i][j]>='A'&&text[i][j]<='Z')

{

upper++;

}

elseif(text[i][j]>='0'&&text[i][j]<='9')

{

digit++;

}

elseif(text[i][j]>='a'&&text[i][j]<='z')

{

lower++;

}

elseif(text[i][j]='')

{

space++;

}

else

{

other++;

}

}

cout<<"第"<

<<"大写字母个数为:

"<

<<"小写字母个数为:

"<

<<"数字个数为:

"<

<<"空格个数为:

"<

<<"其他字符个数为:

"<

}

return0;

}

10:

#include

#include

usingnamespacestd;

voidmain()

{

/*charc[9]={'*','','*','','*','','*','','*'};//字符数组法

inti,j;

for(i=0;i<5;i++)

{

for(j=0;j<=i;j++)

{

cout<<'';

}

for(j=0;j<9;j++)

{

cout<

}

cout<

}*/

stringstr="*****";//字符串法

inti,j;

for(i=0;i<5;i++)

{

for(j=0;j<=i;j++)

{

cout<<'';

}

cout<

cout<

}

}

11:

#include

usingnamespacestd;

intmain()

{

intj,n;

charch[80];cout<<"请输入密文

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文学研究

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1