注册 登录
编程论坛 C++教室

错在哪里了????

maiiho 发布于 2008-09-17 16:38, 523 次点击
写这个程序的本意是,从键盘输入一个数,输入几,就累加到几
比如,输入100,结果为5050,过程是1+2++4+5+6~~~+100

#include <iostream.h>
int fun(int *p)
{
    int i,sum=0;
    for(i=0;i<=100;i++)
    {
        sum+=i;
    }
    return sum;
}
int main()
{
   int *s;
   int sum=0;
   cout<<"Please enter number:";
   cin>>*s;
   int fun(*s);
   cout<<"\nFun="<<sum;
   return 0;
}
7 回复
#2
maiiho2008-09-17 16:40
那里错误了?编程通过,可是运行的时候,就出错了
#3
blueboy820062008-09-17 18:31
你的程序挺有才的,我迷惑了好一会啊...
感觉你得多多练习了...
稍作改动:
#include <iostream.h>
int fun(int p)
{
    int i,sum=0;
    for(i=0;i<=p;i++)
    {
        sum+=i;
    }
    return sum;
}
int main()
{
   int s;//不知道你原来那是怎么想的...
   int sum=0;
   cout<<"Please enter number:";
   cin>>s;//同上...
   //int fun(s);   这都是哪跟哪啊!!
   cout<<"\nFun="<<fun(s);
   return 0;
}
#4
zzt_4282008-09-17 18:44
乖乖
乖乖...你的程序很黄很暴力!
实在是无语了我。
我把它改了一下, 你看看吧。
#include <iostream.h>
int fun(int p)
{
    int i,sum=0;
    for(i=1;i<=p;i++)
    {
        sum+=i;
    }
    return sum;
}

int main()
{
   int s;
  
   cout<<"Please enter number:";
   cin>>s;
   cout<<"\nFun="<<fun(s);
   return 0;
}

不好动不动把指针拿出来耍,,会出事的,,小妹妹
#5
hanog2008-09-17 18:52
我也有问题啊
以下这个是OK的。
#include <iostream>
using namespace std;
int fun(int p)
{
    int i,sum=0;
    for(i=0;i<=p;i++)
    {
        sum+=i;
    }
    return sum;
}
int main()
{
   int a,s=0;
   int sum=0;
   cout << "Please enter number:";
   cin >> s;
   cout << "Fun=" << fun(s) << endl;
}


但这个就有问题了,编译通过,但是运行时出现故障。是怎么回事啊?
#include <iostream>
using namespace std;
int fun(int p)
{
    int i,sum=0;
    for(i=0;i<=p;i++)
    {
        sum+=i;
    }
    return sum;
}
int main()
{
   int a,*s=0;
   int sum=0;
   cout << "Please enter number:";
   cin >> *s;
   cout << "Fun=" << fun(*s) << endl;
}


这个只是把指针移到子函数,但是同样出现错误,编译出错:error C2664: 'fun' : cannot convert parameter 1 from 'int' to 'int *'
        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast

#include <iostream>
using namespace std;
int fun(int *p)
{
    int i,sum=0;
    for(i=0;i<=*p;i++)
    {
        sum+=i;
    }
    return sum;
}
int main()
{
   int a,s=0;
   int sum=0;
   cout << "Please enter number:";
   cin >> s;
   cout << "Fun=" << fun(s) << endl;
}



等待高手明示,谢谢!
#6
zzt_4282008-09-17 19:08
回答
楼上的把int类型赋给了指针类型.嘿嘿...函数要的是int * 类型,你怎么可以把int类型传给它呢?
改成这样cout << "Fun=" << fun(&s) << endl;就可以了.
#7
gongqivictor2008-09-17 20:50
呵呵,小妹妹太喜欢指针了
#8
sunkaidong2008-09-17 21:20
呵呵,加油啊。。。
1