Re: [問題] n項目乘法表
※ 引述《makiyolove (暴力熊)》之銘言:
: ※ [本文轉錄自 C_and_CPP 看板]
: 作者: makiyolove (暴力熊) 看板: C_and_CPP
: 標題: [問題] n項目乘法表
: 時間: Fri Apr 23 12:37:02 2010
: 最近在跟學弟討論程式練習的題目,
: 意外的想到一題,是由九九乘法表的延伸,
: 標準的九九乘法表有 n=2個項目,也就是利用i與j的迴圈印出,
: 那麼,我們想出來的問題就是,當使用者輸入n=3時,
: 則會輸出 1*1*1~9*9*9的答案,n=4時輸出1*1*1*1~9*9*9*9,
: 這樣到底應該怎樣寫這個程式...
: 問了幾個程式能力好的同學似乎都摸不著頭緒..
: 這不是作業,只是額外想到的問題,
: 不知道有沒有辦法利用程式做出來。
: 懇請版上先進指教。
可以利用一個int陣列i[]來存每層迴圈的變數
然後創造一個p(int *i, int k ,int N)的function
p= 印出結果, k=N+1的時候
設定第k個回圈的變數,並且再往下呼叫
我是直接改N來當作輸入,想要改用scanner取得也可以
#include "stdafx.h"
#include "iostream.h"
#include "stdio.h"
void p(int *i,int k,int N){
if (k==N+1){
int ans=1;
for (int j=1;j<N;j++){
ans=ans*i[j];
printf("%d*",i[j]);
}
ans=ans*i[N];
printf("%d=%d\n",i[N],ans);
}
else
while (i[k]<9){
i[k]=i[k]+1;
p(i,k+1,N);
}
i[k]=0;
}
int main(int argc, char* argv[])
{
int N=10;
int *i=new int[N+1];
for (int j=0;j<=N;j++){
i[j]=0;
}
p(i,1,N);
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.222.23.95
※ 編輯: keeperkai 來自: 203.222.23.95 (04/23 16:01)
※ 編輯: keeperkai 來自: 203.222.23.95 (04/23 16:03)
討論串 (同標題文章)