标题:编写函数,把数组中所有奇数放在另一个数组中返回。
只看楼主
Soda_kun
Rank: 1
等 级:等待验证会员
帖 子:4
专家分:0
注 册:2018-3-6
结帖率:100%
已结贴  问题点数:20 回复次数:8 
编写函数,把数组中所有奇数放在另一个数组中返回。
来源:教育部考试中心 全国计算机等级考试二级教程——C语言程序设计

9.29 编写函数,把数组中所有奇数放在另一个数组中返回。

越改bug越多,还看不懂错误信息,实在是尽力了,求各位大佬帮忙

代码和错误信息

1   #include <stdio.h>
2   int extract(int [],int,int [],int);
3   void output(int []);
4   main()
5   {int s[]={-2,-1,0,1,2,3,4,5,6,7,8,9,10,11,12};
6   int t[],i=15,j;
7   extract(int s[],int i,int t[],int j);
8   output(int t[],j);
9   }
10   extract(int a[],int b,int c[],int d);
11   {int e;d=0;
12   for(e=0,e<b,e++)
13   if(a[e]%2!=0){c[d]=a[b];d++};
14   return d;
15   }
16   output(int f[],int h;)
17   {int g;
18   for(g=0,g<h,g++)printf("%d",f[g]);
19   }

错误信息:
C:\Users\hoshi\Documents\计算机二级考试 C语言作业\9.29.cpp    In function 'int main()':
6   7    C:\Users\hoshi\Documents\计算机二级考试 C语言作业\9.29.cpp    [Error] storage size of 't' isn't known
7   9    C:\Users\hoshi\Documents\计算机二级考试 C语言作业\9.29.cpp    [Error] expected primary-expression before 'int'
7   7    C:\Users\hoshi\Documents\计算机二级考试 C语言作业\9.29.cpp    [Error] expected primary-expression before 'int'
7   23    C:\Users\hoshi\Documents\计算机二级考试 C语言作业\9.29.cpp    [Error] expected primary-expression before 'int'
7   31    C:\Users\hoshi\Documents\计算机二级考试 C语言作业\9.29.cpp    [Error] expected primary-expression before 'int'
8   8    C:\Users\hoshi\Documents\计算机二级考试 C语言作业\9.29.cpp    [Error] expected primary-expression before 'int'
C:\Users\hoshi\Documents\计算机二级考试 C语言作业\9.29.cpp    At global scope:
11   1    C:\Users\hoshi\Documents\计算机二级考试 C语言作业\9.29.cpp    [Error] expected unqualified-id before '{' token
搜索更多相关主题的帖子: 考试 C语言 int Documents 计算机二级 
2018-03-06 14:49
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
//int t[],
int t[15],
2018-03-06 15:11
Soda_kun
Rank: 1
等 级:等待验证会员
帖 子:4
专家分:0
注 册:2018-3-6
得分:0 
附上程序文件
9.29.zip (732 Bytes)
2018-03-06 15:12
Soda_kun
Rank: 1
等 级:等待验证会员
帖 子:4
专家分:0
注 册:2018-3-6
得分:0 
回复 2楼 吹水佬
第一个错误解决了,感谢
2018-03-06 15:14
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:20 
修改不少,自己对照看看
#include <stdio.h>
int extract(int [],int,int [],int);
void output(int [], int);
main()
{
    int s[]= {-2,-1,0,1,2,3,4,5,6,7,8,9,10,11,12};
    int t[15],i=15,j;
    j = extract(s,i,t,j);
    output(t,j);
}
int extract(int a[],int b,int c[],int d)
{
    int e;
    d=0;
    for(e=0;e<b;e++)
        if(a[e]%2!=0)
        {
            c[d]=a[e];
            d++;
        }
    return d;
}
void output(int f[],int h)
{
    int g;
    for(g=0;g<h;g++)
        printf("%d ",f[g]);
}
2018-03-06 15:22
Soda_kun
Rank: 1
等 级:等待验证会员
帖 子:4
专家分:0
注 册:2018-3-6
得分:0 
回复 5楼 吹水佬
万分感谢!!
2018-03-06 15:32
李晨经纪人
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:175
专家分:848
注 册:2018-2-14
得分:0 
程序代码:
#include<stdio.h>
int extract(int a[],int b[]);
void output(int a[],int n);
int main(void)
{
    int s[]={-2,-1,0,1,2,3,4,5,6,7,8,9,10,11,12};
    int t[15],n;
    n=extract(s,t);
    output(t,n);
    return 0;
}
int extract(int a[],int b[])
{
    int i,j;
    for(i=0,j=0;i<15;++i)
    {
        if(a[i]%2!=0)
        {
            b[j]=a[i];
            ++j;
        }
    }
    return j;
}
void output(int a[],int n)
{
    int i;
    for(i=0;i<n;++i)
        printf("%d ",a[i]);
}
2018-03-06 15:34
lanke711
Rank: 9Rank: 9Rank: 9
来 自:流浪在天国之路
等 级:蜘蛛侠
威 望:7
帖 子:317
专家分:1437
注 册:2015-7-16
得分:0 
回复 楼主 Soda_kun
1   #include <stdio.h>
2   int extract(int [],int,int [],int);
3   void output(int []);
4   main()
5   {int s[]={-2,-1,0,1,2,3,4,5,6,7,8,9,10,11,12};
6   int t[],i=15,j;
7   extract(int s[],int i,int t[],int j);//这是调用,不是声明。
8   output(int t[],j);//同上一行一样的错误
9   }
10   extract(int a[],int b,int c[],int d);//缺少数据类型int,楼主复制也要注意一下分号吧。这是实现
11   {int e;d=0;
12   for(e=0,e<b,e++)//请注意for循环的写法for(int e=0;e<b;e++),不是用逗号隔开,用分号
13   if(a[e]%2!=0)
    {c[d]=a[b];d++  }; 为何这里还有个分号??d++后面的分号哪去了?
14   return d;
15   }
16   output(int f[],int h;)[/color]声明的数据类型void哪去了?,h后面为何还有个分号?
17   {int g;
18   for(g=0,g<h,g++)for循环同上一次的错误
        printf("%d",f[g]);
19   }

