C++程序设计谭浩强 第五章(数组)习题答案(部分有改进)

5.1筛选法求100以内素数

#include 
#include     //set系列控制符
using namespace std;
#include 
int main()
 {
	int i,j,n,a[101];
	for (i=1;i<=100;i++)
		a[i]=i;
  a[1]=0;

  for (i=2;i

5.2选择法对10个整数排序

#include 
using namespace std;
//#include 
int main()
  {int i,j,min,temp,a[11];
   cout<<"enter data:"<a[j])  min=j;
//将a[i]~a[10]中最小者与a[i] 对换
		temp=a[i]; 
		a[i]=a[min];
		a[min]=temp;

     }

// 输出已排好序的10个数
   cout<

5.3求一个3*3矩阵对角线元素之和

#include 
using namespace std;
int main()
 {int a[3][3],sum=0;
  int i,j;
  cout<<"enter data:"<>a[i][j];
   for (i=0;i<3;i++)
     sum=sum+a[i][i];
   cout<<"sum="<

5.4有一个已排好的数组,今输入一个数,按原来的排序插入数组中。

#include 
using namespace std;
int main()
 {
   int a[11]={1,4,6,9,13,16,19,28,40,100};
   int num,i,j;
   cout<<"array a:"<>num;
   if (num>a[9])
     a[10]=num;
   else
    {for (i=0;i<10;i++)
		{if (a[i]>num)
			{
				for (j=9;j>=i;j--)
				a[j+1]=a[j];
				a[i]=num;
				break;
			}
		}
     }
  cout<<"Now, array a:"<

5.5将一个数组中的值按逆序重新存放

#include 
using namespace std;
int main()
{ const int n=5;
  int a[n],i,temp;
  cout<<"enter array a:"<>a[i];
  cout<<"array  :"<

5.6杨辉三角

#include 
#include 
using namespace std;
int main()
 {const int n=11;
  int i,j,a[n][n];
  for (i=1;i

 

 

5.7找出一个二维数组中的鞍点,即元素该行最大,该列最小(可能没有)

#include 
//#include 
using namespace std;
int main()
{
	const int n=4,m=5;  //假设数组四行五列
	int i,j,a[n][m],max,maxj;
	bool flag;
	for (i=0;i>a[i][j];

	for (i=0;imax)
			{max=a[i][j];maxj=j;}
		//假设是鞍点
		flag=true;
		//行最大数与列元素比,max不是最小,则不是鞍点
		for (int k=0;ka[k][maxj])
			{flag=false;continue;}

		if(flag)
		{
			cout<<"a["<

5.8有15个数按由大到小的顺序存放在一个数组中,输入一个数,折半查找法找出该数是第几个元素。

     如果数不存在则打印无此数

#include 
using namespace std;
int main()
{ const int n=15;
  int i,number,top,bott,mid,loca,a[n];
  bool flag=true,sign;
  char c;

//输入15个数按顺序 由大到小
  cout<<"enter data:"<>a[0];
  i=1;
  while(i>a[i];
    if (a[i]<=a[i-1])
      i++;
    else
      cout<<"enter this data again:";
   }
  cout<>number;
     sign=false;
     top=0;            //top是查找区间的起始位置
     bott=n-1;         //bott是查找区间的最末位置

     if ((numbera[0]))  //要查的数不在查找区间内
       loca=-1;        // 不存在
	 else
	 {
		while ((!sign) && (top<=bott))
		{mid=(bott+top)/2;
			if (number==a[mid])
			{
				loca=mid;
				cout<<"Find "<>c;
     if (c=='N'||c=='n')
		 flag=false;
    }

   return 0;
 } 

5.9有一篇文章,共有三行文字,每行80字符。统计英文大写字母,小写字母,数字,空格,其他的个数

#include 
using namespace std;
int main()
{int i,j,upper,lower,digit,space,other;
 char text[3][80];
 upper=lower=digit=space=other=0;
 for (i=0;i<3;i++)
   {cout<<"please input line "<='A'&& text[i][j]<='Z')
         upper++;
       else if (text[i][j]>='a' && text[i][j]<='z')
         lower++;
       else if (text[i][j]>='0' && text[i][j]<='9')
         digit++;
       else if (text[i][j]==' ')
         space++;
       else
         other++;
     }
   }
   cout<<"upper case:"<

5.10打印以下图案C++程序设计谭浩强 第五章(数组)习题答案(部分有改进)_第1张图片字符数组方法,string方法

#include 
using namespace std;
int main()
{ char a[5]={'*','*','*','*','*'};
  int i,j,k;
  char space=' ';
  for (i=0;i<5;i++)              // 输出5行 
   { cout<
#include 
#include 
using namespace std;
int main()
{ string stars="*****";
  int i,j;
  for (i=0;i<5;i++)              // 输出5行 
   { cout<<"    ";               // 每行前面留4个空格
     for (j=1;j<=i;j++)
       cout<<" ";               // 每行再插入i个空格    
     cout<

5.11电文 。第一个字母变成第二十六个字母。

编程将密码译回原文

#include 
using namespace std;
int main()
 {int j,n;
  char ch[80],tran[80];
  cout<<"input cipher code:";
  gets(ch);
  cout<<"cipher code:"<='A') && (ch[j]<='Z'))
      tran[j]=155-ch[j];
    else if ((ch[j]>='a') && (ch[j]<='z'))
      tran[j]=219-ch[j];
    else
      tran[j]=ch[j];
    j++;
  }
  n=j;
  cout<<"original text:";
  for (j=0;j
#include 
#include 
using namespace std;
int main()
 {int j;
  string ch="I will visit China next week.",tran;
  tran=ch;
  cout<<"cipher code:"<='A') && (ch[j]<='Z'))
      tran[j]=155-ch[j];
    else if ((ch[j]>='a') && (ch[j]<='z'))
	  tran[j]=219-ch[j];
    else
	  tran[j]=ch[j];
    j++;
  }
  cout<<"original text:";
  cout<
#include 
#include 
using namespace std;
int main()
 {int j;
  string ch="                              ";
  char *p=&ch[0];            //定义字符指针并使之指向ch的首字符
  cout<<"input cipher code:";
  gets(p);                  //从键盘读入一行字符
  cout<<"cipher code:"<='A') && (ch[j]<='Z'))
      ch[j]=155-ch[j];
    else if ((ch[j]>='a') && (ch[j]<='z'))
	  ch[j]=219-ch[j];
    j++;
  }
  cout<<"original text:";
  cout<

5.12将两个字符串连接起来,取代第一个字符串

5.12.1 用字符数组,不用strcat

#include 
#include 
using namespace std;
int main()
{char s1[80],s2[40];
  int i=0,j=0;
  cout<<"input string1:";
  cin>>s1;
  cout<<"input string2:";
  cin>>s2;
  while (s1[i]!='\0')
    i++;
  while(s2[j]!='\0')
    s1[i++]=s2[j++];
  s1[i]='\0';
  cout<<"The new string is:"<

5.12.2用strcat函数

#include 
using namespace std;
int main()
{char s1[80],s2[40];
  cout<<"input string1:";
  cin>>s1;
  cout<<"input string2:";
  cin>>s2;
  strcat(s1,s2);
  cout<<"The new string is:"<

5.12.3用string方法定义字符串变量

#include 
#include 
using namespace std;
int main()
{ string s1="week",s2="end";
  cout<<"s1="<

5.13输入n个字符串,按字母由小到大排列输出

#include 
#include 
using namespace std;
int main()
{ const int n=5;
  int i,j;
  string str[n],temp;
  cout<<"please input strings:"<>str[i];
  for(i=0;istr[j+1])
	  {temp=str[j];str[j]=str[j+1];str[j+1]=temp;}
  cout<

5.14输入n个字符串,把其中以A打头的字符串取出

#include
#include
using namespace std;

int main()
{
	const int n=5;   //设5个字符串
	string str[100];
	int i;
	cout<<"please input code"<>str[i];  //给str赋值
	for(i=0;i

5.15输入一个字符串,把其中字符按逆序输出。

5.15.1字符数组

#include 
using namespace std;
int main()
{ const int n=10;  //设一共10个字符
  int i;
  char a[n],temp;
  cout<<"please input a string:";
  for(i=0;i>a[i];
  for(i=0;i

5.15.2用string

#include 
#include 
using namespace std;
int main()
{ 
	string a;
	int i,n;
	char temp;
	cout<<"please input a string:";
	cin>>a;
	n=a.size();
	for(i=0;i

5.16输入10个学生的姓名、学号和成绩,将其中不及格者的姓名、学号和成绩输出

#include
#include
using namespace std;

const int n=10;
string name[n];
int num[n],score[n];

int main()
{
	int i;
	for(i=0;i>name[i]>>num[i]>>score[i];
	}

	cout<

阿这        错的地方我改过了

这答案应该都是对的

 

你可能感兴趣的:(C++)