1447391641 发表于 2020-10-20 16:53:53

程序错误

#include <stdio.h>
sub(int *s,int n)
{
        int i,j=0;
        for(i=0;i<n;i++)
                if(*(s+i)%2!=0)        s=s;
        n=j;
}
int main()
{
        int a={11,12,13,14,15,16,17,18,19,20},n=10,i;
        sub (a,n);
        for(i=0;i<n;i++)
                printf("%d,",a);
        return 0;
}
这个程序一直显示sub(int *s,int n)有错,请问是哪里错了呢?

乐乐学编程 发表于 2020-10-20 17:04:54

程序没有语法错误,因为你定义的函数里没有加花括号,我没有调试,请说明程序的目的是什么

1447391641 发表于 2020-10-20 17:08:48

乐乐学编程 发表于 2020-10-20 17:04
程序没有语法错误,因为你定义的函数里没有加花括号,我没有调试,请说明程序的目的是什么

我也不知道什么目的,就考试题,具体哪里错了呢

hvon 发表于 2020-10-20 17:33:49

sub函数前面加个void,我这边编译运行正常

1447391641 发表于 2020-10-20 17:44:19

hvon 发表于 2020-10-20 17:33
sub函数前面加个void,我这边编译运行正常

加了为什么就对了?

hvon 发表于 2020-10-20 17:46:51

自定义函数前面要声明 是否有返回类型 void 表示不返回你也可以返回其他类型的如int 或string ,函数return时就要带这个返回值

405794672 发表于 2020-10-20 18:39:26

定义函数不完整,没说明究竟带不带返回值。不带返回值用void,带返回值按类型用。比如想返回整型就int,相应的,在函数最后也要return一个int值。

乐乐学编程 发表于 2020-10-20 18:45:57

不好意思,临时有事,离开了。

你不知道函数的目的,我猜测是要求输出奇数,我现在帮按这个思路调试

乐乐学编程 发表于 2020-10-20 19:51:33

已经调试好了,程序如下:

// 本程序选出数组中奇数并输出

#include <stdio.h>
int sub(int *s,int n)
{
      int i,j=0;
      for(i = 0;i < n;i++)
        {
            if(*(s + i) % 2 != 0)    // 如果是奇数,则选出来重新存入数组
          {
                s = s;
                j++;
          }
        }
      n = j;
        return n;                     // 返回选出奇数的个数
}

int main()
{
      int i,n=10,m;
        int a={11,12,13,14,15,16,17,18,19,20};
      m = sub (a,n);
      for(i = 0;i < m;i++)
        {
            printf("%d,",a);
        }
        printf("\n");
      return 0;
}
页: [1]
查看完整版本: 程序错误