我在做一个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-1
到j
之间迭代将导致每次迭代的哈希符号数减少。
更改此行:
for(hashtag1 = (n-1); hashtag1 > 0; hashtag1--){
到
for(hashtag1 = (n-1); hashtag1 > j; hashtag1--){
关于c - 不能在C中获得菱形,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33813489/