想请教一下,为什么只有一个输出值?怎么更改呀
想请教一下,为什么只有一个输出值?怎么更改呀
我的思路是,先给输入的值排序,然后再根据输入的字母输出
在scanf("%d%d%d"后,增加一个getchar(),否则下一行第一个%c会接收换行符的。
另外输出要求三个整数间加空格,你也没加
产生错误的原因应该是前面scanf读取整数后丢弃到缓冲区,而这个换行符就读取到d数组的第一个元素里了,用while循环里的getchar()把这个换行符及其他可能产生的多余字符读走就可以了。
##include <stdio.h>
void swap(int * a,int * b,int *c){
int t;
if(*a>*b){
t=*a;
*a=*b;
*b=t;
}
if(*a>*c){
t=*a;
*a=*c;
*c=t;
}
if(*b>*c){
t=*b;
*b=*c;
*c=t;
}
}
int main(void){
int a,b,c,i;
char d[3];
scanf("%d%d%d",&a,&b,&c);
while(getchar()!='\n') //因为读取前面的整数 scanf丢弃了换行符到缓冲区,所以需要先清除换行符
continue;
scanf("%c%c%c",&d[0],&d[1],&d[2]);
// printf("d[0]=%d,d[1]=%d,d[2]=%d\n",d[0],d[1],d[2]);
swap(&a,&b,&c);
for(i=0;i<3;i++){
if(d[i]=='A'){
printf("%d ",a);
}
if(d[i]=='B'){
printf("%d ",b);
}
if(d[i]=='C'){
printf("%d ",c);
}
}
return 0;
}
建议先得结果,再进行计算。输入几个值,先运行,然后总结,运行程序。
for循环是符合条件才输出吧
换种写法,供参考:
#include <stdio.h>
int main()
{
int d[3], i, j, t;
char a, b, c;
scanf("%d%d%d", &d[0], &d[1], &d[2]);
scanf(" %c%c%c", &a, &b, &c);
for (i = 0; i < 2; i++)
for (j = 0; j < 2 - i; j++)
if (d[j] > d[j + 1]) {
t = d[j]; d[j] = d[j + 1]; d[j + 1] = t;
}
printf("%d %d %d", d[a - 'A'], d[b - 'A'], d[c - 'A']);
return 0;
}