永发信息网

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

答案:2  悬赏:20  手机版
解决时间 2021-04-12 20:54
  • 提问者网友:你独家记忆
  • 2021-04-12 15:31

#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")

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

最佳答案
  • 五星知识达人网友:青尢
  • 2021-04-12 16:52
for(i=strlen(a)+2;i>j+2;i--) //strlen(a)代表字符串a的长度,i=strlen(a)+2代表插入字符串b之后的长度,从总长度i开始循环(i--),使a[i]=a[i-2],字符串中的字符向后移动两位,直到i=j+2,循环结束;等待插入字符
a[i]=a[i-2];//循环体

a[i-1]=b[0];//把b字符串的第一个字符赋给a[i-1](位置是j+1处)


a[i]=b[1];//把b字符串的第二个字符赋给a[i](位置再j+2处)
puts(a);
getch();
}

全部回答
  • 1楼网友:野慌
  • 2021-04-12 18:04

逻辑很清楚,先找到最大字母的位置,然后通过

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

a[i]=a[i-2];

将插入位置后的元素往后移动两位,

最后将b中的元素赋到最大字母的后面

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