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

求助 帮忙看一下这个程序哪里不对

情丨调 发布于 2013-05-12 12:39, 495 次点击
大神们  先谢了  
如题  让计算出输入两数之间所有数之和,代码如下,实在看不出来哪里错了,特此求救
#include<iostream>
void change(int a,int b);
int main()
{
    using namespace std;
    int x,y,n,z=0;
    cin>>x>>y;
    change(int x,int y);
    n=x;
    do
    {
        z=z+n;
        n++;
    }while(x<n<=y);
    cout<<"z="<<z\n;
    return 0;
}
void change(int a,int b)
{
    int t;
    if(a>b)
    {
        t=b;b=a;a=t;
    }
}
3 回复
#2
fxbszj2013-05-12 18:09
随便看了下,我说下我看到的问题
你自定义的函数void,我想原来的意思是想,如果输入的第一个值大于第二个值的时候,就把它们位置互换。
可这样你写的函数有个问题,change(x,y);(注意:前面不用加int)在调用函数的时候,实际上是把x 和y的值复制了一份,用复制的值在函数里运行。当这条语句执行过后,实际上并没有改变x和y的值。如果想改变它们的值,需要函数的形参定义成引用类型: void change(int& a,int& b)
#3
rjsp2013-05-13 08:48
基础知识错误太多
程序代码:
#include <iostream>

void change( int& a, int& b );

int main()
{
    using namespace std;

    int x, y;
    cin >> x >> y;
    change( x, y );

    int z = 0;
    for( int n=x; n<=y; ++n )
        z += n;

    cout << "z=" << z << '\n';

    return 0;
}

void change( int& a, int& b )
{
    if( a > b )
    {
        int t = b;
        b = a;
        a = t;
    }
}

我会这么写:
程序代码:
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int a, b;
    cin >> a >> b;

    int z = (a+b)*(abs(a-b)+1)/2;

    cout << "z=" << z << endl;

    return 0;
}

#4
邓士林2013-05-13 09:54
尽量简单点,不能简单问题复杂化
1