编写一个C程序,输入一个整数n,根据n的值在屏幕上输出相应图案 例如:输入 n = 3,则在屏幕上输出

第1行: * *
第2行: * * * *
第3行: * * * * *
第4行: * * * *
第5行: * *

第1个回答  推荐于2017-05-21
#include <stdio.h>

int main(void)
{
int i, j, k;
int n;

printf("n=");
scanf("%d", &n);

printf("\n\n\n");
for (i=0; i<n; i++)
{
for (j=0; j<i+1; j++)
{
printf("*");
}
for (k=0; k<2*(n-1-i)-1; k++)
{
printf(" ");
}
if (n-1 == i)
{
for (j=0; j<i; j++)
{
printf("*");
}
}
else
{
for (j=0; j<i+1; j++)
{
printf("*");
}
}
printf("\n");
}

for (i=0; i<n-1; i++)
{
for (j=0; j<n-i-1; j++)
{
printf("*");
}
for (j=0; j<2*i+1; j++)
{
printf(" ");
}
for (j=0; j<n-i-1; j++)
{
printf("*");
}
printf("\n");
}
printf("\n\n\n");
}本回答被网友采纳
第2个回答  2014-10-21
#include <stdio.h>

#include <string.h>

char* connectStrings(char* desc, char* src) {

int len = strlen(desc) + strlen(src) + 1;

char * result = (char *) malloc(len);

snprintf(result, len, "%s%s", desc, src);

return result;

}

void printString(int total, int current) {

char* outChar = "";

if (current == total) {

for (int i = 0; i < 2 * current - 1; i++) {

char* temp = "*";

outChar = connectStrings(outChar, temp);

}

strcat(outChar, "\n");

printf(outChar);

}

else {

for (int i = 0; i < 2 * total - 1; i++) {

if (i < current || i > (2 * total - 1) - current - 1) {

char* temp = "*";

outChar = connectStrings(outChar, temp);

}

else {

char* temp = " ";

outChar = connectStrings(outChar, temp);

}

}

strcat(outChar, "\n");

printf(outChar);

}

}

int main(int argc, const char * argv[]) {

// insert code here...

int n = 0;

char* outString = "";

scanf("%d", &n);

for (int i = 1; i <= 2 * n - 1; i++) {

if (i > n) {

printString(n, 2 * n - i);

}

else

printString(n, i);

}

return 0;

}
相似回答