C程序打印数字,星星和数字的梯形模式hypens

时间:2016-01-16 16:02:13

标签: c

我今天在测试中被问过这个问题。

我必须打印以下模式: -

例如,如果用户输入n = 4,则输出应为此模式 -
1 * 2 * 3 * 4 * 17 * 18 * 19 * 20
--5 * 6 * 7 * 14 * 15 * 16
---- 8 * 9 * 12 * 13
------ 10 * 11

如果N = 5,代码应该打印
1 * 2 * 3 * 4 * 5 * 26 * 27 * 28 * 29 * 30
--6 * 7 * 8 * 9 * 22 * 23 * 24 * 25
---- 10 * 11 * 12 * 19 * 20 * 21
------ 13 * 14 * 17 * 18
-------- 15 * 16

我可以设法部分打印图案...帮助..
到目前为止的进展......

if meteorite's y position > graphicsWindow.height then
shapes.move(meteorite, meteoriteX, 0)
endif

打印n = 4: -

#include <stdio.h>
void pattern(int);
int main()
{
    int n;
    scanf("%d",&n);
    pattern(n);
    return 0;
}
void pattern(int n)
{
    int i,j,k=1,l=2,h;
    for(i=n;i>0;i--)
    {
        if(i<n)
            {
                for(h=1;h<=l;h++)
                    printf("-");
                    l=l+2;
            }
        for(j=1;j<=i;j++)
        {
            printf("%d",k);
            k++;
            if(j!=i)
                printf("*");
        }
        printf("\n");  
    }
}

4 个答案:

答案 0 :(得分:1)

你去了:

#include<stdio.h>
void pattern(int);
int main()
{
  int n;
  scanf("%d",&n);
  pattern(n);
  return 0;
}
void pattern(int n)
{
  int i,j,k=1,l=2,h;
  int rest=n*(n+1)+1,rn=0;

  for(i=n;i>0;i--)
    {
      if(i<n)
        {
          for(h=1;h<=l;h++)
            printf("-");
          l=l+2;
        }
      for(j=1;j<=i;j++)
        {
          printf("%d",k);
          k++;           
          printf("*");
        }

      rest=rest-i;
      rn=rest;

      for(int p=1;p<=i;p++)
        {      
          printf("%d",rn);
          rn++;
          if(p!=i)
            printf("*");

        }
      printf("\n");  
    }
}

我看到你在打印超量和一半的数字方面做得很好。所以剩下的就是另一半应该用每一行递减。 我们需要打印的最高数字是n *(n + 1)。 所以我们计算那个数字(在变量rest中)然后我们需要用i减去每一行(一行中元素数量的一半)。

答案 1 :(得分:0)

#include<stdio.h>

int pattern(int);

int pattern(int t)
{
    int i, n, j, max = 1, k, max1, no=1, l, no2, s = 1;
    printf("enter the no of rows");
    scanf("%d",&n);
    max1 = n;
    no2=(n*n)+1;
    for (i = 1; i <= n; i++)
    {
    /* PRINTING "-" FROM 2ND LINE SO J=2 AND PRINTING LIKHE 2 4 6 SO MAX= MAX+2 */
        for(j=2;j<=max;j++)
        {
            printf("-");
        }
        max = max + 2;
        /* PRINTING FIRST SET OF NOS 1 2 3 2ND LINE 4 5 DEN 6 SO NO++  */
        for(k=1;k<=max1;k++)
        {
            printf("%d*",no);
            no++;
        }
        /* PRINTING 2ND NOS NO2 = N*N+1 COZ N=5 */
        for(l=1;l<=max1-1;l++)
        {
            printf("%d*",no2);
            no2++;
        }
        /* printing last no without star*/
        printf("%d",no2);
        max1--;
        /* then initializing the 2nd line starting no */    
        no2 = no2 - 2 * (n - s);
        s++;
        printf("\n");   
    }
}


int main()
{
    int p = pattern(p);
    return 0;
}

答案 2 :(得分:0)

#include<stdio.h>
#include<stdlib.h>
int main( )
{
 int n,n1,n2,n3,i,j,*arr;
 printf("enter the number\n");
 scanf("%d",&n);
 n1=1;
 n2=n*(n+1);
 n3=(2*n)-1;
 arr=(int*)calloc(n*2,sizeof(int));
 for(i=0;i<n;i++)
 {
   for(j=i;j<n;j++)
     arr[j]=n1++;
   for(j=n3-i;j>=5;j--)
     arr[j]=n2--;
   for(j=0;j<i;j++)
     printf("--");
   printf("%d",arr[i]);
   for(j=i+1;j<2*n-i;j++)
     printf("*%d",arr[j]);
   printf("\n");
  }
 free(arr);
}

答案 3 :(得分:-1)

#include<iostream>

using namespace std;

int main(){

    int n=5;

    int count = 1,pno=1;

    for (int i=0; i<n; i++){

        for (int j=0; j!=i; j++){
            //cout << "--";
        }

        for (int j=n; j>i; j--){
            //cout << count << "*";
            count++;
        }
        //cout << endl;
    }

    count = (count-1)*2;
    count = count-n+1; 
    int countdec = 5;

    int nn=n-1;

    for (int i=0; i<n; i++){

        for (int j=0; j!=i; j++){
            cout << "--";
        }

        for (int j=n; j>i; j--){
            cout << pno << "*";
            pno++;
        }

        for (int j=n; j>i; j--){
            if (j==n){
                if(i==0){
                    countdec=count;
                    cout << count;
                }
                else{
                    countdec=count;
                    cout << count;
                }
            }
            else{
                cout <<"*"<< count ;
            }
            count++;
        }
        count = countdec- (nn--);
        cout << endl;
    }

    //cout << endl;

    return 0;
}