| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦   
共有 534 人关注过本帖
标题:一道简单的编程练习题,恳求赐教。
收藏  订阅  推荐  打印
wylog
Rank: 1
等级:新手上路
帖子:7
积分:176
注册:2008-8-5
一道简单的编程练习题,恳求赐教。

编写一个要求用户输入两个整数的程序。该程序将计算并输出这两个整数之间(包括这两个整数)所有整数的和。假设先输入较小的整数。例如,如果用户输入的是2和9,则程序将指出2~9之间所有整数的和为44。

我编写的程序如下,编译通过,但运行答案有误。
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
void main()
{
cout<<"input the first number:";
int x;
cin>>x;
cout<<"input the last number:";
int y;
cin>>y;
int *s=new int[200];
s=&x;
for (int i=0;i<y-x;i++)
{
    s[i]=x+i;    
}
int num[200];
num[0]=s[0];
for (int b=1;b<=y-x;b++)
{num[b]=num[b-1]+s[b];
}

cout<<"the sum is :"<<num[b]<<endl;
}
2008-8-5 13:28
bamboowing
Rank: 1
等级:新手上路
帖子:10
积分:216
注册:2008-6-26
回复

你在第一个循环中for (int i=0;i<y-x;i++)少了个等号
应该是for (int i=0;i<=y-x;i++)
而且你第二个数组没有全部赋值,只是赋了第一个值,并不完全,
我个人认为第二个循环完全没有必要。
我个人认为下面的方法会好一些:
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
void main()
{
cout<<"input the first number:";
int x;
cin>>x;
cout<<"input the last number:";
int y;
cin>>y;
int *s=new int[200];
int a=0;
s=&x;
for (int i=0;i<=y-x;i++)
{
    s[i]=x+i;  
    a=a+s[i];  
}

cout<<"the sum is :"<<a<<endl;
}
2008-8-5 16:01
黎明静悄悄
Rank: 1
等级:新手上路
帖子:4
积分:148
注册:2008-8-3

这么麻烦干什么   直接编个等差数列求和公式不就行了
2008-8-5 16:18
jlz7230220
Rank: 1
等级:新手上路
帖子:2
积分:122
注册:2008-7-29

2楼的这个程序只能计算两个数之差不大于33的
2008-8-5 17:41
随风自由
Rank: 1
来自:天津
等级:新手上路
帖子:1
积分:112
注册:2008-8-5
回复

一定需要用数组吗?不用数组也能解决的
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main()
{
cout<<"input the first number:";
int x;
cin>>x;
cout<<"input the last number:";
int y;
cin>>y;
long int sum=0;
int i;
for (i=x;i<=y;i++)
{
    sum+=i;
}
cout<<"the sum is :"<<sum<<endl;
int t;
cin>>t;
return 0;
}

生活是自己过出来的
2008-8-5 18:35
wylog
Rank: 1
等级:新手上路
帖子:7
积分:176
注册:2008-8-5

首先,谢谢二楼的解答。不知道为什么,运行后,结果是对的,但编译器会弹出一个提示,XXXX内存出错;不知道何解,通常出现这种错误应该是代码有不完善的地方吧?是不是最后要加个delete []s,来释放指针占用的内存?
2008-8-5 21:06
wylog
Rank: 1
等级:新手上路
帖子:7
积分:176
注册:2008-8-5

5楼的解答,更好,谢了!
2008-8-5 21:09
jlz7230220
Rank: 1
等级:新手上路
帖子:2
积分:122
注册:2008-7-29

5楼的解答无错,不过感觉int t;cin>>t;是不是没有什么作用啊?
2008-8-5 23:52
名字不好取啊
Rank: 1
等级:新手上路
帖子:5
积分:150
注册:2008-8-7

5楼想表达的意思是 暂停下  其实用个system("pause");就可以了
2008-8-7 21:04
细雨斜飞
Rank: 1
等级:新手上路
帖子:37
积分:450
注册:2008-5-4

#include <iostream>
using namespace std;

template <class T>
T max(T a,T b)
{
    return a>b?a:b;
}

template <class T>
T min(T a,T b)
{
    return a<b?a:b;
}

void main()
{
    cout<<"Please input two intger"<<endl;
    int a,b;
    cin>>a>>b;
    int Max;
    Max=max(a,b);
    //cout<<"max intger"<<Max<<endl;
    int Min;
    Min=min(a,b);
    //cout<<"min intger"<<Min<<endl;
//-------------------------------------------------------------------------------
    int times;times=Max-Min+1;
    int sum;sum=0;
    for(int i=0;i<=times;i++)
    {
        sum+=Min;
        Min++;
    }

    cout<<"from a to b(or b to a) ,the result is :"<<sum<<endl;

}
2008-8-10 14:30
共有 533 人关注过本帖
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.050511 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved