C语言简单题。。高手指教

来源:百度知道 编辑:UC知道 时间:2024/06/06 00:10:27
#include<stdio.h>
void main()
{
int c=0,d=0,x,y;
int a;
while(scanf("%lf %lf",&x,&y)!=EOF)
{
a=fabs(x-y);
int str[a],i,j;
if(x>y)
for(i=0;i<a;i++)
str[i]=x++;
else
for(i=0;i<a;i++)
str[i]=y++;
for(j=0;j<a;j++)
{
if(str[j]%2==0)
c=c+str[j]*str[j];
else
d=d+str[j]*str[j]*str[j];
}
printf("%lf %lf\n",c,d);

}
}
以上是我 的代码
题目
Problem Description
给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。

Input
输入数据包含多组测试实例,每组测试实例包含一行,由两个整数m和n组成。

Output
对于每组输入数据,输出一行,应包括两个整数x和y,分别表示该段连续的整数中所有偶数的平方和以及所有奇数的立方和。
你可以认为32位整数足以保存结果。

Sample Input
1 3
2 5

Sample Output
4 28
20 152

这年头的学生都学C99了,变量长度数组使用自如啊,好现象。
不过捏,逻辑稍微混乱了,变量存储与生存期也没学好……看我的修改(为尽量保持原作风格,未进行过多的优化):
(标有//的要改,整个循环控制方式大改)
#include<stdio.h>
#include <stdlib.h>//**
int main()
{
int x,y;//多说一句,现在普遍使用32位操作系统,所以int有32位了。
int a;
loop://这里很特殊,用这个循环控制比较好
{
if(scanf("%d %d",&x,&y)!=2)//你自己都说了32位整数,还%lf %lf地,……
return 0;
a=abs(x-y)+1;//数学啊。注:C99的abs在stdlib.h,fabs在math.h。
int str[a],c=0,d=0,i,j;//**
if(x<y)//让我说你什么好!
for(i=0;i<a;i++)
str[i]=x++;
else
for(i=0;i<a;i++)
str[i]=y++;
for(j=0;j<a;j++)
{
if(str[j]%2==0)
c=c+str[j]*str[j];
else
d=d+str[j]*str[j]*str[j];
}
printf("%d %d\n",c,d);//**
}
goto loop;
}
成功,我亲自测试的。
要用支持C99的编译器哟,gcc内核的不错,下CodeBlocks来用吧,官方正版免费。

不过呀,从LZ自己的代码可见,意思应该是一行Input一行Output,你的Sample容易让人误会的——那样的效果要涉及数据结构了。

首先,你用到了fabs(),要有头文件#incl