编译出错,是什么原因?

cslxc 2004-10-26 11:54:46
void display(int a[], int flag[], int n, unsigned int no = 0) {
int i, bflag = 0;
if(no > 0)
printf("%4d : ", no);
else
printf(" : ");
for(i = 0; i < n; ++i) {
if(flag[i]) {
if(bflag)
printf(" + ");
else
++bflag;
printf("%d", a[i]);
}
}
printf("\n");
}

int test(int a[], int flag[], int n, int m, int level = 0) {
static target = 0;
int Counter = 0;
if(level >= n || level < 0) return Counter;
if(!level) target = m;
if(a[level] < m) {
flag[level] = 1;
Counter += test(a, flag, n, m - a[level], level + 1);
} else if(a[level] = m) {
flag[level] = 1;
++Counter;
display(a, flag, level + 1, Counter);
} else {
flag[level] = 0;
Counter += test(a, flag, n, m, level + 1);
}
return Counter;
}

void main(void) {
int a[] = { 2, 3, 4, 6, 7, 9, 11, 13, 14, 16, 17 }, m = 21;
int flag[11] = {0};
test(a, flag, 11, m);
}
...全文
107 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cslxc 2004-10-26
  • 打赏
  • 举报
回复
这是编译时出错的原因,请高手指点!
cslxc 2004-10-26
  • 打赏
  • 举报
回复
Configuration: H2 - Win32 Debug--------------------
Compiling...
H2.c
C:\Documents and Settings\Administrator\My Documents\H2.c(1) : error C2143: syntax error : missing ')' before '='
C:\Documents and Settings\Administrator\My Documents\H2.c(1) : error C2072: 'display' : initialization of a function
C:\Documents and Settings\Administrator\My Documents\H2.c(1) : error C2059: syntax error : ')'
C:\Documents and Settings\Administrator\My Documents\H2.c(1) : error C2143: syntax error : missing ';' before '{'
C:\Documents and Settings\Administrator\My Documents\H2.c(1) : error C2449: found '{' at file scope (missing function header?)
C:\Documents and Settings\Administrator\My Documents\H2.c(17) : error C2059: syntax error : '}'
C:\Documents and Settings\Administrator\My Documents\H2.c(41) : warning C4013: 'test' undefined; assuming extern returning int
Error executing cl.exe.

H2.obj - 6 error(s), 1 warning(s)
qqhong 2004-10-26
  • 打赏
  • 举报
回复
你把编译出错的提示信息发布出来!
qqhong 2004-10-26
  • 打赏
  • 举报
回复
你把错误放出来吗!
9731boy 2004-10-26
  • 打赏
  • 举报
回复
你的这个H2.c 明显是c文件.你偏偏用了c++的语法.当然不行了.
void display(int a[], int flag[], int n, unsigned int no = 0) {
-----------------------------------------^^^^^^^^^^^^^^^^^^^^^^
这种语法我只知道在c++可以,在C好像不行.至少VC6是不可以的


CSDN这帮家伙为什么把空格去掉了?
独孤过儿 2004-10-26
  • 打赏
  • 举报
回复
#include <iostream.h>
#include <stdlib.h>
#include <string>
#include <stdio.h>

void display(int a[], int flag[], int n, unsigned int no = 0) {
int i, bflag = 0;
if(no > 0)
printf("%4d : ", no); //沒有包含printf()的頭文件
else
printf(" : ");
for(i = 0; i < n; ++i) {
if(flag[i]) {
if(bflag)
printf(" + ");
else
++bflag;
printf("%d", a[i]);
}
}
printf("\n");
}

int test(int a[], int flag[], int n, int m, int level = 0) {
static int target = 0; //變量忘記聲明類型了
int Counter = 0;
if(level >= n || level < 0) return Counter;
if(!level) target = m;
if(a[level] < m) {
flag[level] = 1;
Counter += test(a, flag, n, m - a[level], level + 1);
} else if(a[level] = m) {
flag[level] = 1;
++Counter;
display(a, flag, level + 1, Counter);
} else {
flag[level] = 0;
Counter += test(a, flag, n, m, level + 1);
}
return Counter;
}

void main(void) {
int a[] = { 2, 3, 4, 6, 7, 9, 11, 13, 14, 16, 17 }, m = 21;
int flag[11] = {0};
test(a, flag, 11, m);
}

好了,我把錯誤的地方給你改正過來了。在我的編譯器下面是沒有錯誤了。不知道在別的編譯器下面

如何。我的是Dev-C++4.0的。你最好把程序的目的寫出來,大家好分析一下,否則看這麽一大段代碼

真的很辛苦。
jitian81411 2004-10-26
  • 打赏
  • 举报
回复
我加上头文件后在vc环境下运行没有问题!
9731boy 2004-10-26
  • 打赏
  • 举报
回复
void display(int a[], int flag[], int n, unsigned int no = 0)
^^^^^

C语言里不能像C++有默认的参数值的
9731boy 2004-10-26
  • 打赏
  • 举报
回复
你的文件名是.c吧
你这是c++的文件的

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