C语言由键盘输入正数n(n<30),要求输出具有n行的如下图案。
答案:4 悬赏:70
解决时间 2021-01-08 18:46
- 提问者网友:练爱
- 2021-01-08 00:12
C语言由键盘输入正数n(n<30),要求输出具有n行的如下图案。
最佳答案
- 二级知识专家网友:忘川信使
- 2021-01-08 00:23
#include
void main()
{
int n,i,j;
printf("请输入n(0 scanf("%d",&n);
for(i=0;i {
for(j=0;j {
if(i {
//什么情况下输出空格n为奇数和偶数两种情况都包含进去了
if((n%2==1&&j>n/2-i&&jn/2-1-i&&j printf(" ");
else
printf("*");
}
else //后面n/2行
{
//什么情况下输出空格n为奇数和偶数两种情况一样
if(j>i-n/2&&j printf(" ");
else
printf("*");
}
}
//换行
printf("\n");
}
}
//花了我很长时间的呢,运行结果非常OK,记得给分哦!
//其实这种题关键在于分析什么情况下输入空格
void main()
{
int n,i,j;
printf("请输入n(0
for(i=0;i
for(j=0;j
if(i
//什么情况下输出空格n为奇数和偶数两种情况都包含进去了
if((n%2==1&&j>n/2-i&&j
else
printf("*");
}
else //后面n/2行
{
//什么情况下输出空格n为奇数和偶数两种情况一样
if(j>i-n/2&&j
else
printf("*");
}
}
//换行
printf("\n");
}
}
//花了我很长时间的呢,运行结果非常OK,记得给分哦!
//其实这种题关键在于分析什么情况下输入空格
全部回答
- 1楼网友:北城痞子
- 2021-01-08 02:11
#include
void main()
{
int n;
char s[1000] = {0};
scanf("%d",&n);// n must be odd.
for( int i = 0; i < n; i++ )
{
int ii = i < n / 2 ? i : n - i - 1;
int left = n / 2 - ii;
int right = n / 2 + ii;
int j;
for( j = 0; j <= left; j++ )
s[j] = '*';
for( j = left + 1; j < right; j++ )
s[j] = ' ';
for( j = right; j < n; j++ )
s[j] = '*';
printf( "%s\n", s );
}
}
void main()
{
int n;
char s[1000] = {0};
scanf("%d",&n);// n must be odd.
for( int i = 0; i < n; i++ )
{
int ii = i < n / 2 ? i : n - i - 1;
int left = n / 2 - ii;
int right = n / 2 + ii;
int j;
for( j = 0; j <= left; j++ )
s[j] = '*';
for( j = left + 1; j < right; j++ )
s[j] = ' ';
for( j = right; j < n; j++ )
s[j] = '*';
printf( "%s\n", s );
}
}
- 2楼网友:逐風
- 2021-01-08 01:09
1 #include
2 main()
3 {
4 int line,i,j,k,targetnum;
5 scanf("%d",&targetnum);
6 if(targetnum%2==0)
7 {
8 printf("the num must be odd\n");
9 return 0;
10 }
11 for(line=1;line<=targetnum;line++)
12 {
13 //每行都是分成三部分打印的,第一行是例外单独处理
14 if(line==1)
15 {
16 for(i=1;i<=targetnum;i++)printf("*");
17 printf("\n");
18 continue;
19 }
20 if(line==targetnum)
21 {
22 for(i=1;i<=targetnum;i++)printf("*");
23 printf("\n");
24 continue;
25 }
26 if((targetnum-(line-1)*2+1)/2>=1)
27 {
28 for(i=1;i<=(targetnum-(line-1)*2+1)/2;i++)printf("*");
29 for(i=1;i<=(line-1)*2-1;i++)printf(" ");
30 for(i=1;i<=(targetnum-(line-1)*2+1)/2;i++)printf("*");
31 printf("\n");
32 }else
33 {
34 for(i=1;i<=1+line-(targetnum+1)/2;i++)printf("*");
35 for(i=1;i<=2*targetnum-2*line-1;i++)printf(" ");
36 for(i=1;i<=1+line-(targetnum+1)/2;i++)printf("*");
37 printf("\n");
38 }
39 }
40 }
可以直接编译运行,结果绝对正确。另外为了达到你这个输出要求,输入的数字必须是奇数,才能达到,所以我就在程序里面限制了。
满意请给分
2 main()
3 {
4 int line,i,j,k,targetnum;
5 scanf("%d",&targetnum);
6 if(targetnum%2==0)
7 {
8 printf("the num must be odd\n");
9 return 0;
10 }
11 for(line=1;line<=targetnum;line++)
12 {
13 //每行都是分成三部分打印的,第一行是例外单独处理
14 if(line==1)
15 {
16 for(i=1;i<=targetnum;i++)printf("*");
17 printf("\n");
18 continue;
19 }
20 if(line==targetnum)
21 {
22 for(i=1;i<=targetnum;i++)printf("*");
23 printf("\n");
24 continue;
25 }
26 if((targetnum-(line-1)*2+1)/2>=1)
27 {
28 for(i=1;i<=(targetnum-(line-1)*2+1)/2;i++)printf("*");
29 for(i=1;i<=(line-1)*2-1;i++)printf(" ");
30 for(i=1;i<=(targetnum-(line-1)*2+1)/2;i++)printf("*");
31 printf("\n");
32 }else
33 {
34 for(i=1;i<=1+line-(targetnum+1)/2;i++)printf("*");
35 for(i=1;i<=2*targetnum-2*line-1;i++)printf(" ");
36 for(i=1;i<=1+line-(targetnum+1)/2;i++)printf("*");
37 printf("\n");
38 }
39 }
40 }
可以直接编译运行,结果绝对正确。另外为了达到你这个输出要求,输入的数字必须是奇数,才能达到,所以我就在程序里面限制了。
满意请给分
- 3楼网友:廢物販賣機
- 2021-01-08 00:53
规律是中间空白区域的1,3,5,。。。,5,3,1,程序本身不难,考查的是循环!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |