回 帖 发 新 帖 刷新版面

主题:[讨论]刚学C++,有个程序不知道哪里错了,就是没输出结果

RT……这个破问题烦了我很久了,一直没找出哪里有问题
#include<iostream.h>
void jfs(int n,int m,int s);
int main()
{int n;
int m;
int s;
cout<<"输入孩子的总数:";
cin>>n;
cout<<"输入起始孩子的号码:";
cin>>m;
cout<<"输入需要间隔的孩子个数:";
cin>>s;
void jsf(int n,int m,int s);
return 0;
}
void jsf(int n,int m,int s)
{int *boy=new int[n],*p;
int i;
int j=0;
 for(i=0;i<n;i++) boy[i]=i+1;
 for(i=0;i<n;i++)
 cout<<boy[i];
 p=boy+m-1;
 for(i=1;j<=n;)
 {if(*p!=0) 
 { if(i=s) 
 {  cout<<*p;i=0;*p=0;j++;}
   else i++;}
 p++;
  if(p>boy+n-1) p=boy;
 }
delete [n]boy;
}
各位大神,帮忙看下啊,谢谢了

回复列表 (共26个回复)

11 楼

void jsf(int n,int m,int s);没执行

12 楼

我就是想知道,为什么没执行呢?

13 楼

你main里面也写成void jsf(int n,int m,int s);是在main里面重新声明了一遍jsf函数而不是调用jsf函数
函数怎么调用都忘了??

14 楼

看到这顺便提一下,C和C++都是一遍编译,但是在函数处理方面却不一样(从编译器角度看问题),C++支持先声明后定义,比如:你的程序中开始有这么一句话:void jfs(int n,int m,int s);
这个说专业点好像叫啥向前调用...
而C语言却没有这种用法,你只能在程序的开始部分声明函数紧接着定义函数。

15 楼

13#的情况我当时搞糊涂了,也就乱试了下,在写成jsf(int n,int ,ints)之后,然后再编译,就一直有错误了,也许是还有个大错误没发现,下面是昨天晚上改成的程序:
#include<iostream.h>
void jfs(int n,int m,int s);
int main()
{int n;
int m;
int s;
cout<<"输入孩子的总数:";
cin>>n;
cout<<"输入起始孩子的号码:";
cin>>m;
cout<<"输入需要间隔的孩子个数:";
cin>>s;
jsf(n,m,s);
return 0;
}
void jsf(int n,int m,int s)
{int *boy=new int[n],*p;
int i;
int j=0;
 for(i=0;i<n;i++) boy[i]=i+1;
 for(i=0;i<n;i++)
 cout<<boy[i];
 p=boy+m-1;
 for(i=1;j<n;)
 {if(*p!=0) 
 { if(i==s) 
 {  cout<<*p;i=0;*p=0;j++;}
   else i++;}
 p++;
  if(p>boy+n-1) p=boy;
 }
delete [n]boy;
}
提示有错误:
E:\c++\shuhaizi.cpp(14) : error C2065: 'jsf' : undeclared identifier
E:\c++\shuhaizi.cpp(18) : error C2373: 'jsf' : redefinition; different type modifiers

那个没定义的jsf错误就在main里面……后面的error是在jsf的第一句,就是申明变量的那句。
刚刚学C++,请各位继续不吝指教,谢谢

16 楼

汗,main里面的i是怎么来的……我又翻了个不知道什么时候的版本出来了……

17 楼

程序改的差不多了,有输出,输出正确了。谢谢大家
就差优化下程序了,呵呵

18 楼

前面void jfs(int n,int m,int s);
调用的时候怎么就变成jsf了

19 楼

雪真是厉害啊,呵呵,忍不住感慨下,连那个jsf的小差错都看到了呢

20 楼

对的,主要是那里,改了那里,基本就完成了……呵呵

我来回复

您尚未登录,请登录后再回复。点此登录或注册