当前位置: 代码迷 >> C语言 >> 从键盘中输入字符串a 并在a串中的最大元素后边插入字符串b(b【】=“ab”) ...
  详细解决方案

从键盘中输入字符串a 并在a串中的最大元素后边插入字符串b(b【】=“ab”) ...

热度:164   发布时间:2007-07-26 08:44:26.0
从键盘中输入字符串a 并在a串中的最大元素后边插入字符串b(b【】=“ab”) 试编程
从键盘中输入字符串a 并在a串中的最大元素后边插入字符串b(b【】=“ab”) 试编程
如题 急急急。。。。。。。。。
达人指点
搜索更多相关的解决方案: 编程  字符串  元素  

----------------解决方案--------------------------------------------------------
题目不明白!a串中的最大元素?b(b【】=“ab”) ?
----------------解决方案--------------------------------------------------------
使用TC2.0:
main()
{
char s1[100],s2[100];
unsigned char k,j,i;
scanf("%s",s1);
s2[1]='b';
for(i=1,j=0;s1[i]!='\0';i++)
if(s1[i]>s1[i-1]) j=i;
for(k=0;k<=i+1;k++)
if(k==j)
{
s2[k]=s1[k];
k++;
s2[k]='b';
}
else s2[k]=s1[k];
printf("\n%s\n",s2);
}
----------------解决方案--------------------------------------------------------

/*
**从键盘输入字符串a,并在a串中的最大元素后边插入字符串b(b[ ]=”ab”),试编程
*/
#include <stdio.h>
#include <malloc.h>

#define NAMESIZE 100

char *MALLOC(int i);
char *GetString(int i);
char *InSert(char *name,int i);


char *MALLOC(int i)
{
char *ch;

ch=(char *)malloc(sizeof(char)*i);

if(ch==NULL)

{
fprintf(stderr," malloc() is not success!\n");

exit(1);
}

return ch;
}

char *GetString(int i)
{
int a;
char *p;

a=getchar();

if(a=='\n'||a==EOF)
{
p=MALLOC(i);

*(p+i-1)='\0';
return p;
}

else
{

p=GetString(i+1);
}

*(p+i-1)=a;
return p;
}
int Max(char *name)
{
int i=0,j=0;
char a=*name;

;
while(*(name+i)!='\0')
{
if(*(name+i)>a)
{
a=*(name+i);

j=i;

}
++i;
}

return j;
}

char * InSert(char *name,int i)
{
int k;

k=strlen(name);
name=(char *)realloc(name,sizeof(char)*(k+3));

while(k>i)
{
*(name+k+2)=*(name+k);
k--;
}

*(name+k+1)='a';
*(name+k+2)='b';

return name;

}


int main(void)
{
char *name;
int i=1;
int pos;

name=GetString(i);

printf("%s\n",name);

pos=Max(name);

name=InSert(name,pos);

printf("\n\n%s\n",name);


free(name);

return 0;

}


----------------解决方案--------------------------------------------------------
应该是很简单的程序吧,不过anlogo的显然不对
----------------解决方案--------------------------------------------------------
  相关解决方案