描述:连续输入字符串(输出次数为N,字符串长度小于100),请按长度为8拆分每个字符串后输出到新的字符串数组,长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。 接口函数设计如下: /******************************************************************************* 功能:存储输入的字符串 输入:字符串 输出:无 返回:0表示成功,其它返回-1 /******************************************************************************* int AddString(char *strValue); /******************************************************************************* 功能:获取补位后的二维数组的长度 输入:无 输出:无 返回:二维数组长度 /******************************************************************************* /int GetLength(); /******************************************************************************* 功能:将补位后的二维数组,与输入的二维数组做比较 输入:strInput:输入二维数组,iLen:输入的二维数组的长度 输出:无 返回:若相等,返回0;不相等,返回-1.其它:-1; /******************************************************************************* /int ArrCmp(char strInput[][9],int iLen) 知识点:字符串,循环,数组,函数,指针 题目来源:内部整理 练习阶段:中级 运行时间限制:10Sec 内存限制: 128MByte 输入:首先输入数字n,表示要输入多少个字符串。连续输入字符串(输出次数为N,字符串长度小于100)。 输出:按长度为8拆分每个字符串后输出到新的字符串数组,长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。 样例输入: 2 abc 123456789 样例输出: abc00000 12345678 90000000 我的问题:"空字符串不处理",这句话怎么理解?还有,不知道怎么写这些接口函数。 所以,我的源程序没有用到接口函数,功能直接在主函数中实现。
#include<iostream>
#include<cstring>
using namespace std;
#define M 80
int main()
{
int n,i,j,k,len;
cin>>n;
char a[M][100];char b[8];
for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<n;i++)
{
len=strlen(a[i]);
j=8-len%8;
for(k=0;k<j;k++)
{
b[k]='0';
}
b[k]='\0';
strcat(a[i],b);
}
for(i=0;i<n;i++)
{
len=strlen(a[i]);
for(j=0;j<len;j++)
{
cout<<a[i][j];
if((j+1)%8==0)
cout<<endl;
}
}
return 0;
}
程序运行结果如下:
运行结果是正确的,但是算法不是最优,而且时间复杂度也不是最优。