鱼C论坛

 找回密码
 立即注册
查看: 1107|回复: 8

[已解决]题目在附件

[复制链接]
发表于 2020-9-25 18:02:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x



Screenshot_20200925_180122.jpg


最佳答案
2020-9-26 08:39:04
本帖最后由 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-25 18:03:31 | 显示全部楼层
#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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-25 18:44:26 | 显示全部楼层
本帖最后由 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-25 19:18:46 | 显示全部楼层
思路的话,就是把最小的放在a,然后比较b,c,如果b>c就交换b,c即可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-25 19:43:50 | 显示全部楼层
本帖最后由 405794672 于 2020-9-25 19:45 编辑

题目要求连续输入三组,那么,就得有九个空间接收。用数组吧。三个数组或者一个二维数组。
另外,while循环时已经输入了一次,你在里面没有必要再scanf。这会继续输入,而且会覆盖之前的输入。
还有EOF是文件里的。不知道输入有没有。一般不能这么写。应该写!='\n'。
这个还是用for比较好。不过硬要用while也可以。想点办法。
int main()
{
     char a[3][3],t;
     int i;
     while(i<2)
     {
          scanf("%c%c%c",&a[i][0],&a[i][1],&a[i][2]);
          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[i][0],a[i][1],a[i][2]);
           i++;
      }
      return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-26 08:33:11 | 显示全部楼层
baige 发表于 2020-9-25 18:44
C语言好像没引用就换成指针了

我还是不太明白为什么我的行不通,而您的改成函数就行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-26 08:39:04 | 显示全部楼层    本楼为最佳答案   
本帖最后由 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-26 08:40:11 | 显示全部楼层
之所以写函数只是因为多次用到这个功能
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-26 09:16:10 | 显示全部楼层
本帖最后由 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[LIMIT][1024] = {0};
        int count = 0, single = 0;
        while (count < LIMIT)
        {
                scanf("%s", array[count]);
                *(array[count]+LIMIT) = '\0'; // 字符串截断 
                count ++;
        }
        
        for (count=0; count<LIMIT; count++)
        {
                select_sort(array[count], LIMIT);
                for (single=0; single<LIMIT; single++)
                        printf("%c ", *(array[count]+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
请按任意键继续. . .
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 23:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表