北京工业大学C语言作业7-函数答案

1. 求a+aa+aaa+aa…a

1.1.

题目要求

输入2个正整数a和n, 求a+aa+aaa+aa…a(n个a)之和。

要求定义并调用函数fn(a,n),它的功能是返回aa…a(n个a)。例如,fn(3,2)的返回值是33。

1.2.

测试结果(输入结束回车符用<回车>表示) (1)输入:2 3<回车>

输出: 246 (2+22+222) (2)输入:8 5<回车>

输出:98760 (8+88+888+8888+88888)

#include void main() {

int i, n; long a, sn;

long fn(long a, int n);

scanf(\ sn=0; for(i=1;i<=n;i++) sn=sn+fn(a,i);

/*注意此处不能写成fn(a,n)*/ printf(\ }

long fn(long a, int n) {int i; long s=0; for(i=1;i<=n;i++) s=s*10+a; return s; }

2. 统计一个整数中数字的个数

2.1.

题目要求

读入1 个整数,统计并输出该数中2的个数。

要求定义并调用函数countdigit(number,digit),它的功能是统计整数number中数字digit的个数。例如,countdigit(10090,0)的返回值是3。

2.2.

测试结果(输入结束回车符用<回车>表示) (1)输入:-21902<回车>

输出: count=2 (-21902中有2个2)

(2)输入:2<回车>

输出:count=1 (有1个2)

(3)输入:345543<回车>

输出:count=0 (345543中没有2)

#include \int main( ) {

int count; long in;

int countdigit(long number, int digit);

scanf(\if (in<0) in=-in;

/*负数转换成正数,因为负数得到的余数也是负数*/ count=countdigit(in,2); /*---------*/

printf(\ }

/*---------*/

int countdigit(long number, int digit) {int i,cou=0;

while(number!=0) {i=number; if (digit==i) cou++; number=number/10; }

return cou; }

3. 判断素数

3.1.

题目要求

输入一个正整数n,如果它是素数,输出\,否则,输出\(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。

要求定义并调用函数prime(m)判断m是否为素数。

3.2.

测试结果(输入结束回车符用<回车>表示) (1)输入:1 <回车>

输出: NO (1不是素数) (2)输入:2 <回车>

输出:YES (2是素数) (3)输入:9 <回车> 输出:NO (9不是素数)

#include #include int main( ) {

int flag,n;

int prime(int m);

scanf(\ flag=prime(n); /*---------*/

if(flag) printf(\ else printf(\ }

/*---------*/

int prime(int m) {int i;

if (m==1) return 0; for(i=2;i<=m/2;i++) if (m%i==0) return 0; return 1; }

4. 统计素数并求和

4.1.

题目要求

输入2 个正整数m和n(1<=m,n<=500),统计并输出m 和n之间的素数的个数以及这些素数的和(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。 要求定义并调用函数prime(m)判断m是否为素数。

4.2.

测试结果(输入结束回车符用<回车>表示) (1)输入: 1 10 <回车>(m=1, n=10)

输出:count=4, sum=17 (1到10之间有4个素数:2,3,5,7) (2)输入:20 35 <回车> (m=20, n=35)

输出:count=3, sum=83 (20到35之间有3个素数:23, 29, 31) (3)输入:14 16 <回车>(m=14, n=16)

输出:count=0, sum=0 (14到16之间没有素数)

#include \#include \int main( ) {

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4