提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
本次介绍习题9有关4-8的代码解答
题目
二、代码解答
1.4-6
代码如下(示例):
4.#include<iostream>
using namespace std;
void output(int a[],int n)
{
int i;
for(i=0;i<n;i++)
cout<<a[i]<<'\t';
cout<<endl;
}
void right_move(int*p,int n,int k)
{
int i;
int b[10]={0};
while(k>=10)
{
k=k-10;
}
if(k!=0)
{
for(i=0;i<k;i++)
b[i]=p[10+i-k];
for(;i<n;i++)
b[i]=p[i-k];
}
for(i=0;i<n;i++)
p[i]=b[i];
}
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int n=10,k;
cin>>k;
if(k<0)
{
k=-1*k;
while(k>=10)
{
k=k-10;
}
k=10-k;
}
output(a,n);
right_move(a,n,k);
output(a,n);
return 0;
}
5.#include<iostream>
using namespace std;
void select_odd_index(char*str1,char*str2)
{
int i=0,j=0;
for(i=1;*(str1+i)!='\0';i+=2)
{
*(str2+j)=*(str1+i);
j++;
}
}
int main()
{
int n,i;
char*str1,*str2;
char str3[80]={0},str4[40]={0};
str1=&str3[0];
str2=&str4[0];
cout<<"请您输入字符串个数:"<<endl;
cin>>n;
for(i=0;i<n;i++)
cin>>str3[i];
select_odd_index(str1,str2);
if(n%2==0)
{
for(i=0;i<n/2;i++)
cout<<str4[i]<<'\t';
}
else
{
for(i=0;i<(n/2+1);i++)
cout<<str4[i]<<'\t';
}
return 0;
cout<<endl;
}
6.#include<iostream>
using namespace std;
int max(int a,int b)
{
int x;
x=(a>b)?a:b;
return x;
}
void select_max(char*p1,char*p2)
{
int a[80]={0},b[80]={0};
int i,j,m=0,x;
for(i=0;*(p1+i)!='\0';i++)
{
if(*(p1+i)==' ') i++;
j=i;
a[m]=j;
for(;*(p1+i)!=' ';i++);
b[m]=i-j;
m++;
}
for(i=0;i<m-1;)
x=max(b[i],b[++i]);
for(i=0;i<m;i++)
if(x==b[i]) j=i;
for(i=0;i<b[j];i++)
p2[i]=*(p1+a[j]+i);
}
int main()
{
char main_str[]={"She is a nice girl."},sub_str[80]={0};
select_max(main_str,sub_str);
cout<<sub_str<<endl;
return 0;
}
2.7-8
代码如下(示例):
7.#include<iostream>
using namespace std;
void find(int a[][5],int*p1,int*p2)
{
int i,j,row1,min,max,col1=0;
for(row1=0;row1<4;row1++)
{
max=a[row1][0];
for(i=0;i<5;i++)
{
if (a[row1][i]>max)
{
max=a[row1][i];
col1=i;
}
}
min=max;
for(j=0;j<4;j++)
if(a[j][col1]<min) break;
if(j>=4)
{
*p1=row1+1;
*p2=col1+1; break;
}
}
}
int main()
{
int a[4][5]={6,1,10,2,9,1,3,5,4,2,3,8,7,11,13,15,14,18,12,16};
int i,j,m=100,n=100;
int*p1=&m,*p2=&n;
find(a,p1,p2);
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
cout<<a[i][j]<<'\t';
cout<<'\n';
}
cout<<endl;
if(m==100&&n==100) cout<<"NULL"<<endl;
else cout<<"行数:"<<m<<'\t'<<"列数:"<<n<<endl;
return 0;
}
8.#include<iostream>
using namespace std;
void find(int a[][5],int&m,int&n)
{
int i,j,row1,min,max,col1=0;
for(row1=0;row1<4;row1++)
{
max=a[row1][0];
for(i=0;i<5;i++)
{
if (a[row1][i]>max)
{
max=a[row1][i];
col1=i;
}
}
min=max;
for(j=0;j<4;j++)
if(a[j][col1]<min) break;
if(j>=4)
{
m=row1+1;
n=col1+1; break;
}
}
}
int main()
{
int a[4][5]={6,1,10,2,9,1,3,5,4,2,3,8,7,11,13,15,14,18,12,16};
int i,j,m=100,n=100;
find(a,m,n);
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
cout<<a[i][j]<<'\t';
cout<<'\n';
}
cout<<endl;
if(m==100&&n==100) cout<<"NULL"<<endl;
else cout<<"行数:"<<m<<'\t'<<"列数:"<<n<<endl;
return 0;
}