六楼的此处错误啊。
if(mid-(k-i)==j||j==mid+(k-i))
if(mid-(i-1)==j||j==mid+(i-1))
其他的没有问题啊。高手啊。能这么轻松做出来,不容易啊。
if(mid-(k-i)==j||j==mid+(k-i))
if(mid-(i-1)==j||j==mid+(i-1))
其他的没有问题啊。高手啊。能这么轻松做出来,不容易啊。
#include<stdio.h> #include<stdlib.h> #define N 30 int main(void) { unsigned n; int i,j,k; while((scanf("%d",&n))==1) { if(n%2==0||n>N) { continue; } k=(int)(n/2); for(i=-k;i<=k;++i) { for(j=-k;j<=k;++j) { printf("%c",abs(i)+abs(j)==k?'*':' '); } puts(""); } } return 0; }
#include<stdio.h> #include<math.h> main() { int n,j,i,z; scanf("%d",&n); if(n%2==1) for(i=1;i<=n;i++) { if(i<=n/2+1) j=2*i-1; else j=n-(i-n/2-1)*2; for(z=1;z<=abs(n/2-i+1);z++)printf(" "); for(z=1;z<=j;z++) if(z==1||z==j)printf("*"); else printf(" "); printf("\n"); } else printf("error\n"); }加上奇数的判断。。。