#include
int main()
{
int a,c,d;
char b;
while(1)
{
scanf ("%c",&b);
if (b!='@'){
scanf ("%d",&d);
for(c=1;c<=d-1;c+=1){
printf (" ");
}
printf("%c",b);
for(c=1;c<=d-1;c+=1){
printf (" ");
}
printf ("\n");
for(a=1;a
for(c=1;c<=d-a-1;c+=1){
printf(" ");
}
printf ("%c",b);
for(c=1;c<=2a-1;c++){
printf (" ");
}
printf ("%c",b);
for(c=1;c<=d-a-1;c+=1){
printf (" ");
}
printf ("\n");
}
for(c=1;c<=2d-1;c++){
printf ("%c",b);
}
}
printf ("\b\b");
else{
break;
}
printf ("\n");
}
}
return 0;}
题主的代码没什么大问题,修改如下,供参考:
#include <stdio.h>
int main()
{
int a, c, d;
char b;
while (1)
{
scanf("%c", &b);
if (b != '@') {
scanf("%d", &d);
for (c = 1; c <= d - 1; c += 1) {
printf(" ");
}
printf("%c", b);
for (c = 1; c <= d - 1; c += 1) {
printf(" ");
}
printf("\n");
for (a = 1; a < d - 1; a++) {
for (c = 1; c <= d - a - 1; c += 1) {
printf(" ");
}
printf("%c", b);
for (c = 1; c <= 2 * a - 1; c++) {
printf(" ");
}
printf("%c", b);
for (c = 1; c <= d - a - 1; c += 1) {
printf(" ");
}
printf("\n");
}
for (c = 1; c <= 2 * d - 1; c++) {
printf("%c", b);
}
printf("\b\b");
}
else {
break;
}
printf("\n");
}
return 0;
}
题主的写法太繁琐了,提供一个简单的写法,供参考:
//空心三角形
#include <stdio.h>
int main()
{
int i, j, n = 4;
char ch = 'a';
while (scanf("%d %c", &n, &ch) == 2 && ch != '@') { //循环输入,直到输入:数字‘@’ 时结束输入退出
for (i = 0; i < n; i++)
{
for (j = i; j < n - 1; j++)
printf(" ");
for (j = 0; j < 2 * i + 1; j++)
printf("%c", (i == n - 1 || j == 0 || j == 2 * i) ? ch : ' ');
for (j = i; j < n - 1; j++)
printf(" ");
printf("\n");
}
}
return 0;
}
有什么问题吗?