题目描述:

我的答案:
#include<stdio.h>
void print(int i,int j);
int main()
{
int result;
int sum = 0;
int i,j;
scanf("%d",&result);
for(i = 0,j = 0;j < result / 2 + 1;)
{
if(sum < result)
sum += (++i);
else if(sum > result)
sum -= (j++);
else
{
print(j,i);
printf("\n\n\n");
sum += (++i);
}
//printf("sum == %d\n",sum);
}
return 0;
}
//i始终大于j
void print(int j,int i)
{
for(;j <= i;j++)
{
printf("%d\t",j);
}
}标准答案,稍加改编:
#include<stdio.h>
void print(int i,int j);
int main()
{
int left,right;
int sum;
int given;
int count = 0;
scanf("%d",&given);
for(sum = 0,right = 1;sum < given;sum += right,right++)
;
for(left = 1,right--;left <= given / 2;)
{
if(sum > given)
sum -= (left++);
else
{
if(sum == given)
print(left,right);
sum += (++right);
}
}
return 0;
}
void print(int j,int i)
{
for(;j <= i;j++)
{
printf("%d\t",j);
}
printf("\n\n\n");
}
978

被折叠的 条评论
为什么被折叠?



