杭电acm第2000两千题

2024-12-28 04:17:58
推荐回答(4个)
回答1:

简单的要命的题,思路根本都不用想。不过还是暴露了自己很多问题。
最大的问题是字符串的输入输出,%d会吃回车,在这里纠结了很长时间,后来加上getchar就好了。

#include
void swap(char *x,char *y)
{
char temp;
temp = *x;
*x = *y;
*y = temp;
}
int main()
{
char a,b,c;
while( scanf("%c%c%c",&a,&b,&c)!=EOF )
{
if(a>b)
swap(&a,&b);
if(b>c)
swap(&b,&c);
if(a>b)
swap(&a,&b);
printf("%c %c %c/n",a,b,c);
getchar();
}
return 0;
}

回答2:

#include
int min(char a,char b)
{
if(a>b)
return(b);
else return(a);
}
int max(char a,char b)
{
if(a>b)
return(a);
else return(b);
}
int main()
{
char a,b,c;
int e[3];
char x,y,z;
while(scanf("%c%c%c",&a,&b,&c)!=EOF)
{
getchar();//这是我加上的运行可以
x=min(a,b);
e[0]=min(x,c);
y=max(a,b);
e[2]=max(y,c);
z=min(a,b);
e[1]=max(z,c);
printf("%c %c %c\n",e[0],e[1],e[2]);
}
return 0;
}//而且这个程序是错误的,你可以测试一下“qer”然后自己再改一下,这是给你的提示,你自己试试

回答3:

找中间那个字符的时候--逻辑错了 亲 ,,,, e[1]有可能最大 
    比如
      z=min(1,2)
      e[1] = max(z,3)
   e[1]是3吧
  怎么改不用俄说了吧  亲,,,
   

回答4:

while(scanf("%c%c%c",&a,&b,&c)!=EOF) 改成
while (scanf("%c%c%c", &a, &b, &c) != EOF && getchar()) 以消去输入的 '\n' 字符,如果还不能ac就看看下面的:
#include

void swap(char *a, char *b)
{
char t = *a;
*a = *b;
*b = t;
}
int main()
{
char a, b, c;
while (scanf("%c%c%c", &a, &b, &c) != EOF && getchar()) {
if (a > b) swap(&a, &b);
if (b > c) swap(&b, &c);
if (a > b) swap(&a, &b);
printf("%c %c %c\n", a, b, c);
}
return 0;
}