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

2024-12-03 15:43:54
推荐回答(5个)
回答1:

EOF (Ctrl_Z) 要用 getchar() 才能抓到。
给你拆开为:a=getchar() 和 scanf(" %c %c",&b,&c); 用 fflush(stdin); 清理 输入流残余信息。

#include
int main (){
char a,b,c,d;
while( (a=getchar()) !=EOF)
{
scanf(" %c %c",&b,&c);
fflush(stdin);
if(a>b) {d=a;a=b;b=d;}
if(a>c) {d=a;a=c;c=d;}
if(b>c) {d=b;b=c;c=d;}
printf("%c %c %c\n",a,b,c);
}
return 0;
}

回答2:

#include "stdio.h"
void main(void){
char a,b,c,d;
while(1){
printf("Type 3 char...\n");
scanf(" %c %c %c",&a,&b,&c);
if(a>b) {d=a;a=b;b=d;}
if(a>c) {d=a;a=c;c=d;}
if(b>c) {d=b;b=c;c=d;}
printf("%c %c %c\n",a,b,c);
printf("Next(y/n)?");
scanf(" %c",&d);
if((d&0xDF)!='Y') break;
}
printf("Hello World!\n");
}

回答3:

#include

int main(void)
{
char a,b,c,d;
while(scanf("%c%c%c",&a,&b,&c)!=EOF)
{
if(a>b) {d=a;a=b;b=d;}
if(a>c) {d=a;a=c;c=d;}
if(b>c) {d=b;b=c;c=d;}
printf("%c%c%c\n",a,b,c);
printf("%d\n",'a');
printf("%d\n", a);
while(getchar() != '\n');
}
printf("Hello World!\n");
return 0;
}
这是修改后的代码,主要说明if()中你比较的是a,b,c,三个字母ascii的大小,而不是变量a,b,c的大小。还有就是加了一个清空缓存区的while(),后面加的两个printf是告诉你区别,前一个97不会变

回答4:

if('a'>'b') {d=a;a=b;b=d;}
    if('a'>'c') {d=a;a=c;c=d;}
    else if('b'>'c') {d=b;b=c;c=d;}

是对输入字符的变量进行比较,而不是对于常量进行比较

回答5:

看着像对 但是瞅着不太顺眼啊 一般字符用getchar()吧……