2014-07-27 47 views
-5

这个字母图案是否有任何其他的方式做这个节目用更少的loops.Its没有多少有效的计划在C++中

#include <iostream> 

using namespace std; 

int main() { 
    int i,j,n,s; 
    cout<<"Enter the value of n"; 
    cin>>n; 
    for(i=1;i<=n;i++){ 
     for(s=1;s<=n-i;s++){ 
      cout<<" "; 
     } 
     char ch=97; 
     int k=1; 
     for(j=1;j<=(i*2-1);j++) { 
      if (k%2!= 0){ 
       cout <<ch; 
       ch++; 
      } else { 
       cout<<" "; 
      } 
      k++; 
     } 
     cout<<endl; 
    } 
} 

输出的数量:

Enter the value of n6 
    a 
    a b 
    a b c 
    a b c d 
a b c d e 
a b c d e f 
+2

比少?它看起来应该可以使用嵌套在另一个循环中的一个循环来实现。 – user3553031

+1

更少的循环数?为什么不只是以这种格式打印它们:P – P0W

+0

你的问题还不清楚,但我想这可以用一个循环来完成,每一行作为一个字符串。 –

回答

0

试试下面的代码 -

#include<stdio.h> 
main() 
{ 
    int i,j,k,num; 
    printf("Enter the number of letter \n"); 
    scanf("%d",&num); 
    for(i=0;i<num;i++) 
    { 
      for(j=num-1;j>i;j--) 
        printf(" "); 
      for(k=0;k<=i;k++) 
        printf("%c ",(97+k)); 
      printf("\n"); 
    } 
} 

样品的输入和输出 -

[email protected]:~/c/basics$ ./a.out 
Enter the number of letter 
4 
    a 
    a b 
a b c 
a b c d 
0
#include <stdio.h> 

int main(){ 
    char *pat = "a b c d e f g h i j k l m n o p q r s t u v w x y z"; 
    int i, n; 
    printf("input n : "); 
    scanf("%d", &n); 
    for(i = 1;i<=n;++i) 
     printf("%*s%.*s\n", n - i, "", (i << 1) - 1, pat); 

    return 0; 
} 

#include <iostream> 
#include <string> 

using namespace std; 

int main() { 
    int n; 
    cout << "Enter the value of n : "; 
    cin >> n; 
    string spaces(n, ' '); 
    string pat("a b c d e f g h i j k l m n o p q r s t u v w x y z"); 
    for(int i=1;i<=n;i++){ 
     cout << spaces.substr(i); 
     cout << pat.substr(0, (i << 1) -1); 
     cout << endl; 
    } 
}