鱼C论坛

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

[已解决]题目在附件

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

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

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

x
  1. Screenshot_20200925_180122.jpg
复制代码
最佳答案
2020-9-26 08:39:04
本帖最后由 baige 于 2020-9-26 08:41 编辑
4399king 发表于 2020-9-26 08:33
我还是不太明白为什么我的行不通,而您的改成函数就行

  1. #include<stdio.h>

  2. int main(void){
  3.         int a,b,c,t;
  4.         while(scanf("%c%c%c",&a,&b,&c)!=EOF)// scanf里面不要放\n
  5.         {
  6.                 getchar();//最后吃掉回车
  7.                 // 这一句删掉
  8.                 //scanf("%c%c%c\n",&a,&b,&c);

  9.                 if(a>b){
  10.                         t=a;a=b;b=t;
  11.                 }
  12.                 // 两个if换个位置,要不然会有逻辑的错误,对于逆序,和中大小有错
  13.                 if(a>c){
  14.                         t=a;a=c;c=t;
  15.                 }
  16.                 if(b>c){
  17.                         t=b;b=c;c=t;
  18.                 }
  19.                 // 输出不需要 取地址符&
  20.                 printf("%c %c %c\n",a,b,c);
  21.         }
  22.         return 0;
  23. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-25 18:03:31 | 显示全部楼层
  1. #include<stdio.h>
  2. int main(){
  3. char a,b,c,t;
  4. while(scanf("%c%c%c\n",&a,&b,&c)!=EOF)
  5. {
  6. scanf("%c%c%c\n",&a,&b,&c);

  7. if(a>b){
  8. t=a;a=b;b=t;
  9. }
  10. if(b>c){
  11. t=b;b=c;c=t;
  12. }
  13. if(a>c){
  14. t=a;a=c;c=t;
  15. }
  16. printf("%c %c %c\n",&a,&b,&c);
  17. }
  18. return 0;
  19. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-25 18:44:26 | 显示全部楼层
本帖最后由 baige 于 2020-9-25 19:14 编辑

C语言好像没引用就换成指针了
  1. #include <stdio.h>

  2. void swap(char *a, char *b){
  3.     char t = *a;
  4.     *a = *b;
  5.     *b = t;
  6. }

  7. int main(void){
  8.     char a,b,c;
  9.     while(scanf("%c%c%c",&a,&b,&c)!=EOF)
  10.     {
  11.         getchar();//吃掉回车
  12.         if(a>b)swap(&a,&b);
  13.         if(a>c)swap(&a,&c);
  14.         if(b>c)swap(&b,&c);
  15.         printf("%c %c %c\n",a,b,c);
  16.     }
  17.     return 0;
  18. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-25 19:18:46 | 显示全部楼层
思路的话,就是把最小的放在a,然后比较b,c,如果b>c就交换b,c即可
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

题目要求连续输入三组,那么,就得有九个空间接收。用数组吧。三个数组或者一个二维数组。
另外,while循环时已经输入了一次,你在里面没有必要再scanf。这会继续输入,而且会覆盖之前的输入。
还有EOF是文件里的。不知道输入有没有。一般不能这么写。应该写!='\n'。
这个还是用for比较好。不过硬要用while也可以。想点办法。
  1. int main()
  2. {
  3.      char a[3][3],t;
  4.      int i;
  5.      while(i<2)
  6.      {
  7.           scanf("%c%c%c",&a[i][0],&a[i][1],&a[i][2]);
  8.           if(a>b)
  9.           {
  10.                 t=a;a=b;b=t;
  11.            }
  12.           if(b>c)
  13.          {
  14.               t=b;b=c;c=t;
  15.           }
  16.           if(a>c)
  17.          {
  18.               t=a;a=c;c=t;
  19.           }
  20.           i++;                 
  21.      }
  22.      i=0;
  23.      while(i<2)
  24.       {
  25.            printf("%c %c %c\n",a[i][0],a[i][1],a[i][2]);
  26.            i++;
  27.       }
  28.       return 0;
  29. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

我还是不太明白为什么我的行不通,而您的改成函数就行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-26 08:39:04 | 显示全部楼层    本楼为最佳答案   
本帖最后由 baige 于 2020-9-26 08:41 编辑
4399king 发表于 2020-9-26 08:33
我还是不太明白为什么我的行不通,而您的改成函数就行

  1. #include<stdio.h>

  2. int main(void){
  3.         int a,b,c,t;
  4.         while(scanf("%c%c%c",&a,&b,&c)!=EOF)// scanf里面不要放\n
  5.         {
  6.                 getchar();//最后吃掉回车
  7.                 // 这一句删掉
  8.                 //scanf("%c%c%c\n",&a,&b,&c);

  9.                 if(a>b){
  10.                         t=a;a=b;b=t;
  11.                 }
  12.                 // 两个if换个位置,要不然会有逻辑的错误,对于逆序,和中大小有错
  13.                 if(a>c){
  14.                         t=a;a=c;c=t;
  15.                 }
  16.                 if(b>c){
  17.                         t=b;b=c;c=t;
  18.                 }
  19.                 // 输出不需要 取地址符&
  20.                 printf("%c %c %c\n",a,b,c);
  21.         }
  22.         return 0;
  23. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-26 08:40:11 | 显示全部楼层
之所以写函数只是因为多次用到这个功能
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-26 09:16:10 | 显示全部楼层
本帖最后由 Cool_Breeze 于 2020-9-26 09:23 编辑

我也来练练!
  1. #include<stdio.h>
  2. #define LIMIT 3
  3. void select_sort(char* array, short size);

  4. int main(void)
  5. {
  6.         char array[LIMIT][1024] = {0};
  7.         int count = 0, single = 0;
  8.         while (count < LIMIT)
  9.         {
  10.                 scanf("%s", array[count]);
  11.                 *(array[count]+LIMIT) = '\0'; // 字符串截断
  12.                 count ++;
  13.         }
  14.        
  15.         for (count=0; count<LIMIT; count++)
  16.         {
  17.                 select_sort(array[count], LIMIT);
  18.                 for (single=0; single<LIMIT; single++)
  19.                         printf("%c ", *(array[count]+single));
  20.                 putchar('\n');
  21.         }
  22.        
  23.         return 0;
  24. }

  25. void select_sort(char* array, short size)
  26. {
  27.         register short i,j,index;
  28.         char temp;
  29.         for (i=0; i<size; i++)
  30.         {
  31.                 index = i;
  32.                 for (j=i+1; j<size; j++)
  33.                 {
  34.                         if (*(array+index) > *(array+j))
  35.                         {
  36.                                 index = j;
  37.                         }
  38.                 }
  39.                 if (index != i)
  40.                 {
  41.                         temp = *(array+i);
  42.                         *(array+i) = *(array+index);
  43.                         *(array+index) = temp;
  44.                 }
  45.         }
  46. }
复制代码


result:
  1. cba123
  2. kjher
  3. yzx2
  4. a b c
  5. h j k
  6. x y z

  7. --------------------------------
  8. Process exited after 41.24 seconds with return value 0
  9. 请按任意键继续. . .
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-15 06:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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