main()
{ int i;
char s[6]={"abcde"},*p,*p2;
p=s; p2=s+5;
for(i=0;i<5;i++,p++)
{
p=(p-s>2)?(p2-i-1):p;
printf("%c",*p);
}
getch();
}
我的原意是要输出 :abcba;但实际上却输出:abcbc;
请修改,谢谢!
[此贴子已经被作者于2005-1-27 16:18:36编辑过]
[此贴子已经被作者于2005-1-27 16:18:36编辑过]
main() { char String[100],*ptr; int n,i;
scanf("%s",String); for(;;) { scanf("%d",&n); ptr=String;
for(i=0;i<n;i++) { printf("%c",*ptr);
ptr= i<n/2?ptr+1-!(n%2)*!((i+1)*2-n):ptr-1;
} } }
[此贴子已经被作者于2005-1-27 21:47:44编辑过]
又看了一下,有个地方更正一下: main() { char String[100],*ptr; int n,i;
scanf("%s",String); for(;;) { scanf("%d",&n); ptr=String;
for(i=0;i<n;i++) { printf("%c",*ptr);
ptr= i<n/2?ptr+1-!((i+1)*2-n):ptr-1; // !(n%2) 是多余的
} printf("\n"); } }
我把“三少爷”的程序稍做修改就可以在Win-Tc中正确显示了,看来思路还是对的,且只要公式对,就可行了。同时谢谢各位的分析。
main() { int i; char s[6]={"abcde"},*p=s; for(i=0;i<5;i++) printf("%c",*(p+(i>2?4-i:i))); getch(); }