如题 急急急。。。。。。。。。
达人指点
----------------解决方案--------------------------------------------------------
题目不明白!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的显然不对
----------------解决方案--------------------------------------------------------