水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1
3
+5
3
+3
3
。 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数。
函数接口定义:
int narcissistic( int number );
void PrintN( int m, int n );
函数narcissistic判断number是否为水仙花数,是则返回1,否则返回0。
函数PrintN则打印开区间(m, n)内所有的水仙花数,每个数字占一行。题目保证100≤m≤n≤10000。
裁判测试程序样例:
#include
int narcissistic( int number );
void PrintN( int m, int n );
int main()
{
int m, n;
scanf("%d %d", &m, &n);
if ( narcissistic(m) ) printf("%d is a narcissistic number\n", m);
PrintN(m, n);
if ( narcissistic(n) ) printf("%d is a narcissistic number\n", n);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
153 400
输出样例:
153 is a narcissistic number
370
371
int pow(int x,int n)
{
int p=1;
while(n)
{
p*=x;
n--;
}
return p;
}
int narcissistic( int number )
{
int sum=0,count=0,m,n;
m=n=number;
do
{
count++;
m=m/10;
}while(m);
do
{
sum+=pow(n%10,count);
n=n/10;
}while(n);
if(sum==number)
return 1;
else
return 0;
}
void PrintN( int m, int n )
{
int i;
for(i=m+1;i<n;i++)
if(narcissistic(i))
printf("%d\n",i);
}
本题要求实现一个函数,计算N个整数中所有奇数的和,同时实现一个判断奇偶性的函数。
函数接口定义:
int even( int n );
int OddSum( int List[], int N );
其中函数even将根据用户传入的参数n的奇偶性返回相应值:当n为偶数时返回1,否则返回0。函数OddSum负责计算并返回传入的N个整数List[]中所有奇数的和。
裁判测试程序样例:
#include
#define MAXN 10
int even( int n );
int OddSum( int List[], int N );
int main()
{
int List[MAXN], N, i;
scanf("%d", &N);
printf("Sum of ( ");
for ( i=0; i
}
/* 你的代码将被嵌在这里 */
输入样例:
6
2 -3 7 88 0 15
输出样例:
Sum of ( -3 7 15 ) = 19
int even( int n )
{
if(n%2)
return 0;
return 1;
}
int OddSum( int List[], int N )
{
int sum=0,i;
for(i=0;i<N;i++)
if(even(List[i])==0)
sum+=List[i];
return sum;
}
本题要求实现一个计算两个数的最大公约数的简单函数。
函数接口定义:
int gcd( int x, int y );
其中x和y是两个正整数,函数gcd应返回这两个数的最大公约数。
裁判测试程序样例:
#include
int gcd( int x, int y );
int main()
{
int x, y;
scanf("%d %d", &x, &y);
printf("%d\n", gcd(x, y));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
32 72
输出样例:
8
int gcd( int x, int y )
{
int n,m,s;
m=(x>y)?x:y;
n=(x>y)?y:x;
while(n)
{
s=m%n;
m=n;
n=s;
}
return m;
}
本题要求实现一个计算x
n
(n≥1)的函数。
函数接口定义:
double calc_pow( double x, int n );
函数calc_pow应返回x的n次幂的值。建议用递归实现。题目保证结果在双精度范围内。
裁判测试程序样例:
#include
double calc_pow( double x, int n );
int main()
{
double x;
int n;
scanf("%lf %d", &x, &n);
printf("%.0f\n", calc_pow(x, n));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
2 3
输出样例:
8
double calc_pow( double x, int n )
{
double p=1;
while(n)
{
p*=x;
n--;
}
return p;
}
本题要求实现函数输出n行数字金字塔。
函数接口定义:
void pyramid( int n );
其中n是用户传入的参数,为[1, 9]的正整数。要求函数按照如样例所示的格式打印出n行数字金字塔。注
意每个数字后面跟一个空格。
裁判测试程序样例:
#include
void pyramid( int n );
int main()
{
int n;
scanf("%d", &n);
pyramid(n);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
5
输出样例:
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
void pyramid( int n )
{
int i,j;
for(i=1;i<=n;i++)
{
for(j=0;j<n-i;j++)
printf(" ");
for(j=1;j<=i;j++)
printf("%d ",i);
printf("\n");
}
}
求三个数中最大数与最小数的和。要求:编写三个函数;一个函数实现求3个数中最大数;另一个函数实现求3个数中最小数;第3个函数调用前两个函数,实现求最大数与最小数的和。
输入格式:
给3个变量赋值。
输出格式:
输出最大数与最小数的和。按格式“Max+Min=”的格式输出。
输入样例:
1 -24 20
输出样例:
Max+Min=-4
#include
void add(int x,int y);
int Max(int x,int y,int z);
int Min(int x,int y,int z);
int main(void)
{
int x,y,z;
scanf("%d %d %d",&x,&y,&z);
add(Max(x,y,z),Min(x,y,z));
}
int Max(int x,int y,int z)
{
return (x>y)?(x>z?x:z):(y>z?y:z);
}
int Min(int x,int y,int z)
{
return (x<y)?(x<z?x:z):(y<z?y:z);
}
void add(int x,int y)
{
printf("Max+Min=%d",x+y);
}