ygzzn 发表于 2008-6-6 19:13

各位大侠看过来······关于C语言的两道题· ······超级菜鸟急急急·

现有两道C语言编程题:
1、用C程序实现ABCDE的各种排列,打印出来。



2,打印


        *
       ***
      *****

(输入数字1,打印1行。输入数字2,打印前两行。输入3,打印前3行。……。保持*号成等边三角形排列。程序最好用递归)。

希望有说明,我好好学习吸收·····谢谢·····

lxvip110 发表于 2008-6-6 22:28

第2题
#include<stdio.h>
main()
{
      int i,j,k,n;
      printf("please input n=?\n");
      scanf("%d",&n);
      for(i=0;i<=n-1;i++)
      {
                       for(j=0;j<=n-2-i;j++)
                       printf(" ");
                       for(k=0;k<=2*i;k++)
                       printf("*");
                       printf("\n");
                       }
}

C王之王 发表于 2008-6-7 11:22

这个我改良了下
#include "stdio.h"
void main()
{
        int i,n,j,k;
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
            k=2*i+1;
            j=n-i-1;
                while(j--)
                printf(" ");
            while(k--)
                printf("*");
                printf("\n");
                }
       
   
}

zjl138 发表于 2008-6-7 12:27

1:用递归做的.
[quote]
#include <iostream>
using namespace std;
int main(void)
{
   void perm(char *a,int,int);
   char a[5]={'A','B','C','D','E'};
   perm(a,0,5);
   system("pause");
   return 0;
}
void perm(char *a,int k,int n)
{
    if (k==n-1)  //输出一种排列
    {
       for(int i=0;i <n;i++)
          cout<<a[i]<<"  ";
       cout<<endl;
    }
    else
      for (int j=k;j <n;j++)                 //产生{a[k],....a[n-1]}各种排列
      {
         int t;
         t = a[k]; a[k] = a[j]; a[j] = t;
         perm(a,k+1,n);                     //产生{a[k+1]....a[n-1]}各种排列
         t = a[k]; a[k] = a[j]; a[j] = t;
      }
}
[/quote]

[[it] 本帖最后由 zjl138 于 2008-6-7 12:29 编辑 [/it]]

now 发表于 2008-6-7 22:42

O也是菜鸟一个。。。

页: [1]

编程论坛