c语言 ACM一道 很简单的

来源:百度知道 编辑:UC知道 时间:2024/09/23 23:34:12
题目如下
Problem Description
给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。
Input
输入数据包含多组测试实例,每组测试实例包含一行,由两个整数m和n组成。
Output
对于每组输入数据,输出一行,应包括两个整数x和y,分别表示该段连续的整数中所有偶数的平方和以及所有奇数的立方和。
你可以认为32位整数足以保存结果。
Sample Input
1 3
2 5
Sample Output
4 28
20 152

我的代码
#include<stdio.h>
void main()
{
int a,b;
while(scanf("%d %d",&a,&b)==2)
{
long int i;
long int s1=0,s2=0;
for(i=a;i<=b;i++)
{
if(i%2==0)
s1=s1+i*i;
else
s2=s2+i*i*i;
}
printf("%ld %ld\n",s1,s2);
}
}
一直提示出错 不知道为什么 知道的说下 通过了分就给你 谢谢

楼上的回答不太好,有点篡改楼主的意思!
我的回答也是楼主的循环条件代码有问题,不过改法是这样的:
while(scanf("%d%d",&a,&b)==2){...}
在两个%d之间删除那个多余的空格。scanf在扫描的时候,字符串里面多的空格它也是需要进行匹配的。所以楼主只要连续码两个“%d%d”就可以了。实际从键盘向程序输入时,由于转换的是整形,因此我们输入“785 758”,scanf通过输入的空格来判断是不是一个整数输入是否结束,但在程序里调用的scanf函数的格式转换参数里,不能写进空格。这个就是原因。
同样我们这样用:scanf("ab%c",&ch);
如果实际输入是ab开头加任何字母的话,那scanf就会返回1,否则返回0。譬如输入:abc,会返回1,输入acc就会返回0

主要还是在于算法,计算机语言倒不是多重要,C语言和C++都是可以的
美国计算机协会
ACM(Association for Computing Machinery )中文:美国计算机协会是一个世界性的计算机从业员专业组织,创立于1947年,是世界上第一个科学性及教育性计算机学会。ACM每年都出版大量计算机科学的专门期刊,并就每项专业设有兴趣小组。
ACM LOGO[1]
美国计算机协会(Association for Computing Machinery , 简称ACM)
它是一个世界性的计算机从业员专业组织,兴趣小组每年亦会在全世界(但主要在美国)举办世界性讲座及会谈,以供各会员分享他们的研究成果。近年ACM积极开拓网上学习的渠道,以供会员在空余或家中提升自己的专业技能。

1947年,即世界第一台电子数字计算机(ENIAC)问世的第二年,ACM即成为第一个,也一直是世界上最大的科学教育计算机组织。它的创立者和成员都是数学家和电子工程师,其中之一是约翰.迈克利(John.Mauchly),他是ENIAC的发明家之一。他们成立这个组织的初衷是为了计算机领域和新兴工业的科学家和技术人员能有一个共同交换信息、经验知识和创新思想的场合。几十年的发展,ACM的成员们为今天我们所称之为“信息时代”作出了贡献。他们所