C语言的一道题,裸跪求解

来源:百度知道 编辑:UC知道 时间:2024/05/17 07:52:36
由键盘键入一个整数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>
int main()
{
int i,n,m=1,a[4]={1,2,4,16},j=0,k,p;
scanf("%d",&n);
printf("(%d)",n);
for(i=0;i<4;i++)
if(a[i]*a[i]>n)
break;
if(i>=1)
for(j=0;j<i;j++)
{
m++;
printf(",(%d,%d)",a[j],n);
}
if(i>=2)
for(j=0;j<i-1;j++)
for(k=j+1;k<i;k++)
{
m++;
printf(",(%d,%d,%d)",a[j],a[k],n);
}
if(i>=3)
for(j=0;j<i-2;j++)
for(k=j+1;k<i-1;k++)
for(p=k+1;p<i;p++)
{
m++;
printf(",(%d,%d,%d,%d)",a[j],a[k],a[p],n);
}
if(i==4)
{
m++;
printf(",(1,2,4,16,%d)",n);
}
printf("\n");
printf("%d\n",m);
return 0;
}
刚写的,你看看

题目有歧义,如果条件(2)是不小于,那么例子中应该还有一组(1,2,4,5)