- UID
 - 58584
 
 注册时间2009-1-25
阅读权限30
最后登录1970-1-1
龙战于野 
  
 
 
 
TA的每日心情  | 慵懒 2015-10-9 11:25 | 
|---|
 
  签到天数: 1 天 [LV.1]初来乍到  
 | 
 
 本帖最后由 老万 于 2010-11-13 08:53 编辑  
 
由于菱形两条对角线相互垂直,故根据对角线的长度,设计如下程序: 
main() 
{ 
int i,a,b,j;                     //i,j为循环变量,a为菱形纵对角线长度,b为菱形横对角线长度 
printf("Input two length(>10):");//输入菱形的两条对角线长度,长度大于10的话能看出效果 
scanf("%d%d",&a,&b); 
 
 if((a%2)&&(b%2))   //判断长度是否是偶数 
 { 
  for(i=0;i<(b+1)/2;i++) 
   { 
    printf(" "); 
   } 
  printf("*\n");            //打印最上边的*号 
 
  for(i=1;i<(a+1)/2;i++)    //打印菱形上部分 
   { 
    for(j=0;j<(int)((b+1)/2-i*b/a);j++) 
       { 
        printf(" "); 
       } 
    printf("*");           //打印菱形上部分左边的* 
    for(j=0;j<(int)(2*i*b/a);j++) 
       { 
        printf(" "); 
       } 
    printf("*\n");         //打印菱形上部分右边的* 
 
   } 
  for(i=1;i<(a+1)/2;i++)   //打印菱形下部分 
   { 
    for(j=0;j<(int)(i*b/a);j++) 
       { 
        printf(" "); 
       } 
    printf("*");            //打印菱形下部分左边的* 
 
    for(j=0;j<(int)(b-2*i*b/a);j++) 
       { 
        printf(" "); 
       } 
    printf("*\n");          //打印菱形下部分左边的* 
 
 
   } 
  for(i=0;i<(b+1)/2;i++) 
   { 
    printf(" "); 
   } 
  printf("*\n");            //打印最下边的*号  
  
 } 
else                          
 { 
  for(i=0;i<b/2;i++) 
   { 
    printf(" "); 
   } 
  printf("*\n"); 
 
  for(i=1;i<a/2;i++) 
   { 
    for(j=0;j<(int)(b/2-i*b/a);j++) 
       { 
        printf(" "); 
       } 
    printf("*");  
    for(j=0;j<(int)(2*i*b/a);j++) 
       { 
        printf(" "); 
       } 
    printf("*\n"); 
 
   } 
  for(i=1;i<a/2;i++) 
   { 
    for(j=0;j<(int)(i*b/a);j++) 
       { 
        printf(" "); 
       } 
    printf("*"); 
 
    for(j=0;j<(int)(b-2*i*b/a);j++) 
       { 
        printf(" "); 
       } 
    printf("*\n");  
 
 
   } 
  for(i=0;i<b/2;i++) 
   { 
    printf(" "); 
   } 
  printf("*\n"); 
  
 } 
} |   
 
 
 
 |