C++程序设计教程 第3版——习题七1-8

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

有关习题七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;
}

---



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值