【问题描述】输入一个整数n(0<n<=10),求1!+2!+3!+……+n!。定义并调用函数fact(n),计算n!,函数类型是double。 【输入形式】一个整数 【输出形式】一个浮点数,但不保留小数部分。 【样例输入】
3
【样例输出】
9
#include<stdio.h>
double fact(int x){
}
int main(){
int i,n;
double sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
sum=sum+fact(i);
printf("%.0lf",sum);
}
double fact(int x){
double result;
if(x==1||x==0)
result=1;
else
result=x*fact(x-1);
return result;
}
【问题描述】输入一个正整数n,输出其转换为二进制后的形式。要求定义并调用函数dectobin(n),其功能是输出n的二进制(在函数中输出)。 【输入形式】一个正整数 【输出形式】该正整数的二进制形式 【样例输入】
100
【样例输出】
1100100
#include<stdio.h>
void dectobin(int n){
}
int main(){
int x;
scanf("%d",&x);
dectobin(x);
}
void dectobin(int n){
if(n>1)
dectobin(n/2);
printf("%d",n%2);
}
【问题描述】输入一个正整数,编写两个递归函数,分别实现对其按位顺序、逆序输出。 【输入形式】一个正整数 【输出形式】先顺序输出该整数的每一位值,中间用空格分开;再逆序输出该整数的每一位值,中间用空格分开 【样例输入】
1024
【样例输出】
1 0 2 4
4 2 0 1
#include<stdio.h>
void posi(int n){
}
void nega(int n){
}
int main(){
int x;
scanf("%d",&x);
posi(x);
printf("\n");
nega(x);
}
void posi(int n){
if(n>9)
posi(n/10);
printf("%d ",n%10);
}
void nega(int n){
if(n>0){
printf("%d ",n%10);
nega(n/10);
}
}
【问题描述】递归计算函数Ack(m,n)的值,输入两个整数m和n(m和n均大于0 ),输出函数Ack的值。Ack(m,n)的定义为: 当m=0时,Ack(m,n)=n+1; 当n=0且m>0时,Ack(m,n)=Ack(m-1,1); 当n>0且m>0时,Ack(m,n)=Ack(m-1,Ack(m,n-1)); 【输入形式】两个整数m和n 【输出形式】函数的名称,具体参数和计算结果。 【样例输入】
2 3
【样例输出】
Ack(2,3)=9
int Ack(int m,int n){
if(m==0){
return ((n)+1);
}
if(n==0&&m>0){
return Ack(m-1,1);
}
if(n>0&&m>0){
return Ack(m-1,Ack(m,n-1));
}
return 0;
}
#include<stdio.h>
int main()
{
int m,n;
scanf("%d%d",&m,&n);
printf("Ack(%d,%d)=%d",m,n,Ack(m,n));
}