题目解答,大侠们,来帮忙吧
4、由键盘键入一个整数n(<=1000),再在屏幕上输出满足如下条件的全部数组(每个数组的元素按顺序放在一个括号内)及数组的个数T(n)。(1)同一数组内个元素互不相同。
(2)每个数组至少有一个元素,最后一个元素均为n,且每个元素都不小于它前面的一个元素的平方。
例如:键入n=5,则正确的输出应为:
(5)(1,5)(2,5)(1,2,5)
T(n)=4
请写出完整的源程序。
程序代码:/*本人也是一个菜鸟!仅供参考!*/
#include<stdio.h>
#include<math.h>
#define M 10
int num=0;
int main()
{
int s,i,j,k,a,b=1;
int p[M];
printf("Please input a number:");
scanf("%d",&s);
a=(int) floor(sqrt(s));
p[0]=s;
p[1]=a;
printf("(%d)\n",s);
num++;
if(s==2||s==3)
printf("(1,%d)",s);
else
{
for(i=1;a>=2;i++)
{
for(j=1;j<=a;j++)
{
printf("(%d",j);
for(k=b-1;k>=0;k--)
printf(",%d",p[k]);
printf(")\n");
num++;
}
if(a==2||a==3)
{
printf("(1");
for(k=b;k>=0;k--)
printf(",%d",p[k]);
printf(")\n");
num++;
}
a=(int) floor(sqrt(a));
b++;
p[b]=a;
}
}
printf("Total:%d",num);
getch();
return 1;
}