する#include <stdio.hに> する#include <STDLIB.H> INT合計(INT *バフ、INT LEN) { int型の和= 0。 以下のために(INT i = 0; iがLEN <; iは++){ 合計+ =バフ[I]。 } の和を返します。 } ボイドプリント(int型*バフ、INT LEN) { (INT i = 0; iがLEN <; iは++){ため のprintf( "%dの"、バフ[I])。 } //のprintf( "の\ n"); } INTパーマ(INT *バフ、INT * LEN、INT開始、INT M、INT *カウント) { int型の和=合計(バフ、* LEN)。 int型分=((M -合計)<開始)?(M -和):開始。 以下のために(; I> 0; I = int型分i--){ IF((和+ I)== M){ (*カウント)++; 印刷(バフ、* LEN); printf( "%d個の\ n"は、i)は、 持続する; } バフ[* LEN = I。 (* LEN)++; パーマ(バフ、LEN、I、M、カウント)。 (* LEN) - 。 } } int型のmain() { int型バフ[10] = {0}。 int型のlen = 0; int型のカウント= 0; int型のn; scanf関数( "%のD"、&N); パーマ(バフ、&lenは、N、N、&カウント)。 printf( "N =%dは、=%dは\ nをカウント"、N、カウント)。 0を返します。 }