第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;
}