还是那个C语言问题!

来源:百度知道 编辑:UC知道 时间:2024/05/23 13:53:35
要求输入一个整数,判断这个整数是否能被连续的奇数相加而得出,如果能得出,输出这几个奇数的第一个和最后一个!(默认为正整数)
例如:输入一个9,输出结果为1和5(因为9=1+3+5);输入一个10,则提示不能由连续的奇数相加得出!(要求用for循环语句,不能用数组啊,还没学呢!前面有个高手弄了个数组给我,好是好啊,不过不敢用啊!)
或者谁帮我把下面这个改明白了!谢了!
#include<stdio.h>
main()
{int i,j,n,sum;
sum=0;
do{printf("input num:");
scanf("%d",&n);
for(i=1;i<n;i+=2)
{
for(j=i;sum<=n;j+=2)
sum+=i;
if(sum==n&&n!=i)
{
printf("%d......%d\n",i,j);
sum=0;break;
};
};
printf("input num cannot be add by the way!");
}while(n!=0);}

还是你啊,其实不用数组做也可以,你用两个变量代替a[0] a[1]就可以了,我这是用的是x,y

#include<stdio.h>
void main()
{
int n,i,j,f=0,x,y,s;
scanf("%d",&n);
for(i=1;i<n;i+=2)
{
j=i;
x=i;
for(s=j;s<n;)
{j+=2;
s+=j;}
if(s==n)
{
y=j;
f=1;
break;
}
}
if(f==0) printf("此数不能由连续的奇数得出");
else
printf("%d,%d",x,y);
}

#include <stdio.h>
main()
{
int flag=1;
int n;
int i,j,size,sum;
char c;
while(flag)
{
puts("input a number:");
scanf("%d",&n);
size=0;
for(i=1;i<(n/2+2);i+=2)
{
sum=i;

for(j=i+2;sum<=n;j+=2)
{
sum+=j;
if(sum==n)
{
printf("%d可以被连续奇数相加得到.最大%d,最小%d\n",n,j,i);
size++;
}
}

}
if(size==0)
printf("%d不可被连续奇数相加得