c语言答案(5)

2019-08-03 12:39

number = number / 10; }while(number != 0); return count; }

第48/106页

7.输入两个正整数m和n(1<=m,n<=10000),输出m ~ n之间所有的Fibonacci数。Fibonacci 序列(第1项起):1 1 2 3 5 8 13 21??要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。例如,fib(7)的返回值是13。 解答:

#include \#include \int main(void) {

int i, m, n; long f;

long fib(int n);

scanf(\i = f = 1;

while(f <= n){

if(f >= m) printf(\i++;

f = fib(i); }

printf(\return 0; }

long fib(int n) {

int i;

long x1, x2, x;

if(n == 1 || n == 2) return 1; else{

x1 = x2 = 1;

for(i = 3; i <= n; i++){ x = x1 + x2; x1 = x2;

x2 = x;

} }

return x; }

8.输入两个正整数m和n(1<=m,n<=1000),输出m ~ n之间的所有完数,完数就是因子和与它本身相等的数。要求定义并调用函数factorsum(number),它的功能是返回number的因子和。例如,factorsum(12)的返回值是16(1+2+3+4+6)。 解答:

#include \int main(void)

{

int i, m, n;

int factorsum(int number); scanf(\i++) if(factorsum(i) == i) printf(\ }

int factorsum(int number) { int i, sum;

if(number == 1) return 1; sum = 0;

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

9.输入两个正整数m和n(1<=m,n<=1000),输出m ~ n之间的所有满足各位数字的立方和等于它本身的数。要求定义并调用函数is(number)判断number的各位数字之立方和是否等于它本身,若相等则返回1,否则返回0。 解答: #include \int i, m, n;

int is(int number);

scanf(\f(is(i) != 0)

printf(\

int is(int number) {

int digit, sum, temp; temp = number; sum = 0; while(temp != 0){ digit = temp % 10;

第50/106页

temp = temp / 10;

sum = sum + digit * digit * digit; } return sum == number; }

10.输入一个整数,将它逆序输出。要求定义并调用函数reverse(number),它的功能是返回number的逆序数。例如,reverse(12345)的返回值是54321。 解答:

#include int main(void) { int in, res;

int reverse(int number); scanf(\(\int reverse(int number) { int flag, res;

if(number >= 0) flag = 1; else{ flag = -1;

number = -number; } res = 0; do{

res = res * 10 + number % 10; number /= 10; }while(number != 0); return flag * res; }

11.按照图5.1学生成绩统计程序的层次结构图,开发一个学生成绩统计程序,输入一批学生的5门课程的成绩,要求输出每个学生的平均分和每门课程的平均分,找出平均分最高的学生。要求设计7个函数,每个函数完成一项功能。其中:主函数main()、数据输入input_stu()、数据计算calc_data()、计算学生平均分avr_stu()、计算课程平均分avr_cor()、数据查找(查找最高分)highest()和输出成绩output_stu()。 解答:略

第51/106页

6.3练习与习题参考答案

6.3.1练习参考答案

6-1输入一个十进制数,输出相应的八进制数和十六进制数。例如:输入31,输出37和1F。 解答:

#include int main(void) { int x;

scanf(\

printf(\

6-2在程序段:

printf(\scanf(\

printf(\指定变量b的输出宽度为5 */

第52/106页

中,如果将scanf(\改为 scanf(\,仍然输入17 17,输出是什么?

解答: 23 17(中间有三个空格)

6-3如果字符型变量ch的值是大写字母,怎样的运算可以把它转换为小写字母? 解答:

ch=ch-‘A’+’a’; 6-4证明下列等价关系。 (1) a&&(b||c) 等价于 a&&b||a&&c。 解答:

(2) a||(b&&c) 等价于 (a||b)&&(a||c)。 解答:

第53/106页

(3)!(a&&b) 等价于 !a||!b。 解答:

(4)!(a||b) 等价于 !a&&!b。 解答:

6.3.2习题参考答案 一.选择题

1.设 float x=2.5, y=4.7; int a=7;,printf(“%.1f”, x+a%3*(int)(x+y)%2/4)的结果为。 A.2.5 B.2.8 C.3.5 D.3.8 2.执行下列程序段的输出结果

是。 int a = 2; a += a *= a -= a *= 3; printf(\.-6 B.12 C.0 D.2

3.设字符型变量x的值是064,表达式“~ x ^ x << 2 & x”的值是 A.0333 B.333 C.0x333 D.020

4.设a 为整型变量,不能正确表达数学关系:1010 && a<15 D.!(a<=10) && !(a>=15) 5.设以下变量均为int类型,表达式的值不为9的是。 A. (x=y=8,x+y,x+1) B. (x=y=8,x+y,y+1) C. (x=8,x+1,y=8,x+y) D. (y=8,y+1,x=y,x+1) 二.填空题

1.-127的原码为、反码为、补码为

2. 逻辑表达式x && 1等价于关系表达式

3.设int a=5, b=6; 则表达式(++a==b--)? ++a : --b的值是

4.设 c = 'w', a = 1, b = 2, d = -5, 则表达式 'x'+1>c, 'y'!=c+2, -a-5*b<=d+1, b==(a=2)的值分别为 1 、 0 、 1 、 1 。

5.运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为。 #include int main(void) {

int c1 = 0, c2 = 0; char ch; while((ch = getchar()) !=’#’) switch(ch) { case ‘a’: case ‘h’: c1++; default: c2++; }

printf(“c1=%d,c2=%d\\n”, c1, c2); return 0; }

三.程序设计题

1. 输入一行字符,统计出其中的英文字母、空格、数字和其他字符的个数。 解答:

#include int main(void) {

char c;

int blank, digit, letter, other; c = getchar();


c语言答案(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2011华师汉硕语言学基础

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: