6-1递归求阶乘和
本题要求实现一个计算非负整数阶乘的简单函数,并利用该函数求 1!+2!+3!+...+n! 的值。
double fact( int n )
{
int s;
if(n>1) return n*fact(n-1);
if(n==1||n==0) return 1;
}
double factsum( int n )
{
if(n<1) return 0;
return factsum(n-1)+fact(n);
}
6-2递归实现顺序输出整数
本题要求实现一个函数,对一个整数进行按位顺序输出。
void printdigits(int n)
{
if(n<10){
printf("%d\n",n);
}
else{
printdigits(n/10);
printf("%d\n",n%10);
}
}
7-1
查询水果价格
给定四种水果,分别是苹果(apple)、梨(pear)、桔子(orange)、葡萄(grape),单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。
#include<stdio.h>
int main(void)
{
printf("[1] apple\n[2] pear\n[3] orange\n[4] grape\n[0] exit\n");
int a, k;
for(a=0;a<=4;a++){
scanf("%d",&k);
if(k==0){
break;
}
switch(k){
case 1:printf("price = 3.00\n");
break;
case 2:printf("price = 2.50\n");
break;
case 3:printf("price = 4.10\n");
break;
case 4:printf("price = 10.20\n");
break;
default:printf("price = 0.00\n");
break;
}
}
return 0;
}
7-2找完数
所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。
#include<stdio.h>
int main()
{
int n,i,j,m,sum,c=0;
scanf("%d %d",&n,&m);
for(i=n;i<=m;i++)
{
sum=1;
for(j=2;j<i;j++)
{
if(i%j==0)
{
sum=sum+j;
}
}
if(sum==i)
{
c++;
printf("%d = 1",sum);
for(j=2;j<i;j++)
{
if(i%j==0)
{
printf(" + %d",j);