2 love honeies1 love_honeies1 于 2016.02.01 20:44 提问

数组中去掉重复的数字,计算剩下的数字的有几个,我怎么写的不对了?

#include "stdio.h"
void main()
{
int nums[10]={1,2,1,2,3,3,5,6,7,7};
int i;
int n=1;int j=1;
for(i=1;i<10;i++)
{
for(j=0;j<i;j++)
{
if (nums[i]!=nums[j]) n++;
}
}
printf("%d",n);
}

3个回答

caozhy
caozhy   Ds   Rxr 2016.02.01 20:51
已采纳

if (nums[i]!=nums[j]) n++;
这里不对,一次比较不同不能说明这个数字就是不重复的。

#include "stdio.h"
void main()
{
    int nums[10]={1,2,1,2,3,3,5,6,7,7};
    int i;
    int n=1;int j=1;
    for(i=1;i<10;i++)
    {
        for(j=0;j<i;j++)
        {
            if (nums[i] == nums[j]) break;
        }
        if(i == j)
            n++;
    }
    printf("%d",n);
}

6

xtaddqqug
xtaddqqug   2016.02.01 21:02

正确代码如下:
void main()
{
int nums[10]={1,2,1,2,3,3,5,6,7,7};
int i;
int n=1;int j=1;
for(i=1;i<10;i++)
{
for(j=0;j<i;j++)
{
if (nums[j]==nums[i]) break;//判断是否重复,重复跳出循环
}
if(j==i)n++;//没重复,n++
}
printf("%d",n);
}

qq_25974983
qq_25974983   2016.02.01 20:50

是不对啊:你在计算数组中不同的数对的个数,而不是计算不同的数个数

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!