不知道这段代码错在哪?

来源:百度知道 编辑:UC知道 时间:2024/06/15 05:24:46
#include"stdio.h"
#define MAX 200
void expand(char s1[],char s2[]);
main()
{char s1[MAX],s2[MAX],c;
int i=0;
while((c=getchar())!='@ ')
s1[i++]=c;
s1[i]='\n';
expand(s1,s2);
for(i=0;s2[i]!='\0';i++)
printf("%c",s2[i]);
getch();
}

void expand(char s1[],char s2[])
{int i,j;
char c;
for(i=0,j=0;(c=s1[i++])!='\n';){
if(s1[i]=='-'&&s2[i+1]>c)
for(;c<s2[i+2];c++)
s2[j++]=c;
else
s2[j++]=c;
}
return;
}

将字符串S1中速记符号如a-z扩充成abc.....xyz.

#include"stdio.h"
#include <conio.h>
#define MAX 200
void expand(char s1[],char s2[]);
main()
{char s1[MAX],s2[MAX],c;
int i=0;
while((c=getchar())!='@')
s1[i++]=c;
s1[i]='\0';
expand(s1,s2);
for(i=0;s2[i]!='\0';i++)
printf("%c",s2[i]);
getch();
}
void expand(char s1[],char s2[])
{int i,j;
char c;
for(i=0,j=0;(c=s1[i++])!='\0';){
if(s1[i]=='-'&&s1[i+1]>c)
{for(;c<s1[i+1];c++)
s2[j++]=c;
i++;}
else
s2[j++]=c;
}

s2[j]='\0';
return;
}
这样就正确了

while((c=getchar())!='@ ')//这句‘@ ’中是不是多了一个空格?应该是‘@’吧,不然结束不了。
还有getch(); 是不是写错了,
应该是getchar()。
改了上面两处后C++能编译了。