作者keeperkai (keeperkai)
看板Programming
标题Re: [问题] n项目乘法表
时间Fri Apr 23 15:46:44 2010
※ 引述《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)