(c语言)输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符

输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。
Input

输入数据有多组,每组占一行,有三个字符组成,之间无空格。
Output

对于每组输入数据,输出一行,字符中间用一个空格分开。

写了两个代码=-=都有错误。。。
第一个:
#include<stdio.h>
int main()
{
char a,b,c;
while(scanf("%c%c%c",&a,&b,&c)!=EOF)
{
if((a<b)&&(b<c))
printf("%c %c %c",a,b,c);
if((a<c)&&(c<b))
printf("%c %c %c",a,c,b);
if((b<a)&&(a<c))
printf("%c %c %c",b,a,c);
if((b<c)&&(c<a))
printf("%c %c %c",b,c,a);
if((c<a)&&(a<b))
printf("%c %c %c",c,a,b);
if((c<b)&&(b<a))
printf("%c %c %c",c,b,a);
}
return 0;
}

第二个
#include<stdio.h>
int main()
{
char a,b,c,temp;
while(scanf("%c%c%c",&a,&b,&c)!=EOF)
{
if(b>a)
{temp=a;
a=b;
b=temp;}
if(c>b)
{temp=c;
c=b;
b=temp;}
if(b>a)
{temp=a;
a=b;
b=temp;}
printf("%c %c %c",a,b,c);
}
return 0;
}

两个都错。错哪里了。。。

#include"stdio.h"

charmax(chara,charb)

if(a>b)

returna;

else

returnb;

charmin(chara,charb)

if(a<b)

returna;

else

returnb;

intmain(intargc,charconst*argv[])

charc0,c1,c2,c3,c4,c5,c6,c7;

printf("Pleaseinputnum:\n");

scanf("%c%c%c",&c0,&c1,&c2);

c3=max(c0,c1);

c4=max(c3,c2);

c5=min(c0,c1);

c6=min(c5,c2);

c7=c0+c1+c2-c4-c6;

printf("%c%c%c\n",c4,c7,c6);

return0;

扩展资料:

printf()用法:

printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。在编写程序时经常会用到此函数。函数的原型为:

int printf(const char*format,...);函数返回值为整型。若成功则返回输出的字符数,输出出错则返回负值。

printf()函数的调用格式为:

printf("&lt;格式化字符串&gt;",&lt;参量表&gt;);其中格式化字符串包括两部分内容:

一部分是正常字符,这些字符将按原样输出;

另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。

参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出;参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。

规定符

%d十进制有符号整数

%u十进制无符号整数

%f浮点数

%s字符串

%c单个字符

%p指针的值

%e指数形式的浮点数

%x,%X无符号以十六进制表示的整数

%o无符号以八进制表示的整数

%g把输出的值按照%e或者%f类型中输出长度较小的方式输出

%p输出地址符

%lu 32位无符号整数

%llu 64位无符号整数

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-11-09
第2个回答  推荐于2016-11-22
#include<stdio.h>
int main()
{
char a,b,c;
while(scanf(" %c%c%c",&a,&b,&c)!=EOF) //加个空格,第二个也一样
{
if((a<b)&&(b<c))
printf("%c %c %c",a,b,c);
if((a<c)&&(c<b))
printf("%c %c %c",a,c,b);
if((b<a)&&(a<c))
printf("%c %c %c",b,a,c);
if((b<c)&&(c<a))
printf("%c %c %c",b,c,a);
if((c<a)&&(a<b))
printf("%c %c %c",c,a,b);
if((c<b)&&(b<a))
printf("%c %c %c",c,b,a);
}
return 0;
}

追问

谢谢
改动完后的确通过了
但是能解释一下为什么吗。。。

追答

回车也是字符,它会把回车给读进去,加了空格就可避免

本回答被提问者和网友采纳
第3个回答  2019-03-25
#include<stdio.h>
int
main()
{
int
a,b,c;
int
max,mid,min;
while((a=getchar(),b=getchar(),c=getchar(),getchar())!=EOF)
//这里再加一个getchar()
读取你的回车
回车也是字符
{
max=a;
if(b>=max)
max=b;
if(c>=max)
max=c;
min=a;
if(b<=min)
min=b;
if(c<=min)
min=c;
mid=a+b+c-max-min;
putchar(min);
putchar('
');
putchar(mid);
putchar('
');
putchar(max);
printf("\n");
}
}
第4个回答  2019-06-05
#include<stdio.h>
int
main()
{
int
a,b,c;
int
max,mid,min;
while((a=getchar(),b=getchar(),c=getchar(),getchar())!=EOF)
//这里再加一个getchar()
读取你的回车
回车也是字符
{
max=a;
if(b>=max)
max=b;
if(c>=max)
max=c;
min=a;
if(b<=min)
min=b;
if(c<=min)
min=c;
mid=a+b+c-max-min;
putchar(min);
putchar('
');
putchar(mid);
putchar('
');
putchar(max);
printf("\n");
}
}
相似回答