注册 登录
编程论坛 C图形专区

下面是将字符串中重复的数字删除的代码,求大神看看有问题吗?

QwertySun 发布于 2016-12-07 18:20, 1730 次点击
for(i = 0; i < n - 1; i++)
        {
            for(j = i + 1; j < n; j++)
            {
                if(a[i] == a[j])
                {
                    for(k = i; k < n; k++)
                        a[k] = a[k + 1];
                    j--;
                    n--;
                }
            }
        }
6 回复
#2
grmmylbs2016-12-09 10:12
如果字符串全是数字,没啥问题,如果还有别的字符,会把重复的字符删掉。
#3
QwertySun2016-12-09 22:19
回复 2楼 grmmylbs
对的!题目就是要将重复的只留一个,然后按大小输出。然后你就帮我看看我的哪有问题,好吗?
#include<stdio.h>

int main()
{
    int n, i, j, k, temp;
    int a[100];
    while(scanf("%d", &n)==1)
    {
        for(i = 0; i < n; i++)
            scanf(" %d", &a[i]);
        for(i = 0; i < n - 1; i++)
        {
            for(j = i + 1; j < n; j++)
            {
                if(a[i] == a[j])
                {
                    for(k = i; k < n; k++)
                        a[k] = a[k + 1];
                    j--;
                    n--;
                }
            }
        }
        for(i = 0; i < n - 1; i++)
        {
            for(j = i + 1; j < n; j++)
            {
                if(a[i] > a[j])
                {
                    temp = a[i];
                    a[i] = a[j];
                    a[j] = temp;
                }
            }
        }
        for(i = 0; i < n; i++)
        {
            if(i != 0) printf(" ");
            printf("%d", a[i]);
        }
        printf("\n");
    }
    return 0;
}
#4
yangfrancis2016-12-11 16:01
回复 3楼 QwertySun
只粗看了一下,没仔细确认,你自己琢磨一下:删掉一个元素之后,i是不是应该递减?
#5
QwertySun2016-12-12 12:49
回复 4楼 yangfrancis
为什么我加了i--还是不行啊!
#6
逍W遥2016-12-19 07:00
字符串不是%c吗?
#7
逍W遥2016-12-19 07:28
while(scanf("%d", &n)==1)   是不是当n==1是进行循环?
这是我改过的

#include<stdio.h>
int main()
{
    int n, i, j, k, temp;
    int a[100];
//输入数字个数
    scanf("%d",&n);
    //存入数字
        for(i = 0; i < n; i++)
            scanf("%d", &a[i]);
    //排序
        for(i = 0; i < n - 1; i++)
        {
            for(j = i + 1; j < n; j++)
            {
                if(a[i] > a[j])
                {
                    temp = a[i];
                    a[i] = a[j];
                    a[j] = temp;
                }
            }
        }
        
        
       //去重
        for(i = 0; i < n; i++)
        {
            if(i==0)
             {
                printf("%d", a[i]);
            
            }
             else if(a[i] != a[i-1])
                {
                     printf("%d", a[i]);//如果数组元素i和前一个不相等,那么输出i                                                                  
                    
                }
               
            
        }
        
        printf("\n");

        
    return 0;
}
1