标题:改变不了数组a的值,哪里错了
只看楼主
NIALK
Rank: 1
等 级:新手上路
帖 子:15
专家分:6
注 册:2019-2-3
结帖率:0
已结贴  问题点数:20 回复次数:4 
改变不了数组a的值,哪里错了
un函数功能是:删除一堆数组中所有相同的数,使之只剩一个。数组中的数已按有小到大排序,函数返回删除后数组中的个数;
例如:
2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10
删除后
2 3 4 5 6 7 8 9 10

函数
#include <stdio.h>
#define N 80int fun(int a[], int n)
{
  int i,b[20],k=0;
  b[0]=a[0];
      for(i=0;i<n;i++)
      {
        if(b[k]!=a[i])
        {b[k+1]=a[i];
        k++;}
      }return k+1;
      for(i=0;i<k;i++)
       a[i]=b[i];
      
      
}
void main()
{
  FILE *wf;
  int a[N]={ 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10}, i, n=20;
  printf("The original data :\n");
  for(i=0; i<n; i++)  
     printf("%3d",a[i]);
  n=fun(a,n);
  printf("\n\nThe data after deleted :\n");
  for(i=0; i<n; i++)  
     printf("%3d",a[i]);  
  printf("\n\n");
/******************************/
  wf=fopen("out.dat","w");
  for(i=0; i<n; i++)  
     fprintf(wf,"%3d",a[i]);
  fclose(wf);
/*****************************/
}

搜索更多相关主题的帖子: 数组 int for i++ printf 
2019-02-16 13:15
no1xijin
Rank: 9Rank: 9Rank: 9
来 自:江西
等 级:贵宾
威 望:20
帖 子:211
专家分:1207
注 册:2015-7-8
得分:7 
子函数内部逻辑有误,已做修正如下:
程序代码:
int fun(int a[], int n)
{
    int i,b[20],k=0;
    b[0]=a[0];
    for(i=0;i<n;i++)
    {
        if(b[k]!=a[i])
        {
            b[k+1]=a[i];
            k++;
        }
    }
    //return k+1;   多余,删除
    k=k+1;  // 新增
    for(i=0;i<=k;i++)  // 结束条件为 <=
        a[i]=b[i];
    return k; // 新增
}

126邮箱联系方式:no1xijin@126. com
2019-02-16 13:49
李少iii
Rank: 4
来 自:KUNMING
等 级:业余侠客
威 望:2
帖 子:67
专家分:245
注 册:2018-10-4
得分:7 
#include <stdio.h>
#define N 80  //无用
int fun(int a[], int n)
{
  int i,p,b[20],k=0;
  b[0]=a[0];
      for(i=0;i<n;i++)
      {
        
        if(b[k]!=a[i])
        {b[k+1]=a[i];  
          k++;
        }
      }
      for(i=0;i<k+1;i++)//同2楼类似
       a[i]=b[i];
      return k+1;//修改这里
      
      
}
int main()
{
  FILE *wf;
  int a[]={ 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10}, i, n=20;
  printf("The original data :\n");
  for(i=0; i<n; i++)  
     printf("%3d",a[i]);
  n=fun(a,n);
  printf("\n\nThe data after deleted :\n");
  for(i=0; i<n; i++)  
     printf("%3d",a[i]);  
  printf("\n\n");
/******************************/
  wf=fopen("out.dat","w");
  for(i=0; i<n; i++)  
     fprintf(wf,"%3d",a[i]);
  fclose(wf);
/*****************************/
}

我不曾拥有梦想,但我坚信我有未来……
2019-02-16 14:35
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
得分:7 
程序代码:
size_t fun(int a[], size_t len)
{
    size_t i = 0, j = 0;

    while (++j < len)
        if (a[j] != a[i])
            a[++i] = a[j];

    return i + 1;
}


[此贴子已经被作者于2019-2-16 20:08编辑过]

2019-02-16 19:09
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
得分:0 
程序代码:
size_t fun(int a[], size_t len)
{
    size_t i = 0, j = 0;

    while (++j < len)
        if (a[j] != a[i])
            a[++i] = a[j];

    return i + 1;
}


[此贴子已经被作者于2019-2-16 20:08编辑过]

2019-02-16 19:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-493090-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.586077 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved