我在做一个c练习,用函数做一个菱形。
我的代码:

    #include <stdio.h>
//Declare function
void losangle(int n);
//main
int main(void){
  int n;
  do {
    printf("Altura do triangulo: ");
    scanf("%d", &n );
  } while( n % 2 == 0);
  losangle(n);}
//function
void losangle(int n){
  int i, hashtag, spaces, j, spaces1, hashtag1;
//triangle
  for(i = 0; i < n; i++){
    for(spaces = 0; spaces < (n-i); spaces++){
      printf(" ");}
    for(hashtag = 0; hashtag < (i+1);hashtag++){
      printf("# ");}
    printf("\n");}
//inverted triangle
  for(j = 0; j < (n - 1); j++){
    for(spaces1 = 0; spaces1 < (j+2); spaces1++){
        printf(" ");}
//not working !!!
    for(hashtag1 = (n-1); hashtag1 > 0; hashtag1--){
      printf("# ");}
    printf("\n");
  }}

结果是:
Losangle: 5
     #
    # #
   # # #
  # # # #
 # # # # #
  # # # #
   # # # #
    # # # #
     # # # #

是什么使底部的“#”不递减?这一行有错吗(for(hashtag1=(n-1);hashtag1>0;hashtag1--)??顺便说一句,我也接受提高代码效率的建议。

最佳答案

问题:
无论for的值如何,倒三角形n-1循环每次都从0迭代到j
解决方案:
n-1j之间迭代将导致每次迭代的哈希符号数减少。
更改此行:

for(hashtag1 = (n-1); hashtag1 > 0; hashtag1--){


for(hashtag1 = (n-1); hashtag1 > j; hashtag1--){

关于c - 不能在C中获得菱形,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33813489/

10-11 17:54