当前位置:文档之家› 第五章 MOOC C语言

第五章 MOOC C语言

第五章 MOOC C语言
第五章 MOOC C语言

1

判断一个整型数据有几位v2.0(4分)

题目内容:

从键盘输入一个整型数据(int型),编写程序判断该整数共有几位,并输出包含各个数字的个数。例如,从键盘输入整数16644,该整数共有5位,其中有1

个1,2个6,2个4。

程序运行结果示例1:

Please enter the number:

12226↙

12226: 5 bits

1: 1

2: 3

6: 1

程序运行结果示例2:

Please enter the number:

-12243↙

-12243: 5 bits

1: 1

2: 2

3: 1

4: 1

输入格式: "%d"

输出格式:

输入提示信息:"Please enter the number:\n"

判断该整数共有几位:"%d: %d bits\n"

包含数字0的个数:"0: %d\n"

包含数字1的个数:"1: %d\n"

包含数字2的个数:"2: %d\n"

包含数字3的个数:"3: %d\n"

包含数字4的个数:"4: %d\n"

包含数字5的个数:"5: %d\n"

包含数字6的个数:"6: %d\n"

包含数字7的个数:"7: %d\n"

包含数字8的个数:"8: %d\n"

包含数字9的个数:"9: %d\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你

的程序中。

题目内容:

企业发放的奖金根据利润提成。利润低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时,高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求应发放奖金总数?

程序运行结果示例1:

789↙

bonus=78

程序运行结果示例2:

789516↙

bonus=36342

输入格式: "%ld"

输出格式:"bonus=%ld\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你

题目内容:

修改下面这个程序使其快速计算1+2+3……+n的值,n从键盘输入。并按照下

面给出的运行示例检查程序。

1.#include

2.int main()

3.{

4.int i, j, sum = 0, n=100;

5.for (i=1,j=n; i<=j; i++,j--)

6.{

7.sum = sum + i + j;

8.}

9.printf("sum = %d", sum);

10.return 0;

11.}

程序运行结果示例1:

5↙

sum = 15

程序运行结果示例2:

6↙

输入格式: "%d"

输出格式:"sum = %d" (注意:等号两侧各有一个空格)

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你

的程序中。

修改下面这个用do-while语句实现的程序,改用while语句实现,并对比其优

缺点。

1.#include

2.int main()

3.{

4.int sum = 0, m;

5.do{

6.printf("Input m:\n");

7.scanf("%d", &m);

8.sum = sum + m;

9.printf("sum = %d\n", sum);

10.}while (m != 0);

11.return 0;

12.}

程序运行结果示例:

Input m:

1↙

sum = 1

Input m:

2↙

sum = 3

Input m:

3↙

Input m:

4↙

sum = 10

Input m:

0↙

输入格式:"%d"

输出格式:

输入提示: "Input m:\n"

输出累加和: "sum = %d\n"(注意:等号两侧各有一个空格)

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你

的程序中。

时间限制:500ms内存限制:32000kb

C

题目内容:

我国古代的《张丘建算经》中有这样一道著名的百鸡问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?”其意为:公鸡每只5元,母鸡每只3元,小鸡3只1元。用100元买100只鸡,问公鸡、母鸡和小鸡各能买多少只?目前程序运行结果有误,请问为什么会比正确答案多出三个解?不仅要找出错误和修正错误,还要求利用以

前学过的知识分析错误的原因。

1.#include

2.int main()

3.{

4.int x, y, z;

5.for (x=0; x<=20; x++)

6.{

7.for (y=0; y<=33; y++)

8.{

9.z = 100 - x - y;

10.if (5*x + 3*y + z/3 == 100)

11.{

12.printf("x=%d, y=%d, z=%d\n", x, y, z);

13.}

14.}

15.}

16.return 0;

17.}

程序目前的运行结果:

x=0, y=25, z=75

x=3, y=20, z=77

x=4, y=18, z=78

x=7, y=13, z=80

x=8, y=11, z=81

x=11, y=6, z=83

x=12, y=4, z=84

程序正确的运行结果:

x=0, y=25, z=75

x=4, y=18, z=78

x=8, y=11, z=81

x=12, y=4, z=84

