1.利用for迴圈輸出如執行結果1、2、3、4,若是以printf函數印出,則不給分。
1. 2. 3. 4.
* ***** * *****
** **** ** ****
*** *** *** ***
**** ** **** **
***** * ***** *
本程式原題意:寫出4個c程式分別命名 CPD08-1.c、CPD08-2.c、CPD08-3.c、CPD08-4.c,每支程式分別顯示4種由星號組成的三角形圖案。
但因 judge 系統不處理程式碼分開的方式,所以本題改成:寫出4個副程式分別為 CPD08_1.c、CPD08_2.c、CPD08_3.c、CPD08_4.c,副程式必須傳入列印星星數,因此煮成是必須輸入所要列印的星號圖案編號及星星數,並傳入對應的副程式。
本題提供兩種主程式呼叫方式,一種為利用程式指標,將副程式位址分別放進副程式指標陣列,依照使用者需求呼叫對應的陣列。
另一種比較簡單的方式是以 switch case 方式,選擇須呼叫的副程式。程式碼如下供參考,但有些錯誤,需修正。
#include <stdio.h>
#include <stdlib.h>
void cpd08_1(int);
void cpd08_2(int);
void cpd08_3(int);
void cpd08_4(int);
int main(){
void (*triangle[])(int)= {cpd08_1,cpd08_2,cpd08_3};
int m,n;
while(1){
printf("輸入三角型形狀代號(1-4)及星星數量(1-10):");
scanf("%d %d",&m,&n);
if((m<1)&&(m>4)||(n<1)&&(n>10)) break;
triangle[m](n);
}
return 0;
}
void cpd08_1(int n){
}
void cpd08_2(int n){
}
void cpd08_3(int n){
}
void cpd08_4(int n){
}
主程式部分,呼叫副程式形式不拘,如下方式也可以。
int main(){
int m,n;
while((m>=1)&&(m<=4)&&(n>=1)&&(n<=10)){
printf("輸入三角型形狀代號(1-4)及星星數量(1-10):");
scanf("%d %d",&m,&n);
switch (m){
case 1:cpd08_1(n);
case 2:cpd08_2(n);
case 3:cpd08_3(n);
case 4:cpd08_4(n);
}
return 0;
}
範例一 1 5 2 10 3 4 0 5 範例二 4 6 1 11
範例一 輸入三角型形狀代號(1-4)及星星數量(1-10):1 5 * ** *** **** ***** 輸入三角型形狀代號(1-4)及星星數量(1-10):2 10 ********** ********* ******** ******* ****** ***** **** *** ** * 輸入三角型形狀代號(1-4)及星星數量(1-10):3 4 * ** *** **** 輸入三角型形狀代號(1-4)及星星數量(1-10):0 5 範例二 輸入三角型形狀代號(1-4)及星星數量(1-10):4 6 ****** ***** **** *** ** * 輸入三角型形狀代號(1-4)及星星數量(1-10):1 11
編號 | 身分 | 題目 | 主題 | 人氣 | 發表日期 |
沒有發現任何「解題報告」 |