
求高手帮我解释一下这些c语言代码!!!
在每句后写上解释程序代码的意义~~~俺先谢谢了~~~谢谢~~~~~~~~~#include<stdio.h>intport(intn,intm){inti,p=0,mpl...
在每句后写上解释程序代码的意义~~~俺先谢谢了~~~ 谢谢~~~~~~~~~
#include<stdio.h>
int port(int n,int m)
{
int i,p=0,mplot=1,nplot=1,nmplot=1;
if(n>=m)
{
if(n-m==0)p=1;
else
{
for(i=0;i<n;i++)
nplot=nplot*(n-i);
for(i=0;i<(n-m);i++)
nmplot=nmplot*(n-m-i);
for(i=0;i<m;i++)
mplot=mplot*(m-i);
p=nplot/(nmplot*mplot);
}
}
else
p=-1;
return(p);
}
void main()
{
int x,a,i,j,z;
scanf("%d",&x);
a=x-1;
for(i=0;i<=a;i++)
{
for(z=0;z<=(a-i);z++)
printf(" ");
for(j=0;j<=i;j++)
printf("%d ",port(i,j));
printf("\n");
}
for(i=(a-1);i>=0;i--)
{
for(z=0;z<=(a-i);z++)
printf(" ");
for(j=0;j<=i;j++)
printf("%d ",port(i,j));
printf("\n");
}
} 展开
#include<stdio.h>
int port(int n,int m)
{
int i,p=0,mplot=1,nplot=1,nmplot=1;
if(n>=m)
{
if(n-m==0)p=1;
else
{
for(i=0;i<n;i++)
nplot=nplot*(n-i);
for(i=0;i<(n-m);i++)
nmplot=nmplot*(n-m-i);
for(i=0;i<m;i++)
mplot=mplot*(m-i);
p=nplot/(nmplot*mplot);
}
}
else
p=-1;
return(p);
}
void main()
{
int x,a,i,j,z;
scanf("%d",&x);
a=x-1;
for(i=0;i<=a;i++)
{
for(z=0;z<=(a-i);z++)
printf(" ");
for(j=0;j<=i;j++)
printf("%d ",port(i,j));
printf("\n");
}
for(i=(a-1);i>=0;i--)
{
for(z=0;z<=(a-i);z++)
printf(" ");
for(j=0;j<=i;j++)
printf("%d ",port(i,j));
printf("\n");
}
} 展开
3个回答
展开全部
#include<stdio.h> //头文件//
int port(int n,int m)//这个是main函数里面的函数调用的被调用函数, n,m对应的值是下面printf("%d ",port(i,j));i,j的值//
{
int i,p=0,mplot=1,nplot=1,nmplot=1;//定义变量不用说了吧。。。但是注意这里的i跟main函数里面的i是不同的哦,也就是说他们不是同一个,虽然名字一样//
if(n>=m)//这个相当于i>j就继续执行。//
{
if(n-m==0)p=1;//==这个是等于。。。同样n-m==0成立就执行p=1;然后直接跳到执行return(p);否则执行else语句里面的复合语句//
else
{
for(i=0;i<n;i++)
nplot=nplot*(n-i);//这个for循环是作用是求出1~n的阶乘//
for(i=0;i<(n-m);i++)
nmplot=nmplot*(n-m-i);//这个for循环的作用是1~(n-m)的阶乘//
for(i=0;i<m;i++)
mplot=mplot*(m-i);//到这里这个for循环是求1~m的阶乘//
p=nplot/(nmplot*mplot);//这里就不用我说啦。。。//
}
}
else//当上面的if,else都不成立时,就执行这个else后面的语句//
p=-1;
return(p);
}
void main() //主函数//
{
int x,a,i,j,z;//定义整形变量//
scanf("%d",&x); //给整形变量x输入一个值//
a=x-1;//将输入的x的值减去1然后赋值给a//
for(i=0;i<=a;i++)//若i<a;就执行循环,否则推出//
{
for(z=0;z<=(a-i);z++)
printf(" ");//这个循环的意思是若z<=(a-i),输出空格;否则推出循环,继续执行下面的for语句//
for(j=0;j<=i;j++)//同上,若j<=i就继续执行for里的printf语句//
printf("%d ",port(i,j));//这里运用了函数调用//
printf("\n");//这个printf函数的作用是换行//
}
for(i=(a-1);i>=0;i--)
{
for(z=0;z<=(a-i);z++)
printf(" ");
for(j=0;j<=i;j++)
printf("%d ",port(i,j));
printf("\n");
}
}其他都类似的了。。。 楼主反应过来了没。。。 不要看它长就怕了。。 应该一句一句分析,逐个破解,你就看的懂的啦。祝你学有所成
int port(int n,int m)//这个是main函数里面的函数调用的被调用函数, n,m对应的值是下面printf("%d ",port(i,j));i,j的值//
{
int i,p=0,mplot=1,nplot=1,nmplot=1;//定义变量不用说了吧。。。但是注意这里的i跟main函数里面的i是不同的哦,也就是说他们不是同一个,虽然名字一样//
if(n>=m)//这个相当于i>j就继续执行。//
{
if(n-m==0)p=1;//==这个是等于。。。同样n-m==0成立就执行p=1;然后直接跳到执行return(p);否则执行else语句里面的复合语句//
else
{
for(i=0;i<n;i++)
nplot=nplot*(n-i);//这个for循环是作用是求出1~n的阶乘//
for(i=0;i<(n-m);i++)
nmplot=nmplot*(n-m-i);//这个for循环的作用是1~(n-m)的阶乘//
for(i=0;i<m;i++)
mplot=mplot*(m-i);//到这里这个for循环是求1~m的阶乘//
p=nplot/(nmplot*mplot);//这里就不用我说啦。。。//
}
}
else//当上面的if,else都不成立时,就执行这个else后面的语句//
p=-1;
return(p);
}
void main() //主函数//
{
int x,a,i,j,z;//定义整形变量//
scanf("%d",&x); //给整形变量x输入一个值//
a=x-1;//将输入的x的值减去1然后赋值给a//
for(i=0;i<=a;i++)//若i<a;就执行循环,否则推出//
{
for(z=0;z<=(a-i);z++)
printf(" ");//这个循环的意思是若z<=(a-i),输出空格;否则推出循环,继续执行下面的for语句//
for(j=0;j<=i;j++)//同上,若j<=i就继续执行for里的printf语句//
printf("%d ",port(i,j));//这里运用了函数调用//
printf("\n");//这个printf函数的作用是换行//
}
for(i=(a-1);i>=0;i--)
{
for(z=0;z<=(a-i);z++)
printf(" ");
for(j=0;j<=i;j++)
printf("%d ",port(i,j));
printf("\n");
}
}其他都类似的了。。。 楼主反应过来了没。。。 不要看它长就怕了。。 应该一句一句分析,逐个破解,你就看的懂的啦。祝你学有所成
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询