提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
有关习题七1-8的代码解答
一、题目
二、代码解答
1.1-3题
代码如下(示例):
1.#include<iostream>
using namespace std;
#define A 6
#define B 9
#define C (A+B)
void sxcr(int a[],int b[],int c[])
{
int i=0,j=0,n=0;
while(i<A&&j<B)
{
if(a[i]<b[j])
{
c[n]=a[i];
n=n+1;
i++;
}
else
{
c[n]=b[j];
n=n+1;
j++;
}
}
if(i==A)
{
while(n<C)
{
c[n]=b[j];
j++;
n++;
}
}
else
{
while(n<C)
{
c[n]=a[i];
i++;
n++;
}
}
}
int main()
{
int c[C]={0},i;
int a[A]={1,3,5,7,9,10};
int b[B]={0,2,4,6,8,10,11,12,13};
sxcr(a,b,c);
for(i=0;i<C;i++)
cout<<c[i]<<' ';
cout<<'\n';
return 0;
}
2.#include<iostream>
using namespace std;
int bai(int a)
{
int b;
if(a%100==a) return 10;
else b=a/100;
return b;
}
int shi(int a)
{
int b;
if(a%10==a) return 10;
else b=(a%100)/10;
return b;
}
int ge(int a)
{
int b;
b=a%10;
return b;
}
int main()
{
int a[10];
int i,m,n,p,l=0,b=0,c=0,d=0,e=0,f=0,j=0,h=0,g=0,k=0;
cout<<"请输入十个数:"<<endl;
for (i=0;i<10;i++)
cin>>a[i];
for(i=0;i<10;i++)
{
m=bai(a[i]);
n=shi(a[i]);
p=ge(a[i]);
switch(m)
{
case 0:l++;break;
case 1:b++;break;
case 2:c++;break;
case 3:d++;break;
case 4:e++;break;
case 5:f++;break;
case 6:j++;break;
case 7:h++;break;
case 8:g++;break;
case 9:k++;break;
case 10:;break;
}
switch(n)
{
case 0:l++;break;
case 1:b++;break;
case 2:c++;break;
case 3:d++;break;
case 4:e++;break;
case 5:f++;break;
case 6:j++;break;
case 7:h++;break;
case 8:g++;break;
case 9:k++;break;
case 10:;break;
}
switch(p)
{
case 0:l++;break;
case 1:b++;break;
case 2:c++;break;
case 3:d++;break;
case 4:e++;break;
case 5:f++;break;
case 6:j++;break;
case 7:h++;break;
case 8:g++;break;
case 9:k++;break;
case 10:;break;
}
}
cout<<"0的个数为:"<<l<<"\t1的个数为:"<<b<<"\t2的个数为:" <<c<<"\t3的个数为:"<<d<<"\t4的个数为:"<<e<<"\t5的个数为:"<<f<<"\t6的个数为:"<<j<<"\t7的个数为:"<<h<<"\t8的个数为:"<<g<<"\t9的个数为:"<<k<<endl;
return 0;
}
3.不用数组:#include<iostream>
using namespace std;
int opp(int x,int n,int k)
{
if(n>1)
{
int b;
b=x%10;
x=x/10;
for(int i=1;i<n;i=i+1)
{
b=b*10;
}
k=k+b;
return opp(x,n-1,k);
}
else
{
k=k+x;
return k;
}
}
int main()
{
int x,n,k=0;
cout<<"请输入整数:"<<endl;
cin>>x;
cout<<"请输入该整数位数:"<<endl;
cin>>n;
k=opp(x,n,k);
if(x==k) cout<<"该数是回文数。"<<endl;
else cout<<"该数不是回文数。"<<endl;
return 0;
}
3.用数组:#include<iostream>
using namespace std;
void opp(int a[],int n)
{
int i=0,j=n-1;
if (n==1) cout<<"该数是回文数。"<<endl;
else
{
while(i<=n/2)
{
if (a[i]==a[j])
{
i++;
j--;
}
else
{cout<<"该数不是回文数。"<<endl;break;}
}
if(i>n/2) cout<<"该数是回文数。"<<endl;
}
}
int main()
{ int a[20]={0};
int x,n,k=0,j=0,b;
cout<<"请输入整数:"<<endl;
cin>>x;
cout<<"请输入该整数位数:"<<endl;
cin>>n;
while (j<n)
{
b=x%10;
a[j]=b;
j++;
x=x/10;
}
opp(a,n);
return 0;
}
2.4-8
代码如下(示例):
4.#include<iostream>
using namespace std;
int yuan(char ch)
{
int b=0,p=1;
if(ch=='a'||ch=='e'||ch=='i'||ch=='o'||ch=='u') return p;
return b;
}
int main()
{
int i=0,sum=0,k;
char c[20];
cout<<"请您输入20个字符,谢谢合作。"<<endl;
for(;i<20;i++)
cin>>c[i];
for(i=0;i<20;i++)
{
k=yuan(c[i]);
sum=sum+k;
}
cout<<"元音字母个数为:"<<sum<<endl;
return 0;
}
5.#include<iostream>
using namespace std;
void jzzh(int m)
{
char a[32]={0};
int i=0,j,n;
do
{
n=m%16;
switch(n)
{
case 0:a[i]='0';break;
case 1:a[i]='1';break;
case 2:a[i]='2';break;
case 3:a[i]='3';break;
case 4:a[i]='4';break;
case 5:a[i]='5';break;
case 6:a[i]='6';break;
case 7:a[i]='7';break;
case 8:a[i]='8';break;
case 9:a[i]='9';break;
case 10:a[i]='A';break;
case 11:a[i]='B';break;
case 12:a[i]='C';break;
case 13:a[i]='D';break;
case 14:a[i]='E';break;
case 15:a[i]='F';break;
}
i++;
m=m/16;
}while(m!=0);
for(j=i;j>=0;j--)
cout<<a[j];
cout<<endl;
}
int main(void)
{
int m;
cout<<"请输入一个十进制数:"<<endl;
cin>>m;
jzzh(m);
return 0;
}
6.#include<iostream>
using namespace std;
#define N 10
void ba_ins_sort(int a[],int n)
{
int i,j,p;
for(i=1;i<n;i++)
{
p=a[i];
for(j=i-1;j>=0&&p<a[j];j--)
a[j+1]=a[j];
a[j+1]=p;
}
for(i=0;i<n;i++)
cout<<a[i]<<'\t';
cout<<endl;
}
int main()
{
cout<<"请先输入十个数,如果输入数据数目有要求,请自行修改N,谢谢合作。"<<endl;
int a[N];
int i,n=N;
for(i=0;i<n;i++)
cin>>a[i];
ba_ins_sort(a,n);
return 0;
}
7.#include<iostream>
using namespace std;
void opp(int a[],int n)
{
int i=0;
if (n==1) cout<<a[0]<<endl;
else
{
for(i=0;i<n;i++)
cout<<a[i];
cout<<endl;
}
}
int main()
{ int a[20]={0};
int x,n,k=0,j=0,b;
cout<<"请输入整数:"<<endl;
cin>>x;
cout<<"请输入该整数位数:"<<endl;
cin>>n;
while (j<n)
{
b=x%10;
a[j]=b;
j++;
x=x/10;
}
opp(a,n);
return 0;
}
8.#include<iostream>
using namespace std;
#define N 3
#define M 4
void ba(int a[N][M],int row1)
{
int i,j,min,max,col1=0;
max=a[row1][0];
for(i=0;i<M;i++)
{
if (a[row1][i]>max)
{
min=a[row1][i];
col1=i;
}
}
min=max;
for(j=0;j<N;j++)
if(a[j][i]<min) break;
if(j>=N) cout<<"该二维数组的一个靶点为:"<<a[row1][col1]<<"行数为:"<<row1+1<<"列数为:"<<col1+1<<endl;
}
int main()
{
int a[N][M]={12,2,3,4,10,6,7,11,9,5,8,1};
int m,n;
for (n=0;n<N;n++)
ba(a,n);
cout<<"如果您在看到这行字前,没有看到任何输出的话,很抱歉,该二维数组没有靶点。"<<endl;
return 0;
}
---