帮我写个程序

来源:百度知道 编辑:UC知道 时间:2024/05/05 00:06:54
题目描述:一个正整数有可能可以被表示为n(n>;=2)个连续正整数之和,如:15=1+2+3+4+5 15=4+5+6 15=7+8请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。 输入数据:一个正整数,以命令行参数的形式提供给程序。例如,对于15,其输出结果是:1 2 3 4 54 5 67 8对于16,其输出结果是:NONE评分标准:程序输出结果是否正确。

#include "stdio.h"

int getNum( char* str )
{
int ret = 0;
char *p = str;
while( *p )
{
ret = ret * 10 + *p - '0';
p++;
}
return ret;
}

void myprint( int i , int j )
{
int k;
for( k = i ; k <= j ; k++ )
{
printf( "%d " , k );
}
printf( "\n" );
}

int main(int argc, char* argv[])
{
int n;
int i , j;
int t;
int s = 0;

if( argc != 2 )
{
printf( "Wrong Number of arg! \n");
return 1;
}

n = getNum( argv[1] );
for( i = 1 ; i < n / 2 + 1 ; i++ )
{
t = 0;
for( j = i ; t < n ; j++ )
{
t += j;
if( t == n )
{
myprint( i , j );
s = 1;
}
}
}

if( !s )
{
printf( "None!\n");
}