输入格式: 无

输出格式:

"x=%d, y=%d, z=%d\n

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你

的程序中。

时间限制:500ms内存限制:32000kb

C

题目内容:

从键盘任意输入一个正整数,编程判断它是否是素数,若是素数,输出“Yes!”,否则输出“No!”。已知负数、0和1都不是素数。请找出下面程序的错误并改正之,同时按照给出的运行示例检查修改后的程序。

1.#include

2.#include

3.int main()

4.{

5.int n, i;

6.printf("Input n:\n");

7.scanf("%d", &n);

8.for (i=2; i<=sqrt(n); i++)

9.{

10.if (n % i = 0)

11.{

12.printf("No!\n");

13.}

14.}

15.printf("Yes!\n");

16.return 0;

17.}

程序的运行结果示例1:

Input n:

-3↙

No!

程序的运行结果示例2:

Input n:

0↙

No!

程序的运行结果示例3:

Input n:

1↙

No!

程序的运行结果示例4:

Input n:

6↙

No!

程序的运行结果示例5:

Input n:

7↙

Yes!

输入格式: "%d"

输出格式:

输入提示信息: "Input n:\n"

是素数:"Yes!\n"

不是素数:"No!\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你

的程序中。

时间限制:500ms内存限制:32000kb

C

7

程序改错-3(4分)

题目内容:

从键盘任意输入两个符号各异的整数,直到输入的两个整数满足要求为止,然后打印这两个数。请通过测试找出下面这个程序存在的问题(不止一个问题哦),并改正。同时用下面给出的运行结果示例检查修改后的程序。

1.#include

2.int main()

3.{

4.int x1, x2;

5.do{

6.printf("Input x1, x2:");

7.scanf("%d,%d", &x1, &x2);

8.}while (x1 * x2 > 0);

9.printf("x1=%d,x2=%d\n", x1, x2);

10.return 0;

11.}

程序正确的运行结果示例:

Input x1, x2:

a,s↙

Input x1, x2:

a,1↙

Input x1, x2:

2,s↙

Input x1, x2:

1,2↙

Input x1, x2:

-1,-2↙

Input x1, x2:

0,3↙

Input x1, x2:

1.2,3.4↙

Input x1, x2:

1.2,5↙

Input x1, x2:

-1,3↙

x1=-1,x2=3

输入格式: "%d,%d"

输出格式:

输入提示信息:"Input x1, x2:\n"

输出:"x1=%d,x2=%d\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你

的程序中。

时间限制:500ms内存限制:32000kb

C

提交答案

本次得分/总分:4.00/4.00分

8

猴子吃桃程序_扩展1(4分)

题目内容:

猴子第一天摘了若干个桃子,吃了一半,不过瘾,又多吃了1个。第二天早上将剩余的桃子又吃掉一半,并且又多吃了1个。此后每天都是吃掉前一天剩下的一半零一个。到第n天再想吃时,发现只剩下1个桃子,问第一天它摘了多少桃子?为了加强交互性,由用户输入不同的天数n进行递推,即假设第n天的桃

子数为1。

程序的运行结果示例1:

Input days:

5↙

x=46

程序的运行结果示例2:

Input days:

10↙

x=1534

输入格式: "%d"

输出格式:

输入提示信息:"Input days:\n"

输出:"x=%d\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你

的程序中。

时间限制:500ms内存限制:32000kb

C

猴子第一天摘了若干个桃子,吃了一半,不过瘾,又多吃了1个。第二天早上将剩余的桃子又吃掉一半,并且又多吃了1个。此后每天都是吃掉前一天剩下的一半零一个。到第n天再想吃时,发现只剩下1个桃子,问第一天它摘了多少桃子?为了加强交互性,由用户输入不同的天数n进行递推,即假设第n天的桃子数为1。同时还要增加对用户输入数据的合法性验证(如:不允许输入的

天数是0和负数)

程序运行结果示例:

Input days:

0↙

Input days:

-5↙

Input days:

a↙

Input days:

3↙

x=10

输入格式: "%d"

输出格式:

输入提示信息:"Input days:\n"

输出:"x=%d\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你

的程序中。

时间限制:500ms内存限制:32000kb

