鱼C论坛

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

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

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

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

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

x
#include <stdio.h>
 
int main()
{
 
        int a[10];
        int  j, swap;
        int i=0; 

        for (i = 0; i < 10; i++)
        {
          
          printf("请输入100000以内的数字,第%d个数字是",i+1);
          scanf("%d", &a[i]);
          
          if((a[i]<='z'&&a[i]>='a')||(a[i]<='Z'&&a[i]>='A'))
          {printf:("要输入的是数字");
           
          }
         
     }
        for (i = 1; i < 9; i++)
                for (j = 0; j < 9-i; j++)
                        if (a[j] > a[j+1])
                        {
                                swap = a[j];
                                a[j] = a[j+1];
                                a[j+1] = swap;
                        }
 
        for (i = 0; i < 10; i++)
            
                printf("%d ", a[i]);
 
 
        return 0;
}
最佳答案
2020-11-10 18:19:00
本帖最后由 jackz007 于 2020-11-10 18:21 编辑
#include <stdio.h>
#include <string.h>

int main()
{
        char s[256]                                                              ;
        int a[10]  , i , j , k , swap                                            ;
        for (i = 0 ; i < 10 ; i ++) {
                do {
                        printf("请输入100000以内的数字,第%d个数字是 : " , i + 1) ;
                        fflush(stdout)                                           ;
                        fgets(s , 256 , stdin)                                   ;
                        k = sscanf(s , "%d" , & a[i])                            ;
                        if(! k) printf("要输入的是数字!\n\n")                   ;
                } while(! k)                                                     ;
        }
        for(i = 1 ; i < 10 ; i ++) {
                for(j = i ; j && a[j] < a[j - 1] ; j --) {
                        swap = a[j - 1]                                      ;
                        a[j - 1] = a[j]                                      ;
                        a[j] = swap                                          ;
                }
        }
        printf("%d" , a[0])                                                  ;
        for(i = 1 ; i < 10 ; i ++) printf("\t%d" , a[i])                     ;
        printf("\n\n")                                                       ;
}
        编译、运行实况:
D:\0002.Exercise\C>g++ -o x x.c

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

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

请输入100000以内的数字,第5个数字是 : 5
请输入100000以内的数字,第6个数字是 : 0
请输入100000以内的数字,第7个数字是 : 1
请输入100000以内的数字,第8个数字是 : 2
请输入100000以内的数字,第9个数字是 : 3
请输入100000以内的数字,第10个数字是 : 4
0       1       2       3       4       5       6       7       8       9


D:\0002.Exercise\C>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

int main()
{
        char s[256]                                                              ;
        int a[10]  , i , j , k , swap                                            ;
        for (i = 0 ; i < 10 ; i ++) {
                do {
                        printf("请输入100000以内的数字,第%d个数字是 : " , i + 1) ;
                        fflush(stdout)                                           ;
                        fgets(s , 256 , stdin)                                   ;
                        k = sscanf(s , "%d" , & a[i])                            ;
                        if(! k) printf("要输入的是数字!\n\n")                   ;
                } while(! k)                                                     ;
        }
        for(i = 1 ; i < 10 ; i ++) {
                for(j = i ; j && a[j] < a[j - 1] ; j --) {
                        swap = a[j - 1]                                      ;
                        a[j - 1] = a[j]                                      ;
                        a[j] = swap                                          ;
                }
        }
        printf("%d" , a[0])                                                  ;
        for(i = 1 ; i < 10 ; i ++) printf("\t%d" , a[i])                     ;
        printf("\n\n")                                                       ;
}
        编译、运行实况:
D:\0002.Exercise\C>g++ -o x x.c

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

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

请输入100000以内的数字,第5个数字是 : 5
请输入100000以内的数字,第6个数字是 : 0
请输入100000以内的数字,第7个数字是 : 1
请输入100000以内的数字,第8个数字是 : 2
请输入100000以内的数字,第9个数字是 : 3
请输入100000以内的数字,第10个数字是 : 4
0       1       2       3       4       5       6       7       8       9


D:\0002.Exercise\C>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 16:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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