[此贴子已经被作者于2018-3-6 16:06编辑过]


普通人之所以普通,是因为他们普遍有一个通病,那就是认为自己永远普通。
千夫所指,我亦坚持。就算被所有人误解,我也照样守护这一切。
我们总是觉得,这些灵魂的表情,傲慢自大,目中无人,其实,真正目中无人的是我们。它们傲慢的不过是表情,而我们傲慢的却是行为!
记得,是为了忘记!
只要想着有那么一天,我就能忍受现在的每一天!
灾难并不可怕,可怕的是心中没有了希望。
你以为我在天堂,其实我正在路上。
当你觉得自己走不到终点的时候,请不要放弃。或许你的对手也是这种感觉。
2018-03-06 15:56
lanke711
Rank: 9Rank: 9Rank: 9
来 自:流浪在天国之路
等 级:蜘蛛侠
威 望:7
帖 子:317
专家分:1437
注 册:2015-7-16
得分:0 
回复 楼主 Soda_kun
帮你改了一下。
#include <stdio.h>
  int extract(int [],int,int [],int);
  void output(int [],int);
int main()
{
    int s[]={-2,-1,0,1,2,3,4,5,6,7,8,9,10,11,12};
    int t[15],i=15,j=0;//j用来做实参,所以初始化最好放在这里。
    j=extract(s,i,t,j);
    output(t,j);
    return 0;
}

int extract(int a[],int b,int c[],int d)
{
        int e;
        for(e=0;e<b;e++)
        if(a[e]%2!=0)
        {
            c[d]=a[e];
            d++;
        }//计次变量是e,不是b。搞错了。
        return d;
}
void output(int f[],int h)
{
        int g;
        for(g=0;g<h;g++)
        printf("%d\n",f[g]);
}

普通人之所以普通,是因为他们普遍有一个通病,那就是认为自己永远普通。
千夫所指,我亦坚持。就算被所有人误解,我也照样守护这一切。
我们总是觉得,这些灵魂的表情,傲慢自大,目中无人,其实,真正目中无人的是我们。它们傲慢的不过是表情,而我们傲慢的却是行为!
记得,是为了忘记!
只要想着有那么一天,我就能忍受现在的每一天!
灾难并不可怕,可怕的是心中没有了希望。
你以为我在天堂,其实我正在路上。
当你觉得自己走不到终点的时候,请不要放弃。或许你的对手也是这种感觉。
2018-03-06 16:12



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




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

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