鱼C论坛

 找回密码
 立即注册
查看: 818|回复: 1

[已解决]数字的大小排列问题,输入10个数字输出从小到大。输入字母后会出错,求指点,谢谢啦。

[复制链接]
发表于 2020-11-10 17:39:21 | 显示全部楼层 |阅读模式

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

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

x
  1. #include <stdio.h>

  2. int main()
  3. {

  4.         int a[10];
  5.         int  j, swap;
  6.         int i=0;

  7.         for (i = 0; i < 10; i++)
  8.         {
  9.           
  10.           printf("请输入100000以内的数字,第%d个数字是",i+1);
  11.           scanf("%d", &a[i]);
  12.           
  13.           if((a[i]<='z'&&a[i]>='a')||(a[i]<='Z'&&a[i]>='A'))
  14.           {printf:("要输入的是数字");
  15.           
  16.           }
  17.          
  18.      }
  19.         for (i = 1; i < 9; i++)
  20.                 for (j = 0; j < 9-i; j++)
  21.                         if (a[j] > a[j+1])
  22.                         {
  23.                                 swap = a[j];
  24.                                 a[j] = a[j+1];
  25.                                 a[j+1] = swap;
  26.                         }

  27.         for (i = 0; i < 10; i++)
  28.             
  29.                 printf("%d ", a[i]);


  30.         return 0;
  31. }
复制代码
最佳答案
2020-11-10 18:19:00
本帖最后由 jackz007 于 2020-11-10 18:21 编辑
  1. #include <stdio.h>
  2. #include <string.h>

  3. int main()
  4. {
  5.         char s[256]                                                              ;
  6.         int a[10]  , i , j , k , swap                                            ;
  7.         for (i = 0 ; i < 10 ; i ++) {
  8.                 do {
  9.                         printf("请输入100000以内的数字,第%d个数字是 : " , i + 1) ;
  10.                         fflush(stdout)                                           ;
  11.                         fgets(s , 256 , stdin)                                   ;
  12.                         k = sscanf(s , "%d" , & a[i])                            ;
  13.                         if(! k) printf("要输入的是数字!\n\n")                   ;
  14.                 } while(! k)                                                     ;
  15.         }
  16.         for(i = 1 ; i < 10 ; i ++) {
  17.                 for(j = i ; j && a[j] < a[j - 1] ; j --) {
  18.                         swap = a[j - 1]                                      ;
  19.                         a[j - 1] = a[j]                                      ;
  20.                         a[j] = swap                                          ;
  21.                 }
  22.         }
  23.         printf("%d" , a[0])                                                  ;
  24.         for(i = 1 ; i < 10 ; i ++) printf("\t%d" , a[i])                     ;
  25.         printf("\n\n")                                                       ;
  26. }
复制代码

        编译、运行实况:
  1. D:\0002.Exercise\C>g++ -o x x.c

  2. D:\0002.Exercise\C>x
  3. 请输入100000以内的数字,第1个数字是 : 9
  4. 请输入100000以内的数字,第2个数字是 : 8
  5. 请输入100000以内的数字,第3个数字是 : 7
  6. 请输入100000以内的数字,第4个数字是 : A
  7. 要输入的是数字!

  8. 请输入100000以内的数字,第4个数字是 : 6
  9. 请输入100000以内的数字,第5个数字是 : C
  10. 要输入的是数字!

  11. 请输入100000以内的数字,第5个数字是 : 5
  12. 请输入100000以内的数字,第6个数字是 : 0
  13. 请输入100000以内的数字,第7个数字是 : 1
  14. 请输入100000以内的数字,第8个数字是 : 2
  15. 请输入100000以内的数字,第9个数字是 : 3
  16. 请输入100000以内的数字,第10个数字是 : 4
  17. 0       1       2       3       4       5       6       7       8       9


  18. D:\0002.Exercise\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-10 18:19:00 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2020-11-10 18:21 编辑
  1. #include <stdio.h>
  2. #include <string.h>

  3. int main()
  4. {
  5.         char s[256]                                                              ;
  6.         int a[10]  , i , j , k , swap                                            ;
  7.         for (i = 0 ; i < 10 ; i ++) {
  8.                 do {
  9.                         printf("请输入100000以内的数字,第%d个数字是 : " , i + 1) ;
  10.                         fflush(stdout)                                           ;
  11.                         fgets(s , 256 , stdin)                                   ;
  12.                         k = sscanf(s , "%d" , & a[i])                            ;
  13.                         if(! k) printf("要输入的是数字!\n\n")                   ;
  14.                 } while(! k)                                                     ;
  15.         }
  16.         for(i = 1 ; i < 10 ; i ++) {
  17.                 for(j = i ; j && a[j] < a[j - 1] ; j --) {
  18.                         swap = a[j - 1]                                      ;
  19.                         a[j - 1] = a[j]                                      ;
  20.                         a[j] = swap                                          ;
  21.                 }
  22.         }
  23.         printf("%d" , a[0])                                                  ;
  24.         for(i = 1 ; i < 10 ; i ++) printf("\t%d" , a[i])                     ;
  25.         printf("\n\n")                                                       ;
  26. }
复制代码

        编译、运行实况:
  1. D:\0002.Exercise\C>g++ -o x x.c

  2. D:\0002.Exercise\C>x
  3. 请输入100000以内的数字,第1个数字是 : 9
  4. 请输入100000以内的数字,第2个数字是 : 8
  5. 请输入100000以内的数字,第3个数字是 : 7
  6. 请输入100000以内的数字,第4个数字是 : A
  7. 要输入的是数字!

  8. 请输入100000以内的数字,第4个数字是 : 6
  9. 请输入100000以内的数字,第5个数字是 : C
  10. 要输入的是数字!

  11. 请输入100000以内的数字,第5个数字是 : 5
  12. 请输入100000以内的数字,第6个数字是 : 0
  13. 请输入100000以内的数字,第7个数字是 : 1
  14. 请输入100000以内的数字,第8个数字是 : 2
  15. 请输入100000以内的数字,第9个数字是 : 3
  16. 请输入100000以内的数字,第10个数字是 : 4
  17. 0       1       2       3       4       5       6       7       8       9


  18. D:\0002.Exercise\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-9 19:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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