当前位置:文档之家› 字符串及数组应用程序设计习题

字符串及数组应用程序设计习题

{
int i,j,a[20][20],n,k=0;
cin>>n;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
if (i>=j)
a[i][j]= ++ k;
else
a[i][j]=0;
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
cout<<a[i][j]<<" ";
字符串及数组应用程序设计习题
1、【字符替换问题】
题目描述:在使用Word 进行文档编辑的过程中,我们都有过使用替换操作的经历,现在就请你运用字符串操作函数来实现一个简化的替换操作!
题目要求:用户输入三行字符串:第一行为原始文本串(长度为100以内);第二行为被替换子串;第三行为新的替换子串,注意替换操作可能不止进行一次。
3、【归并操作问题】
题目描述:在计算机内部排序方案中,有一种重要的排序思想叫归并排序。归并排序的主要操作是递归分解、回归合并。回归合并操作就是将两个原本有序的序列,合并为一个有序序列。例如:A序列为{12、14、32};B序列为{13、15、40、99};则新序列C为{12、13、14、15、32、40、99}。
一维、二维数组及应用程序设计习题参考答案
1、字符统计问题
#include <iostream.h>
void main()
{
int i,a[26];
char c;
cin>>c;
for (i=0;i<26;i++) a[i]=0;
while ((c>='A'&&c<='Z')||(c>='a'&&c<='z'))
题目要求:编程实现用户输入的两个有序子序列的合并操作,合并长度不长过100个元素。
输入数据:如上A、B子序列;输出结果:如上C序列。
4、【矩阵初始化问题】
题目描述:在计算机算法习题设计中,我们常常需要运用矩阵来记录当前问题的子问题的最优解,进而导出当前问题的最优解,并最终得到全局最优解,因此矩阵的下标运算是学习这类问题的重要基础之一。如下图所示方阵中的A矩阵称为螺旋矩阵、B矩阵称为蛇形矩阵。
题目要求:用户输入方阵的维大小,编程完成该方阵的这类初始化(分别实现)。
A4×4=B4×4=
输入数据:4 输出结果:螺旋矩阵如上图中的A矩阵、蛇形矩阵如上图中的B矩阵。
5、【高精度运算问题】
题目描述:计算机软件功能其实就是扩展硬件功能。比如:计算机中硬件所能表示的最大整数long int型数为-231到231,要想表示更大的整型数据或其运算就只能依赖整型数组来完成!
题目要求:键盘输入一段被压缩的字符信息,其中仅含大小写字母、数字、‘-’字符,并假定其中连续的字符(超过2个字符)已压缩为“起始字符-终止字符”的形式,请编程实现解压缩操作(解压后长度不超过200字符)!
输入数据:a-eio1-49X-Z 输出数据:abcdeio12349XYZ
思考:试试编写压缩操作(仅供同学们讨论实现,较难)。
for (i=0;i<2;i++)
for (j=0;j<3;j++)
b[j][i]=a[i][j];
for (i=0;i<3;i++)
{
for (j=0;j<2;j++)
cout<<b[i][j]<<" ";
cout<<endl;
}
}
4、矩阵初始化问题
#include <iostream.h>
void main()
{
if (c>='a'&&c<='z')
a[c-'a']++;
else
a[c-'A']++;
cin>>c;
}
for (i=0;i<26;i++)
{
cout<<char(i+'A')<<"("<<a[i]<<")"<<" ";
if ((i+1)%10==0)
cout<<endl;
}
}
2、约瑟夫问题
#include <iostream.h>
题目要求:用户输入两个充分大的整数(C++基本类型是装不下了哟!),请输出它们的和。
输入数据(两行):15464315464465465
482321654151
输出数据: 和为 15464797786119616
思考:求积(仅供同学们讨论实现,较难),上述数据积为 7458774215133872939813395215。
cin>>n;
for (i=0;i<n;i++) //填数
{
a[i][0]=1;a[i][i]=1;
for (j=1;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
for (i=0;i<n;i++) //输出
{
for (k=n-i;k>0;k--)
cout<<" ";
for (k=n-i;k>0;k--) //输出前导空格
cout<<" ";
for (j=0;j<=i;j++) //输出每行系数表
cout<<a[j]<<" ";
cout<<endl;
}
}
5-2、杨辉三角问题(二维数组)
#include <iostream.h>
void main()
{
int i,j,n,k,a[20][20];
j=0;//点数从新开始
k++; //出局的猴数增1
t=i; //记录出局的编号,每次覆盖
}
i++; //考查下一点
if(i==m) i=0;
}
cout<<t+1<<endl;
}
3、行列互换问题
#include <iostream.h>
void main()
{
int i,j,a[2][3]={{1,2,3},{4,5,6}},b[3][2];
输入数据:What’s the meat
输出数据:What’s the meaning of that?
2、【简单字符串解压(压缩)问题】
题目描述:在计算机世界里,数据量总是庞大无比,因此压缩的概念无处不大:比如,音、视频信息压缩就产生了MP3、MP4等;网络数据包压缩更是减少了网络传输量,加快了数据传输出速度等,今天,我们也来试试一点简单的字符串解压(压缩)操作!
cout<<endl;
}
}
5、杨辉三角问题(一维数组)
#include <iostream.h>
void main()
{
int i,j,n,k,a[20];
cin>>n;
for (i=0;i<n;i++) //控制行数
{
a[i]=1;
for (j=i-1;j>0;j--)
a[j]=a[j]+a[j-1];
for (j=0;j<=i;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
void main()
{
int i,j,k,m,n,a[1000],t=0;
cin>>m>>n;
for (i=0;i<m;i++)
a[i]=1;
i=0;k=0;j=0;
while(k<m)//k记录已出局的猴数
{
if(a[i]) j++; //点数
if(j==n) //符合出局条件
{
a[i]=0; //出局
相关主题