C

题目内容:

从键盘输入6位仅由数字0~9组成的密码。用户每输入一个密码并按回车键后,程序给出判断:如果是数字,则原样输出该数字,并提示用户目前已经输入了几位密码,同时继续输入下一位密码;否则,程序提示"error",并让用户继续输入下一位密码。直到用户输入的密码全部是数字为止。

程序的运行结果示例:

Input your password:

1↙

1, you have enter 1-bits number

6↙

6, you have enter 2-bits number

a↙

error

d↙

error

4↙

4, you have enter 3-bits number

6↙

6, you have enter 4-bits number

8↙

8, you have enter 5-bits number

2↙

2, you have enter 6-bits number

输入提示信息:"Input your password:\n"

输入格式: "%c"

输出格式:

如果输入的是数字,输出格式为:"%c, you have enter %d-bits number\n"

如果输入的不是数字,输出提示信息:"error\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你

的程序中。

时间限制:500ms内存限制:32000kb

C

题目内容:

从键盘输入一个整型数据(int型),编写程序判断该整数共有几位。例如,从

键盘输入整数16644,该整数共有5位。

程序运行结果示例1:

Please enter the number:

21125↙

21125: 5 bits

程序运行结果示例2:

Please enter the number:

-12234↙

-12234: 5 bits

输入提示信息:"Please enter the number:\n"

输入格式: "%d"

输出格式:"%d: %d bits\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你

的程序中。

本次得分/总分:4.00/4.00分

12

检测输入数据中奇数和偶数的个数(4分)

题目内容:

从键盘输入一系列正整数,输入-1表示输入结束(-1本身不是输入的数据)。编写程序判断输入数据中奇数和偶数的个数。如果用户输入的第一个数据就是-1,则程序输出"over!"。否则。用户每输入一个数据,输出该数据是奇数还是偶数,直到用户输入-1为止,分别统计用户输入数据中奇数和偶数的个数。

程序运行结果示例1:

Please enter the number:

1↙

1:odd

5↙

5:odd

8↙

8:even

9↙

9:odd

12↙

12:even

17↙

17:odd

-1↙

The total number of odd is 4

The total number of even is 2

程序运行结果示例2:

Please enter the number:

-1↙

over!

The total number of odd is 0

The total number of even is 0

输入提示信息:"Please enter the number:\n"

输入格式: "%d"

输出格式:

用户输入的第一个数据就是-1,输出格式:"over!\n"

奇数的输出格式:"%d:odd\n"

偶数的输出格式:"%d:even\n"

输入数据中奇数的个数统计:"The total number of odd is %d\n"

输入数据中偶数的个数统计:"The total number of even is %d\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你

的程序中。

时间限制:500ms内存限制:32000kb

C

用例1通过 1ms 256kb 2

用例2通过18ms 256kb 2

提交答案

本次得分/总分:4.00/4.00分

13

计算球的反弹高度(4分)

题目内容:

一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下并反弹......,求它在第5次和第10次落地时,分别共经过了多少米?第5次和第10次反弹分别是多高?要求计算结果保留到小数点后3位。用户从键盘输入想要计算的第n次(n<=15)。程序中所有浮点数的数据类型均为float。

程序运行结果示例1:

Input:

5↙

5 times:

287.500

3.125

程序运行结果示例2:

Input:

10↙

10 times:

299.609

0.098

输入提示信息:"Input:\n"

输入格式: "%d"

输出格式:

反弹次数:"%d times:\n"

第n次反弹共经过多少米:"%.3f\n"

第n次的反弹高度:"%.3f\n"

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你

的程序中。

1…

#include

#include

int main()

