|
发表于 2019-2-16 19:40:28
|
显示全部楼层
本楼为最佳答案
本帖最后由 jackz007 于 2019-2-16 23:48 编辑
- void fun(char (*ss)[N])
- {
- int i , j , k = 0 , n , m , len ;
- // 遍历全部 N 个字符串,获取其中的最大长度记录在变量 n 中,对应的索引号记录在变量 k 中
- for(i = 0 ; i < N ; i ++) {
- len = strlen(ss[i]) ;
- if(i == 0) n = len ;
- if(len > n) {
- n = len ;
- k = i ;
- }
- }
- // 再次遍历所有字符串,根据索引号跳过长度最大的那一个,根据与最大长度的差距,确定字符串需要向后整体搬迁的距离,实施整体搬迁,然后把左侧空出的字符空间填充为字符 '*'
- for(i = 0 ; i < N ; i ++) {
- if (i != k) { // 只处理那些索引值不为 k 的字符串,也就是长度够不着最长值 n 的那些字符串
- m = n ;
- len = strlen(ss[i]) ;
- for(j = len ; j >= 0 ; j --) ss[i][m--] = ss[i][j] ; // 对字符串 ss[i] 按照由后向前的顺序逐字符整体向后迁移,跨度为 n - len 个字符,以便空出左面 n - len 个字符空间。
- for(j = 0 ; j < n - len ; j ++) ss[i][j] = '*' ; // 在字符串左面已经空出来的 n - len 个空间中填充字符 '*'
- }
- }
- }
复制代码 |
|