题目在附件
#include<stdio.h>int main(){
char a,b,c,t;
while(scanf("%c%c%c\n",&a,&b,&c)!=EOF)
{
scanf("%c%c%c\n",&a,&b,&c);
if(a>b){
t=a;a=b;b=t;
}
if(b>c){
t=b;b=c;c=t;
}
if(a>c){
t=a;a=c;c=t;
}
printf("%c %c %c\n",&a,&b,&c);
}
return 0;
} 本帖最后由 baige 于 2020-9-25 19:14 编辑
C语言好像没引用就换成指针了
#include <stdio.h>
void swap(char *a, char *b){
char t = *a;
*a = *b;
*b = t;
}
int main(void){
char a,b,c;
while(scanf("%c%c%c",&a,&b,&c)!=EOF)
{
getchar();//吃掉回车
if(a>b)swap(&a,&b);
if(a>c)swap(&a,&c);
if(b>c)swap(&b,&c);
printf("%c %c %c\n",a,b,c);
}
return 0;
} 思路的话,就是把最小的放在a,然后比较b,c,如果b>c就交换b,c即可 本帖最后由 405794672 于 2020-9-25 19:45 编辑
题目要求连续输入三组,那么,就得有九个空间接收。用数组吧。三个数组或者一个二维数组。
另外,while循环时已经输入了一次,你在里面没有必要再scanf。这会继续输入,而且会覆盖之前的输入。
还有EOF是文件里的。不知道输入有没有。一般不能这么写。应该写!='\n'。
这个还是用for比较好。不过硬要用while也可以。想点办法。
int main()
{
char a,t;
int i;
while(i<2)
{
scanf("%c%c%c",&a,&a,&a);
if(a>b)
{
t=a;a=b;b=t;
}
if(b>c)
{
t=b;b=c;c=t;
}
if(a>c)
{
t=a;a=c;c=t;
}
i++;
}
i=0;
while(i<2)
{
printf("%c %c %c\n",a,a,a);
i++;
}
return 0;
} baige 发表于 2020-9-25 18:44
C语言好像没引用就换成指针了
我还是不太明白为什么我的行不通,而您的改成函数就行 本帖最后由 baige 于 2020-9-26 08:41 编辑
4399king 发表于 2020-9-26 08:33
我还是不太明白为什么我的行不通,而您的改成函数就行
#include<stdio.h>
int main(void){
int a,b,c,t;
while(scanf("%c%c%c",&a,&b,&c)!=EOF)// scanf里面不要放\n
{
getchar();//最后吃掉回车
// 这一句删掉
//scanf("%c%c%c\n",&a,&b,&c);
if(a>b){
t=a;a=b;b=t;
}
// 两个if换个位置,要不然会有逻辑的错误,对于逆序,和中大小有错
if(a>c){
t=a;a=c;c=t;
}
if(b>c){
t=b;b=c;c=t;
}
// 输出不需要 取地址符&
printf("%c %c %c\n",a,b,c);
}
return 0;
} 之所以写函数只是因为多次用到这个功能 本帖最后由 Cool_Breeze 于 2020-9-26 09:23 编辑
我也来练练!
#include<stdio.h>
#define LIMIT 3
void select_sort(char* array, short size);
int main(void)
{
char array = {0};
int count = 0, single = 0;
while (count < LIMIT)
{
scanf("%s", array);
*(array+LIMIT) = '\0'; // 字符串截断
count ++;
}
for (count=0; count<LIMIT; count++)
{
select_sort(array, LIMIT);
for (single=0; single<LIMIT; single++)
printf("%c ", *(array+single));
putchar('\n');
}
return 0;
}
void select_sort(char* array, short size)
{
register short i,j,index;
char temp;
for (i=0; i<size; i++)
{
index = i;
for (j=i+1; j<size; j++)
{
if (*(array+index) > *(array+j))
{
index = j;
}
}
if (index != i)
{
temp = *(array+i);
*(array+i) = *(array+index);
*(array+index) = temp;
}
}
}
result:
cba123
kjher
yzx2
a b c
h j k
x y z
--------------------------------
Process exited after 41.24 seconds with return value 0
请按任意键继续. . .
页:
[1]