{

int a,b,c,temp1,temp2,i,k;

int d0=0,d1=0,d2=0,d3=0,d4=0,d5=0,d6=0,d7=0,d8=0,d9=0;

int counter=1;

printf("Please enter the number:\n");

scanf("%d",&a);

c=a;

b=a/10;

while(b!=0)

{

counter++;

a=b;

b=a/10;

}

printf("%d: %d bits\n",c,counter);

temp2=counter;

for(i=1;i<=counter;i++)

{

temp2--;

k=(int)pow(10,temp2);

temp1=fabs(c/k);

switch(temp1)

{

case 0:d0++;break;

case 1:d1++;break;

case 2:d2++;break;

case 3:d3++;break;

case 4:d4++;break;

case 5:d5++;break;

case 6:d6++;break;

case 7:d7++;break;

case 8:d8++;break;

case 9:d9++;break;

default: printf("error");

break;

}

c=fabs(c)-temp1*(int)pow(10,temp2);

}

if(d0!=0) printf("0: %d\n",d0);

if(d1!=0) printf("1: %d\n",d1);

if(d2!=0) printf("2: %d\n",d2);

if(d3!=0) printf("3: %d\n",d3);

if(d4!=0) printf("4: %d\n",d4);

if(d5!=0) printf("5: %d\n",d5);

if(d6!=0) printf("6: %d\n",d6);

if(d7!=0) printf("7: %d\n",d7);

if(d8!=0) printf("8: %d\n",d8);

if(d9!=0) printf("9: %d\n",d9);

return 0;

}

2…

#include

main()

{

long bonus,a;

scanf("%ld",&a);

if(a<=100000)

bonus=a*0.1;

if(a>100000&&a<=200000)

bonus=100000*0.1+(a-100000)*0.075;

if(a>200000&&a<=400000)

bonus=100000*0.1+100000*0.075+(a-200000)*0.05;

if(a>400000&&a<=600000)

bonus=100000*0.1+100000*0.075+200000*0.05+(a-400000)*0.03;

if(a>600000&&a<=1000000)

bonus=100000*0.1+100000*0.075+200000*0.05+200000*0.03 +(a-600000)*0.015;

if(a>1000000)

bonus=100000*0.1+100000*0.075+200000*0.05+200000*0.03 +400000*0.015+(a-1000000)*0.01;

printf("bonus=%ld\n",bonus);

}

3…

#include

int main()

{

int i, n, sum=0;

scanf("%d",&n);

for(i=1;i<=n;i++)

{

sum=sum+i;

}

printf("sum = %d",sum);

}

4…

#include

int main()

{

int sum = 0, m;

printf("Input m:\n");

scanf("%d", &m);

while(m!=0)

{

sum = sum + m;

printf("sum = %d\n", sum);

printf("Input m:\n");

scanf("%d", &m);

}

return 0;

}

5…

#include

int main()

{

int x, y, z;

for (x=0; x<=20; x++)

{

for (y=0; y<=33; y++)

{

z = 100 - x - y;

if(5*x + 3*y + (float)z/3 == 100)

{

printf("x=%d, y=%d, z=%d\n", x, y, z);

}

c语言第五章习题答案

第一题: 1. 从键盘输入10个数,求和。 #include "stdio.h" void main( ) { int x,s=0; int i; for(i=0;i<10;i++) {scanf("%d",&x); s+=x;} printf("s=%d\n",s ); } 2. 从键盘输入10个数,求平均值。#include "stdio.h" void main( ) { int x,s=0,ave; int i; for(i=0;i<10;i++) {scanf("%d",&x); s+=x;}

ave=s/10; printf("s=%d,ave=%d\n",s ,ave ); } 3. 从键盘输入10个数,求偶数的和。 #include "stdio.h" void main( ) { int x,s=0; int i; for(i=0;i<10;i++) {scanf("%d",&x); if(x%2==0) s+=x;} printf("s=%d\n",s ); } 4. 从键盘输入10个数,求偶数的平均值。#include "stdio.h" void main( ) { int x,s=0,ave; int i; int k=0;

for(i=0;i<10;i++) {scanf("%d",&x); if(x%2==0) {s+=x;k++;} } ave=s/k; printf("s=%d,ave=%d\n",s,ave ); } 5. 从键盘输入n个数,求偶数的平均值。#include "stdio.h" void main( ) { int x,s=0,ave; int i; int k=0; int n; scanf("%d",&n); for(i=0;i

C语言课后练习题答案第五章

作业四:简单程序设计 1.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式(B);如果字符串长度小于5,则输出按方式(C)。(5分)(重要) A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字符串,左补空格 D) 输出错误信息 2.阅读以下程序,当输入数据的形式为:25,13,10(注:表示回车),则正确的输出结果为(D)。(5分) main() { int x,y,z; scanf(“%d%d%d”,&x,&y,&z);要和这里一样 printf(“x+y+z=%d\n”,x+y+z); } A) x+y+z=48 B) x+y+z=35 C) x+z=35 D) 不确定值 3.根据下面的程序及数据的输入和输出形式,程序中输入数据的正确形式应该为(WXY)。(5分) main() { char ch1,ch2,ch3;

scanf(“%c%c%c”,&ch1,&ch2,&ch3); printf(“%c%c%c”,ch1,ch2,ch3); } 4.以下的输出结果是(x=1,y=2*sum*=3 10 Squard is : 100)。(5分) main() { int x=1,y=2; printf(“x=%d y=%d * sum * =%d\n”,x,y,x+y); printf(“10 Squared is : %d\n”,10*10); } 5.若a=3,b=4,c=5,x=,y=,z=,u=51274,n=128765,c1=’a’,c2=’b’,想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出)。要求输出的结果如下:(20分) a= 3 b= 4 c= 5 x=,y=,z= x+y= y+z= z+x= u= 51274 n= 128765 c1=’a’ or 97(ascll) c2=’b’ or 98(ascll) main() { int a=3,b=4,c=5;

第五章 MOOC C语言

1 判断一个整型数据有几位v2.0(4分) 题目内容: 从键盘输入一个整型数据(int型),编写程序判断该整数共有几位,并输出包含各个数字的个数。例如,从键盘输入整数16644,该整数共有5位,其中有1 个1,2个6,2个4。 程序运行结果示例1: Please enter the number: 12226↙ 12226: 5 bits 1: 1 2: 3 6: 1 程序运行结果示例2: Please enter the number: -12243↙ -12243: 5 bits 1: 1 2: 2 3: 1 4: 1 输入格式: "%d"

输出格式: 输入提示信息:"Please enter the number:\n" 判断该整数共有几位:"%d: %d bits\n" 包含数字0的个数:"0: %d\n" 包含数字1的个数:"1: %d\n" 包含数字2的个数:"2: %d\n" 包含数字3的个数:"3: %d\n" 包含数字4的个数:"4: %d\n" 包含数字5的个数:"5: %d\n" 包含数字6的个数:"6: %d\n" 包含数字7的个数:"7: %d\n" 包含数字8的个数:"8: %d\n" 包含数字9的个数:"9: %d\n" 为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你 的程序中。 题目内容: 企业发放的奖金根据利润提成。利润低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时,高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求应发放奖金总数? 程序运行结果示例1: 789↙ bonus=78

C语言第五章习题带答案更新Word版

练习5-1答案 一、选择题 1.合法的数组说明语句是( B )。 A.int a[]="string"; B.int a[]={0,1,2,3,4,5}; C.char a="string"; D.char a[5]={'0', '1', '2', '3', '4', '5'}; 2.以下对一维整型数组a的说明正确的是( D )。 A.int a(10); B.int n=10, a[n]; C.int n; D.#define SIZE 10 scanf("%d", &n); int a[SIZE]; int a[n]; 3.已知:int a[10];,则对a数组元素的正确引用是( D )。 A.a[10] B.a[3.5] C.a(5) D.a[10-10] 4.以下对一维数组a进行正确初始化的语句是( C )。 A.int a[10]=(0, 0, 0, 0, 0); B.int a[10]={}; C.int a[]={0}; D.int a[2]={10, 9, 8}; 5.对以下说明语句的正确理解是( B )。 int a[10]={6, 7, 8, 9, 10}; A.将5个初值依次赋给a[1]至a[5] B.将5个初值依次赋给a[0]至a[4] C.将5个初值依次赋给a[6]至a[10] D.因为数组长度与初值的个数不相同,所以此语句不正确 二、填空题 6.求所有不超过200的N值,N的平方是具有对称性质的回文数。所谓回文数就是将一个数从左到右与从右到左读都是一样的,例如:34543和1234321都是回文数。 例如:满足题意要求的数有:N=1,11*11=121;N=111,111*111=12321。 #include main() {int m[16], n, i, t, count=0; long a, k; printf("Result is:\n"); for (n=10; n<200; n++) { k=0; t=1; a=n*n; for (i=1; a!=0; i++) { ①; a/=10; }

C语言程序设计教程第五章练习题题目

单选题 1、关于数组的定义与初始化,下列哪一项是错误的() A.int arr[5] = {1,2,3,4,5}; B.int arr[] = {1,2,3,4,5}; C.int arr[5] = {1,2,3}; D.int arr[5] = {1,2,3,4,5,6}; 2、在定义数组intarr[10]后,下列选项中对arr的引用正确的是() A.arr[10] B.arr[6.3] C.arr(6) D.arr[0] 3、在C语言中,引用数组元素时,其数组下标的数据类型允许是() A.整型常量 B.整型表达式 C.整型常量或整型表达式 D.任何类型的表达式 4、若intarr[5] = {1,2,3}; 则arr[2]的值为() A.1 B.2 C.3 D.null 5、在执行intarr[][3] = {1,2,3,4,5,6}:语句后,arr[1][0]的值为() A.4 B.1 C.2 D.5 6、关于二维数组,下列选项能正确定义并赋初值的是() A.int n = 5,b[n][n]; B.int a[1][2] = {{1},{3}}; C.int c[2][] = {{1,2},{3,4}}; D.int a[3][2] = {{1,2},{3,4}}; 7、阅读下列程序段: char s[18] = "a book!"; printf("%.4s\n", s); 其输出结果为() A.a book! B.a book C.abo D.a 8、阅读下列程序: int a[4][4] = { { 1, 3, 5, }, { 2, 4, 6 }, { 3, 5, 7 } }; printf("%d%d%d%d\n", a[0][0], a[1][1], a[2][2], a[3][3]);

c语言函数库-第五章(数学函数)

c语言函数库 第五章(数学函数) 1. abs、labs、fabs:求绝对值函数................... 错误!未定义书签。 2. acos:反余弦函数............................... 错误!未定义书签。 3. asin:反正弦函数............................... 错误!未定义书签。 4. atan:反正切函数................................ 错误!未定义书签。 5. atan2:反正切函数2.............................. 错误!未定义书签。 6. ceil:向上舍入函数.............................. 错误!未定义书签。 7. cos :余弦函数.................................. 错误!未定义书签。 8. cosh:双曲余弦函数............................. 错误!未定义书签。 9. div、ldiv:除法函数............................. 错误!未定义书签。 10. exp:求e的x次幂函数......................... 错误!未定义书签。 11. floor:向下舍入函数........................... 错误!未定义书签。 12. fmod:求模函数................................ 错误!未定义书签。 13. frexp:分解浮点数函数......................... 错误!未定义书签。 14. hypot:求直角三角形斜边长函数................. 错误!未定义书签。 15. ldexp:装载浮点数函数......................... 错误!未定义书签。 16. log、log10:对数函数.......................... 错误!未定义书签。 17. modf:分解双精度数函数........................ 错误!未定义书签。 18. pow、pow10:指数函数.......................... 错误!未定义书签。 19. rand:产生随机整数函数........................ 错误!未定义书签。 20. sin:正弦函数................................. 错误!未定义书签。 21. sinh:双曲正弦函数........................... 错误!未定义书签。 22. sqrt:开平方函数.............................. 错误!未定义书签。 23. srand:设置随机时间的种子函数................. 错误!未定义书签。 24. tan:正切函数................................ 错误!未定义书签。 25. tanh:双曲正切函数............................ 错误!未定义书签。 1.abs、labs、fabs:求绝对值函数 函数原型:int abs(int x); long labs(long x); double fabs(double x); 头文件:#include<> 是否是标准函数:是 函数功能:函数int abs(int x);是求整数x的绝对值;函数long labs(long n);是求长整型数x的绝对值;函数double fabs(double x); 是求浮点数x的绝对值。 返回值:返回计算结果。 例程如下:计算整数的绝对值。 #include <> int main(void)

数据结构(c语言版)第五章答案

第五章 1、设二维数组A【8】【10】是一个按行优先顺序存储在内存中的数组,已知A【0】【0】的起始存储位置为1000,每个数组元素占用4个存储单元,求: (1)A【4】【5】的起始存储位置。 A【4】【5】的起始存储位置为1000+(10*4+5)*4=1180; (2)起始存储位置为1184的数组元素的下标。 起始存储位置为1184的数组元素的下标为4(行下标)、6(列下标)。 2、画出下列广义表D=((c),(e),(a,(b,c,d)))的图形表示和它们的存储表示。 略,参考第5·2节应用题第5题分析与解答。 3、已知A为稀疏矩阵,试从时间和空间角度比较采用两种不同的存储结构(二维数组和三元组表)实现求∑a(i,j)运算的优缺点。 稀疏矩阵A采用二维数组存储时,需要n*n个存储单元,完成求∑ii a(1≤i≤n)时,由于a【i】【i】随机存取,速度快。但采用三元组表时,若非零元素个数为t,需3t+3个存储单元(t个分量存各非零元素的行值、列值、元素值),同时还需要三个存储单元存储存稀疏矩阵A的行数、列数和非零元素个数,比二维数组节省存储单元;但在求∑ii a(1≤i≤n)时,要扫描整个三元组表,以便找到行列值相等的非零元素求和,其时间性能比采用二维数组时差。 4、利用三元组存储任意稀疏数组时,在什么条件下才能节省存储空间? 当m行n列稀疏矩阵中非零元素个数为t,当满足关系3*t

c语言第五章 答案

5.3输入两个正整数m和n,求其最大公共约数和最小公倍数。 解:用"辗转相除取余"法求之。 参考程序如下: #include int main() { int p,r,n,m,temp; printf("请输入两个正整数n,m:"); scanf("%d%d,",&n,&m); p=n*m; r=m%n; while(r!=0) //转辗求余法,直到余数为0时结束 { m=n; n=r; r=m%n; } //跳出while循环后n即为最大公约数 printf("它们的最大公约数为:%d\n",n); printf("它们的最小公倍数为:%d\n",p/n); return 0; } 运行结果如下: 5.4 输入一行字符,分别统计出其中英文字符、空格、数字和其他字符的个数。 解:“一行字符”以回车符'\n'为结束标记,其中用if~else构成多分支选择对输入字符进行归类。 参考程序如下: #include int main() { char c; int letters=0,space=0,digit=0,other=0; //计数器需置零 printf("请输入一行字符:\n"); while((c=getchar())!='\n') //直到输入为回车符结束 { //根据当前接收的字符逐一判断是什么字符 if (c>='a' && c<='z' || c>='A' && c<='Z') letters++; else if (c==' ') space++; else if (c>='0' && c<='9') digit++; else other++; } printf("字母数:%d\n空格数:%d\n数字数:%d\n其它字符数:%d\n",letters,space,digit,other);

C语言第五章课后答案

#include #include // 程序中用到数学函数fabs,应包含头文件math.n int main() { int sign=1,count=0; // sign用来表示数值的符号,count用来统计循环次数double pi=0.0,n=1.0,term=1.0; // pi开始代表多项式的值,最后代表π的值, n代表分母,term代表当前项的值 while(fabs(term)>=1e-8) // 检查当前项term的绝对值是否大于或等于10的(-6)次方 { pi=pi+term; // 把当前项term累加到pi中 n=n+2; // n+2是下一项的分母 sign=-sign; // sign代表符号,下一项的符号与上一项符号相反term=sign/n; // 求出下一项的值term count++; // count累加1 } pi=pi*4; // 多项式的和pi乘以4,才是π的近似值 printf("pi=%10.8f\n",pi); // 输出π的近似值 printf("count=%d\n",count); // 输出循环次数 return 0; } xt5-3 #include int main() { int p,r,n,m,temp; printf("请输入两个正整数n,m:"); scanf("%d,%d,",&n,&m); if (n

printf("它们的最大公约数为:%d\n",n); printf("它们的最小公约数为:%d\n",p/n); return 0; } xt5-4 #include int main() { char c; int letters=0,space=0,digit=0,other=0; printf("请输入一行字符:\n"); while((c=getchar())!='\n') { if (c>='a' && c<='z' || c>='A' && c<='Z') letters++; else if (c==' ') space++; else if (c>='0' && c<='9') digit++; else other++; } printf("字母数:%d\n空格数:%d\n数字数:%d\n其它字符数:%d\n",letters,space,digit,other); return 0; } xt5-5 #include int main() { int a,n,i=1,sn=0,tn=0; printf("a,n=:"); scanf("%d,%d",&a,&n); while (i<=n) { tn=tn+a; /*赋值后的tn为i个a组成数的值*/

