查看單個文章
舊 2005-10-27, 09:13 AM   #4 (permalink)
mini
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:96 | 在線時長:9743小時 | 升級還需:54小時級別:96 | 在線時長:9743小時 | 升級還需:54小時級別:96 | 在線時長:9743小時 | 升級還需:54小時級別:96 | 在線時長:9743小時 | 升級還需:54小時級別:96 | 在線時長:9743小時 | 升級還需:54小時級別:96 | 在線時長:9743小時 | 升級還需:54小時
註冊日期: 2002-12-07
文章: 13279
精華: 0
現金: 26307 金幣
資產: 3024127 金幣
預設

幫你寫好了
語法:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

int num=1,i,j,n; //num計數數字 i表示幾顆星 j計數用 n上下半部計數用
int max,x; //max菱形直徑 x菱形半徑
char lr;

void PrintNum();

int main(int argc, char *argv[])
{
  printf("請輸入菱形直徑:");
  scanf("%d",&max);
  printf("請輸入缺角處:左上右下請按[1]/右上左下請按[2]");
  lr=getch();
  printf("\n");
  
  x=max/2+1;
  i=-1;
  for(n=1;n<=x;n++){ //上半部 
    i=i+2;//上半部 是遞增 
    for(j=1;j<=x-n;j++) printf(" ");
    PrintNum();
    printf("\n");
  }
  
  if(lr=='1') lr='2';
  else lr='1';
  
  for(n=x-1;n>=1;n--){ //下半部 
    i=i-2;//因為接下來是遞減 
    for(j=1;j<=x-n;j++) printf(" ");
    PrintNum();
    printf("\n");
  }
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

void PrintNum()
{
  if(lr=='1') for(j=1;j<=i-n;j++) printf("*"); //選左上右下時先印 *
  for(j=1;j<=n;j++){ //依序填 1、2、5、7、9、1...
    printf("%d",num);
    num=num+2;
    if(num>9) num=1;
  }
  if(lr=='2') for(j=1;j<=i-n;j++) printf("*"); //選右上左下時後印 *
//  printf("%d",n); //除錯用 
}
mini 目前離線  
送花文章: 2003, 收花文章: 7968 篇, 收花: 26766 次
回覆時引用此帖