描述:連續輸入字符串(輸出次數爲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;
}
程序運行結果如下:
運行結果是正確的,但是算法不是最優,而且時間複雜度也不是最優。