永发信息网

for(i=strlen(a)+2;i>j+2;i--) 重点解析一下这个

答案:2  悬赏:50  手机版
解决时间 2021-04-21 14:52
  • 提问者网友:放下
  • 2021-04-20 16:37

#include <stdio.h>
#include<string.h>

main()
{
char a[80],b[]="ab",sum;

int i,j;

printf("please enter char a[80]:\n");

gets(a);

puts(a);

i=1; j=0; sum=a[0];

while(a[i]!='\0')
{
if(a[i]>sum)
{
sum=a[i];

j=i;

}
i++;
}
for(i=strlen(a)+2;i>j+2;i--)
a[i]=a[i-2];

a[i-1]=b[0];

a[i]=b[1];
puts(a);
getch();
}

这个程序得作用是,从键盘输入一个字符串a,试编程:在a串中的最大元素后边插入字符串b(b[]="ab")

重点解析一下这个语句、

最佳答案
  • 五星知识达人网友:duile
  • 2021-04-20 16:57
for(i=strlen(a)+2;i>j+2;i--)是从字符a加上两个字符(b)的总长度 i 开始循环,使得a中位置 j 以后的字符向后移动两位,并空出两个位置(j+1和j+2等待插入字符串b的内容)。
全部回答
  • 1楼网友:佘樂
  • 2021-04-20 17:22

while循环执行完后找到字符串a的最大元素位置在j(如果最大元素有多个,则j为第一个位置),

for(i=strlen(a)+2;i>j+2;i--) a[i]=a[i-2];

是从字符串a最后一个字符开始向前将a从位置j到最后一个字符的所有元素依次向右移动两位(因为b是两个字符),然后空出两个位置插入b

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