第六章 函数 编程作业

1水仙花数(30分)
设有一个3位数,它的百位数、十位数、个位数的立方和正好等于这个3位数,如153=1+125+27。

编写函数,返回小于等于传入参数n且满足该条件的三位数(称为水仙花数)的个数。

(指定函数原型:int find(int n))

返回值要求:如果传入参数n不是三位数或者在该范围内没有找到,则find返回0, 否则返回找到的水仙花数的个数。

注意:不要在find函数中打印(如调用printf或puts等函数)任何数据,否则视为错误。

提交的程序需要包含需要的头文件及如下的main函数:


#include
#include
int find(int n);
int main()
{
   int n,r;
  r=scanf("%d",&n);
  if(r!=-1){printf("error",return -1;}
  r=find(n);
  printf("%d",r);
  return 0;
}

输入1:

400

输出1:

3

输入2:

59

输出2:

0

时间限制:500ms内存限制:32000kb

#include

#include

int find(int n){
	int count=0, i=100;
	int hum,ten,sin;
	if(n<100||n>999)
		return 0;
	else
	{
		for(i=100;i<n;i++)
		{
			hum=i/100;
			ten = (i-hum*100)/10;
			sin= i % 10;
			if(i == hum*hum*hum + ten*ten*ten + sin*sin*sin)
			{
				count++;
			}
		}
	}
	return count;
};

	int main(){

  int n,r;

  r=scanf("%d",&n);
  //printf("%d",r);

  if(r!=1)
  {
	  printf("error");
	  return 0;
  }

  r=find(n);

  printf("%d",r);

  return 0;
}

2最小公倍数(30分)
编写程序,从键盘输入5个正整数,然后求出它们的最小公倍数,并显示输出。

(通过调用对两个正整数求最小公倍数的函数实现)(参考函数原型:int LCM(int x, int y))

输入输出格式要求:

编写函数int LCM(int x, int y);返回值为x和y的最小公倍数。

要求在main函数接收5个正整数,然后通过调用LCM函数最终得到这5个数的最小公倍数,最后输出最小公倍数。

如果输入数据错误,输出"error"。

例如:

输入:2 3 6 9 10

输出:90

时间限制:500ms内存限制:32000kb

#include
int LCM(int x, int y)
{
	int a,i,m;
	if(x>y)
		a=x;
	else a=y;
	for(i=a;i<=x*y;i++)
	{
		if((i%x==0)&&(i%y==0))
		{
			m=i;
			return m;
		}
	}
};
int main()
{
	int i,a[5],n;
	for(i=0;i<5;i++)
		scanf("%d",&a[i]);
    for(i=0;i<5;i++)
		{
            if(a[i]<0)
            {
                printf("error");
                return 0;
            }
		}
	n=LCM(a[0],a[1]);
	n=LCM(n,a[2]);
	n=LCM(n,a[3]);
	n=LCM(n,a[4]);
	printf("%d",n);
	return 0;
}

3字符串的拷贝(40分)
编程实现函数:void my_strcpy(char * destination,char * source);

函数功能:将source指向的字符串拷贝到destination指向的位置。

注意:使用空格字符来表示字符串的结束。例如source指向位置,依次保存了字符’a’,字符’b’,字符空格’ ‘,字符’c’,则source指向的字符串为"ab"。destionation原来存储的字符串是"xyz tdk",则拷贝后,destionation存储的应该是“ab tdk”。遇到异常情况,输出"error";否则不要随意输出,会视为错误.

您的main函数需要读入2个长度不超过80字节的字符串(按行及下面顺序读入source和destionation字符串),然后调用my_strcpy函数,最后用puts函数输出destionation里面存储的字符串。

例如:

输入1:

xyz abc

a kp

输出1:

xyz

输入2:

xyz abc

a kppp

输出2:

xyz pp

时间限制:500ms内存限制:32000kb

#include
#include
#include
using namespace std;
void my_strcpy(char * destination,char * source)
{
	int i,len=0,len1;
	for(i=0;destination[i]!=' ';i++)
	{
		len++;
	}
	destination[len+1]=NULL;
	len1=strlen(source);
	//if(len>len1)
	//{
		for(i=len+1;i<len1;i++)
		{
			destination[i]=source[i];
		}
	//}
	puts(destination);
	
}
int main()
{
	char des[80], src[80];
	int i;
	gets(des);
	gets(src);
	my_strcpy(des,src);
	return 0;
}

你可能感兴趣的:(第六章 函数 编程作业)