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;
}