鱼C论坛

 找回密码
 立即注册
查看: 2180|回复: 4

(华为机考2)为什么输出结果少个“3”?

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

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

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

x
本帖最后由 NIANIMAMABIE 于 2020-3-11 02:18 编辑

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。



Input Param

n               输入随机数的个数

inputArray      n个随机整数组成的数组


Return Value

OutputArray    输出处理后的随机整数



注:测试用例保证输入参数的正确性,答题者无需验证。测试用例不止一组。

样例输入解释:
样例有两组测试
第一组是3个数字,分别是:2,2,1。
第二组是11个数字,分别是:10,20,40,32,67,40,20,89,300,400,15。

我的代码如下:
正常带入一些数值计算的时候没有问题,可是用题目给的数据带入的话,输出结果就少了3这个数值,有大佬能帮忙解决下嘛?


题目给的数据如下:
288 23 29 40 111 41 104 21 94 108 118 21 110 34 24 24 40 66 19 25 40 30 5 59 116 98 110 118 77 87 49 95 53 44 94 52 104 7 118 20 5 57 81 73 39 106 6 26 2 69 44 19 50 78 61 55 27 97 103 109 66 101 15 86 17 70 96 50 1 118 81 107 102 22 84 112 64 106 14 15 14 93 54 38 66 78 5 118 60 107 84 34 47 57 8 5 67 111 42 35 64 10 109 90 57 72 73 91 54 5 10 31 64 113 39 120 6 45 15 46 112 40 105 115 106 88 64 20 113 52 1 40 90 103 63 28 11 34 33 11 78 42 30 119 34 94 78 73 104 36 44 65 41 81 69 74 75 49 66 30 74 75 111 44 97 102 65 99 63 77 78 102 84 10 6 12 27 99 120 84 37 10 74 2 83 53 18 106 48 17 26 94 50 11 120 17 21 79 42 48 48 75 91 56 69 21 44 16 14 34 110 43 27 102 63 81 92 109 97 100 70 23 44 17 32 60 40 40 36 3 92 48 34 88 58 30 106 63 31 8 116 90 100 83 111 42 112 6 8 115 109 83 7 26 88 68 86 116 39 55 76 109 45 1 39 4 52 78 26 33 96 14 38 105 65 116 4 48 83 24 113 111 70 37 34 51 46 18 104


#include<stdio.h>
int fun(int a[1000],int n);
int main(void)
{
        int (x)[1000];
        int i,y;
        while(        scanf("%d",&y)!=EOF)
        {
                        for(i=0;i<y;i++)
        {
            scanf("%d",&x[i]);
        }
        fun(x,y);
}
}


int fun(int a[],int n)
{
        int b[1000];
        int i,j,m,temp;
    int count=1,num=0;
        b[0]=a[0];
        while(count<n)
        {
                for(i=0;i<count;i++)
                {
                        if(a[count]==b[i])
                        {
                                num++;
                                break;
                        }
                }
                if(i==count)
                {
                        b[count-num]=a[count];
                }
                count++;
        }
        m=n-num;
        for(i=0;i<m-1;i++)
        {
                for(j=i+1;j<m;j++)
                {
                        if(b[i]>b[j])
                        {
                                temp=b[i];
                                b[i]=b[j];
                                b[j]=temp;
                        }
                }
        }

        for(i=0;i<m;i++)
        {
                printf("%d\n",b[i]);
        }

} 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-11 05:20:55 | 显示全部楼层
本帖最后由 SHRS23 于 2020-3-11 05:24 编辑
1 = 1
2 = 2
3 = 3
4 = 4
5 = 5
6 = 6
7 = 7
8 = 8
9 = 10
10 = 11
11 = 12
12 = 14
13 = 15
14 = 16
15 = 17
16 = 18
17 = 19
18 = 20
19 = 21
20 = 22
21 = 23
22 = 24
23 = 25
24 = 26
25 = 27
26 = 28
27 = 29
28 = 30
29 = 31
30 = 32
31 = 33
32 = 34
33 = 35
34 = 36
35 = 37
36 = 38
37 = 39
38 = 40
39 = 41
40 = 42
41 = 43
42 = 44
43 = 45
44 = 46
45 = 47
46 = 48
47 = 49
48 = 50
49 = 51
50 = 52
51 = 53
52 = 54
53 = 55
54 = 56
55 = 57
56 = 58
57 = 59
58 = 60
59 = 61
60 = 63
61 = 64
62 = 65
63 = 66
64 = 67
65 = 68
66 = 69
67 = 70
68 = 72
69 = 73
70 = 74
71 = 75
72 = 76
73 = 77
74 = 78
75 = 79
76 = 81
77 = 83
78 = 84
79 = 86
80 = 87
81 = 88
82 = 90
83 = 91
84 = 92
85 = 93
86 = 94
87 = 95
88 = 96
89 = 97
90 = 98
91 = 99
92 = 100
93 = 101
94 = 102
95 = 103
96 = 104
97 = 105
98 = 106
99 = 107
100 = 108
101 = 109
102 = 110
103 = 111
104 = 112
105 = 113
106 = 115
107 = 116
108 = 118
109 = 119
110 = 120


为了方便比对,我把你的输出修改成了printf("%d = %d\n",i+1,b[i]);

其他未做修改,你的输出是没有 '3 = 3' 吗?

看样子我这里运行的结果是正确的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-11 11:26:23 | 显示全部楼层
SHRS23 发表于 2020-3-11 05:20
为了方便比对,我把你的输出修改成了printf("%d = %d\n",i+1,b);

其他未做修改,你的输出是没有 ' ...

啊!看来是我用的DEV-C++有问题。我用了VC6.0就也没问题。我的天,昨天想到半夜也找不出问题。谢谢你!真的非常感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-11 11:31:12 | 显示全部楼层
NIANIMAMABIE 发表于 2020-3-11 11:26
啊!看来是我用的DEV-C++有问题。我用了VC6.0就也没问题。我的天,昨天想到半夜也找不出问题。谢谢你!真 ...

确实,我刚在dev里试了一下也没有3,默认编译器是4.9.2 64bit,把编译器改成32bit就正常了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-11 12:35:57 | 显示全部楼层
SHRS23 发表于 2020-3-11 11:31
确实,我刚在dev里试了一下也没有3,默认编译器是4.9.2 64bit,把编译器改成32bit就正常了

好的!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 00:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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