这一个fun函数没有看懂
void fun(char(*ss)){inti, j, k=0, n, m, len;
for(i=0; i<M; i++)
{len=strlen(ss);
if(i==0) n=len;
if(len>n) {
/**********found**********/ 在这个for循环中,n应该是每一行中最长的字符串的长度,但不是很明白这个k是有什么作用。另外,怎么比较得出n的值呢??
n=len; k=i;
}
}
for(i=0; i<M; i++)
if (i!=k)
{ m=n;
len=strlen(ss);
/**********found**********/
for(j=len; j>=0; j--)
ss=ss;
for(j=0; j<n-len; j++)
/**********found**********/
ss='*';
}
}
代码中前两个for循环都不太明白,能不能详细地讲一讲?谢谢各位!! 本帖最后由 jackz007 于 2019-2-16 15:53 编辑
你贴的东西太乱,看起来很费劲,按照代码贴出来再看看,重点是把代码缩进层次体现清楚,再说明一下这个函数的功能要求和希望达到的效果。 void fun(char(*ss))
{inti, j, k=0, n, m, len;
for(i=0; i<M; i++)
{len=strlen(ss);
if(i==0) n=len;
if(len>n) {
n=len; k=i;
}
}
for(i=0; i<M; i++)
if (i!=k)
{ m=n;
len=strlen(ss);
for(j=len; j>=0; j--)
ss=ss;
for(j=0; j<n-len; j++)
ss='*';
}
}
这个函数能够在左边填充*使得字符串数组里面的每一行字符串与最长的字符串对齐。 本帖最后由 jackz007 于 2019-2-16 23:48 编辑
void fun(char (*ss))
{
int i , j , k = 0 , n , m , len ;
// 遍历全部 N 个字符串,获取其中的最大长度记录在变量 n 中,对应的索引号记录在变量 k 中
for(i = 0 ; i < N ; i ++) {
len = strlen(ss) ;
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) ;
for(j = len ; j >= 0 ; j --) ss = ss ;// 对字符串 ss 按照由后向前的顺序逐字符整体向后迁移,跨度为 n - len 个字符,以便空出左面 n - len 个字符空间。
for(j = 0 ; j < n - len ; j ++) ss = '*' ;// 在字符串左面已经空出来的 n - len 个空间中填充字符 '*'
}
}
}
jackz007 发表于 2019-2-16 19:40
{:5_106:}谢谢!!
页:
[1]