}
本题判断一个整数是否为回文数,可以不用数组拆分数字,直接用高位与低位数字比较。
还可以把程序写成递归方式。
5.把两个升序的整型数组合并为一个升序数组。
设计好你的算法,以得到较高的运行效率。
答案4.3-5
把两个长度为m和n的有序数组a、b归并为长度m+n的有序数组c,可以利用原数组a、b的有序性,分别用指针i和j指示数组a和b的当前元素下标,当a[i]
若其中一个数组的元素读完,则应把另一个数组的剩余元素全部写入数组c。
#include
voidmain()
{inta[4]={1,2,5,7};
intb[8]={3,4,8,8,9,10,11,12};
intc[12],i,j,k;
i=j=k=0;
while(i<4&&j<8)
if(a[i]>b[j]) //当a[i]>b[j],把b[i]写入数组c
{c[k]=b[j];k++;j++;}
else //当a[i]<=b[j],把a[i]写入数组c
{c[k]=a[i];k++;i++;}
while(i<4)
{c[k]=a[i];i++;k++;} //把数组a的剩余元素写入数组c
while(j<8)
{c[k]=b[j];k++;j++;} //把数组b的剩余元素写入数组c
for(i=0;i cout< cout<}
6.输入一个星期几号,输出相应的英文单词。
要求使用指针数组实现。
答案4.3-6
#include
voidmain()
{char*weekday[7]={"sunday","monday","tuesday",
"wednesday","thursday","friday","saturday"};
intd;
cout<<"pleaseinputweekday:
";
cin>>d;
if(d>=0&&d<=6)cout< elsecout<<"inputerror!
"<}
7.编写函数:
(1)在一个二维数组中形成如以下形式的n阶矩阵:
(2)去掉靠边元素,生成新的n-2阶矩阵;
(3)求矩阵主对角线下元素之和;
(4)以方阵形式输出数组。
在main函数中调用以上函数进行测试。
答案4.3-7
由于本题没有给定矩阵的阶数n,从而应按输入的要求建立动态数组。
需