使用函数统计指定数字的个数
本题要求实现一个统计整数中指定数字的个数的简单函数。
函数接口定义:
int CountDigit( int number, int digit );
其中number是不超过长整型的整数,digit为[0, 9]区间内的整数。函数CountDigit应返回number中digit出现的次数。
裁判测试程序样例:
#include <stdio.h>int CountDigit( int number, int digit );
int main()
{
int number, digit;scanf("%d %d", &number, &digit);
printf("Number of digit %d in %d: %d\n", digit, number, CountDigit(number, digit));
return 0;
}/* 你的代码将被嵌在这里 */
输入样例:
-21252 2
输出样例:
Number of digit 2 in -21252: 3
代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdio.h>
int CountDigit(int number, int digit)
{
int count = 0;
while (number != 0)
{
if (number % 10 == digit || number % 10 == -digit)
count++;
number = number / 10;
}
return count;
}
int main()
{
int number, digit;
scanf("%d %d", &number, &digit);
printf("Number of digit %d in %d: %d\n", digit, number, CountDigit(number, digit));
return 0;
}
使用函数求素数和
本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。
素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。
函数接口定义:
int prime( int p );
int PrimeSum( int m, int n );
其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数PrimeSum返回区间[m, n]内所有素数的和。题目保证用户传入的参数m≤n。
裁判测试程序样例:
#include <stdio.h>
#include <math.h>int prime( int p );
int PrimeSum( int m, int n );
int main()
{
int m, n, p;scanf("%d %d", &m, &n);
printf("Sum of ( ");
for( p=m; p<=n; p++ ) {
if( prime(p) != 0 )
printf("%d ", p);
}
printf(") = %d\n", PrimeSum(m, n));return 0;
}/* 你的代码将被嵌在这里 */
输入样例:
-1 10
输出样例:
Sum of ( 2 3 5 7 ) = 17
代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
int prime(int p)
{
int i = 2;
if (p < 2)
return 0;
else if (p == 2)
return 1;
else
{
while (i < p)
{
if (p % i == 0)
return 0;
i++;
}
return 1;
}
}
int PrimeSum(int m, int n)
{
int p, sum = 0;
for ( p = m; p <= n; p++) {
if (prime(p) != 0)
sum = sum + p;
}
return sum;
}
int main()
{
int m, n, p;
scanf("%d %d", &m, &n);
printf("Sum of ( ");
for (p = m; p <= n; p++) {
if (prime(p) != 0)
printf("%d ", p);
}
printf(") = %d\n", PrimeSum(m, n));
return 0;
}
使用函数输出水仙花数
水仙花数是指一个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 <stdio.h>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
代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
int narcissistic(int number)
{
int i,count=0,sum=0;
int n = number;
int m = number;
do
{
i = number % 10;
number = number / 10;
count++;
} while (number != 0);
while (n != 0)
{
i = n % 10;
n = n / 10;
sum = sum+pow(i, count);
}
if (sum == m)
return 1;
else
return 0;
}
void PrintN(int m, int n)
{
for (int i = m + 1; i < n; i++)
{
if (narcissistic(i))
{
printf("%d\n", i);
}
}
}
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;
}