C程序设计 2009春学期 上机练习M2-M8参考答案
result:
496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248
#include
#include } } printf(\ 40027 从高位开始逐位输出一个整数的各位数字(选作) 输入一个正整数repeat (0 输入一个整数 in,从高位开始逐位分割并输出它的各位数字。 输出使用语句:printf(\输入输出示例:括号内为说明 输入 3 (repeat=3) 23456 (in=23456) -600 (in=-600) 推进 */ } return 0; } 40052 判断素数 printf(\ } printf(\ 21 C程序设计 2009春学期 上机练习M2-M8参考答案 输入一个正整数n,再输入n个正整数,判断它们是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。 输出使用以下语句: printf(\printf(\输入输出示例:括号内为说明 输入 4 1 2 9 17 输出 1 is'nt a prime 2 is a prime 9 is'nt a prime 17 is a prime #include 输入一个正整数repeat (0 输入一个整数 in,将其逆序输出。假设正数和负数逆序输出的结果一样。 输出使用语句 printf(\输入输出示例:括号内为说明 输入 2 (repeat=2) 200 (in=200) -12345 (in=-12345) 输出 0 0 2 5 4 3 2 1 #include 40054 输出斐波那契序列 输入一个正整数 n(1 1 1 2 3 5 8 13 21 34 55 printf(\} return 0; } 40053 逆序输出整数 22 C程序设计 2009春学期 上机练习M2-M8参考答案 #include 第7周(M7) 50002 使用函数判断数的符号 输入一个正整数 repeat (0 输入1个整数 x,若 x 大于0,sign(x) = 1;若 x 等于0,sign(x) = 0;否则,sign(x) = -1,最后输出sign(x)的值。 要求定义和调用函数sign(x)实现该分段函数, 函数形参x的类型是int,函数类型是int。 输入输出示例:括号内是说明 输入 3 (repeat=3) 10 (x=10) -5 (x=-5) 0 (x=0) 输出 sign(10) = 1 (x=10时sign(x)的值为1) sign(-5) = -1 (x=-5时sign(x)的值为-1) sign(0) = 0 (x=0时sign(x)的值为0) ① for(i=1;i<=n-2;i++){ } return 0; x=x1+x2; printf(\ x1=x2; x2=x; scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\x); y=sign(x); printf(\ } } int sign(int x) { int t=0; if(x<0) t=-1; else if(x==0) t=0; else t=1; return t; } 50003 使用函数求奇数和 输入一个正整数repeat (0 输入一批正整数(以零或负数为结束标志),求其中的奇数和。 要求定义和调用函数even(n) 判断数的奇偶性,当n为偶数时返回1,否则返回0,函数形参n的类型是int,函数类型是int。 输入输出示例:括号内是说明 输入 2 (repeat=2) 12 9 7 18 3 11 20 0 11 8 6 17 2 10 19 -1 输出 The sum of the odd numbers is 30. The sum of the odd numbers is 47. #include C程序设计 2009春学期 上机练习M2-M8参考答案 scanf(\ while (n>0){ if (even(n)==0) sum=sum+n; scanf(\} sum); } } int even(int n) { int t; } 50005 使用函数统计素数并求和 输入一个正整数 repeat (0 输入2个正整数 m 和 n(1<=m,n<=500),统计并输出 m 到 n 之间的素数的个数以及这些素数的和。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。 要求定义并调用函数 prime(m) 判断m是否为素数,当m为素数时返回1,否则返回0,函数形参 m 的类型是int,函数类型是int。 输入输出示例:括号内是说明 输入: 1 1 10 输出: Count = 4, sum = 17 (1到10之间有4个素数:2,3,5,7) #include \#include \int main(void) { int count, i, m, n, sum; int repeat, ri; int prime(int m); (repeat=1) (m=1, n=10) if (n%2==0) else t=0; return t; t=1; printf(\sum of the odd numbers is %d.\\n\ scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\n); sum=0; count=0; if (m==1) m++; /* 若第一个数是1, 可直接判定下一个数 */ for(i=m;i<=n;i++){ if(prime(i)==1){ sum=sum+i; count++; } } } } int prime(int m) { int t, limit, result; result=1; /* 初始假设结果是素数 */ for ( t=2; t <= m-1; t++) if (m%t == 0) { result=0; /* 不是素数跳出循环 */ break; } return result; } 50006 使用函数统计一个整数中数字的个数 输入一个正整数 repeat (0 读入1 个整数in,再输入一个数字digit(0≤digit<10),统计并输出整数 in 中数字 digit 的个数。 要求定义并调用函数countdigit(number,digit),它的功能是统计整数 number 中数字 digit 的个数 ,函数形参number和digit的类型是int,函数类型是int。例如,countdigit(10090,0)的返回值是3。 输入输出示例:括号内是说明 输入 2 (repeat=2) 21252 2 (number=21252, digit=2) -1111 9 (number=-1111, digit=9) 输出 printf(\ 24 C程序设计 2009春学期 上机练习M2-M8参考答案 Number 21252 of digit 2: 3 (21252中有3个2) Number -1111 of digit 9: 0 (-1111中有0个9) #include \int main(void) { int count, digit, in; int repeat, ri; int countdigit(int number, int digit); scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\ count=countdigit(in,digit); 100 400 (m=100, n=400) 1 100 (m=1, n=100) 输出: result: (100 到400之间的水仙花数) 153 (1*1*1+5*5*5+3*3*3=153) 370 (3*3*3+7*7*7=370) 371 (3*3*3+7*7*7+1*1*1=371) result: (1到100之间的水仙花数) 1 #include \int main(void) { int i, m, n; (1*1*1=1) printf(\ int repeat, ri; } } int countdigit(int number,int digit) { int c,t; c=0; if(number<0) int is(int number); scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\ printf(\ number=-number; /* 这里若没将负数转成正数,判断就会出错 for (i=m;i<=n;i++) { */ while (number!=0){ t=number; number=number/10; if(t==digit) c++; } return c; } 50007 使用函数找水仙花数 输入一个正整数 repeat (0 2 (repeat=2) } 50009 使用函数求余弦函数的近似值 } } int is(int number) { int sum,res,t,j; } if(sum!=number) res=0; return res; res=1; sum=0; j=number; while (j!=0) { t=j; j=j/10; sum=sum+t*t*t; if(is(i)==1) printf(\} 25