c语言第五章选择结构程序设计(习题册答案)

第五章选择结构程序设计 基础练习(A) 一、填空题 1、关系表达式的运算结果是逻辑值。C语言没有逻辑型数据,以1代表“真”,以0代表“假”。 2、逻辑运算符!是单目运算符,其结合性是由右结合性。 3、C语言提供的三种逻辑运算符是&&、|| 、 !。其中优先级最高的为! ,优先级最低的为| | 。 4、逻辑运算符两侧的运算对象不但可以是0和1,或者是0和非0的整数,也可以是任何类型的数据。系统最终以 0 和非0 来判定它们属于“真”或“假”。 5、设y为int型变量,请写出描述“y是偶数”的表达式(y%2==0)。 6、设x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式x2&&x<3。 8、判断char型变量ch是否为大写字母的正确表达式是(ch>=‘A’)&&(ch<=‘Z’)。 9、当a=3,b=2,c=1时,表达式f=a>b>c的值是0。 10、当a=5,b=4,c=2时,表达式a>b!=c的值是1。 11、已知A=,B=2,C=,表达式A>B&&C>A||AB的值是0。 12、若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是 1。 13、有int x,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值为 1。 14、有int x,y,z;且x=3,y=-4,z=5,则以下表达式的值为1。 !(x>y)+(y!=z)||(x+y)&&(y-z) 15、有int a=3,b=4,c=5,x,y;,则以下表达式的值为0。 !(x=a)&&(y=b)&&0 16、if (!k) a=3;语句中的!k可以改写为 k= =0,使其功能不变。 二、选择题 1、逻辑运算符两侧运算对象的数据类型(D)。 A)只能是0或1 B)只能是0或非0正数 C)只能是整型或字符型数据 D)可以是任何类型的数据 2、以下关于运算符优先顺序的描述中正确的是(C)。 A)关系运算符<算术运算符<赋值运算符<逻辑与运算符 B)逻辑与运算符<关系运算符<算术运算符<赋值运算符 C)赋值运算符<逻辑与运算符<关系运算符<算术运算符 D)算术运算符<关系运算符<赋值运算符<逻辑与运算符 3、下列运算符中优先级最高的是(B)。 A)< B)+ C)&& D)!= 4、为判断字符变量c的值不是数字也不是字母时,应采用下述表达式(D)。 A)c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122 B)!(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122) C)c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122 D)!(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122) 5、能正确表示“当x的取值在[1,100]和[200,300]范围内为真,否 则为假”的表达式是(C)。

C语言程序设计教程 第五章 课后习题参考答案

P124 2古典问题:兔子总数(斐波那契数列)#include int main() { int f1=1,f2=1,f,i,k=0; printf("%d\t %d\t",f1,f2); k=k+2; for(i=3;i<=20;i++) { f=f1+f2; printf("%d\t",f); k++; if(k%5==0) printf("\n"); f1=f2; f2=f; } printf("\n"); return 0; } P124 3统计一个整数的位数 #include int main() { int n,k=0; printf("请输入n的值:"); scanf("%d",&n); while(n) { n/=10; k++; } printf("%d\n",k); return 0; } P124 4求逆序数 #include int main() { int a,n;

printf("请输入一个整数:\n"); scanf("%d",&a); while(a>0) { n=a%10; printf("%d",n); a=a/10; } return 0; } P124 5输出回文数 #include int main() { int m,k=0; long int n,t; for(n=10;n<=2000;n++) { m=0; t=n; while(t>0) { m=m*10+t%10; t=t/10; } if(n==m) { printf("%d\t",n); k++; if(k%9==0) printf("\n"); } } printf("\n"); return 0; } 判断回文数

相关主题
文本预览
相关文档 最新文档