華爲中級——字符串分割

描述:連續輸入字符串(輸出次數爲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;
}

程序運行結果如下:


運行結果是正確的,但是算法不是最優,而且時間複雜度也不是最優。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章