鱼C论坛

 找回密码
 立即注册
楼主: 小甲鱼

[课后作业] S1E16:拾遗 | 课后测试题及答案

  [复制链接]
发表于 2021-7-17 20:09:13 | 显示全部楼层
零基础入门学习C语言封面
《零基础入门学习C语言》
小甲鱼 著
立即购买
已学废
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-17 22:34:22 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-19 00:55:10 | 显示全部楼层
0. 请问下边代码将打印多少个 'A'?
答:十个,外层循环只执行一次。
1. 请问下边代码会打印多少个 'B'?
答:i++是后加一,也就是while会先判断i是0进不去循环,所以不会打印B,要验证的话可以
<code>
...
while(i++||printf("i=%d",i));
...
</code>
2. 请写出表达式 a = b = c = 5 中的"l-value"?
答:a
3. 请问表达式 a = (b = 3, 4, c = b++ + 5, ++c + ++b); 执行后,整型变量 a、b、c 的值是?
答:先执行b=3,然后执行c=b++ + 5,b++是后加一,也就是说此时c=3+5=8,然后b再加一为4,
然后再执行++c + ++b,++在前面是变量先加一再进行四则运算则是c为9,b为5之后再相加得到a为14,
综上所述:a为14,b为5,c为9.
4. 请使用条件运算符求出变量 x 的绝对值,并存放到变量 z 中。
答:z=a<0?-a:a
5. C 语言其实在大部分情况下不使用 goto 语句也能做得很好,请尝试将下列代码段写成不带 goto 语句的版本。
答:A:

  1. ...
  2.   if (size > 12)
  3.   {
  4.     cost = cost * 1.05;
  5.     flag = 2;
  6.   }else{
  7.     bill = cost * flag;
  8.   }
  9. ...
复制代码

B:

  1. ...
  2. if (ibex > 14)
  3.   {
  4.         sheds = 3;
  5.   }else{
  6.     sheds = 2;
  7.     help = 2 * sheds;
  8.   }
  9. ...
复制代码

C:

  1. ...
  2. do{
  3.   scanf("%d", &score);
  4.   count++;
  5. }while(!(score < 0))
  6. printf("count = %d\n", count);
  7. ...
  8. 0:
  9. 答:[code]
  10. #include <stdio.h>
  11. #include <math.h>
  12. //单利息即每年的利息均为投资额 * 利率;复合利息则是每年的本息所得作为第二年的投资额。
  13. int main(){
  14.   float xjy_bj = 10000, hy_bj = 10000,hy_lx = 0.00;
  15.   float sum1 = 0,sum2 = 0;
  16.   int year = 0;
  17.   while(1){
  18.     year++;
  19.     sum1 = xjy_bj * 0.1 * year ;
  20.     sum2 =  hy_bj * pow((1 + 0.05),year) - hy_bj;
  21.     if(sum2 > sum1){
  22.       printf("%d年后黑夜手头上的Money才会超过小甲鱼!\n",year);
  23.       printf("此时小甲鱼手上的钱%.2f元!\n",xjy_bj + sum1);
  24.       printf("此时黑夜手上的钱%.2f元!",hy_bj + sum2);
  25.       break;
  26.     }
  27.   }
  28.   return 0;
  29. }
复制代码

1.答:

  1. #include <stdio.h>
  2. #include <math.h>
  3. int main(){
  4.   float xjy_zje = 4000000,sum = 0;
  5.   int year = 0;
  6.   while(1){
  7.     year ++;
  8.     sum += xjy_zje * 0.08 ;
  9.     xjy_zje += xjy_zje * 0.08  - 500000;
  10.     if(xjy_zje <= 0 ){
  11.       printf("%d年之后,小甲鱼败光了所有家产,再次回到一贫如洗!",year);
  12.       break;
  13.     }
  14.    
  15.   }
  16.   return 0;
  17. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-19 10:10:25 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-19 16:30:14 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-19 17:02:59 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-19 20:53:17 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-20 15:47:16 | 显示全部楼层
麻辣兔头
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-20 21:36:46 | 显示全部楼层
我想知道
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-21 00:28:30 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-21 04:51:20 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-21 20:47:47 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-22 10:18:47 | 显示全部楼层
q
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-22 10:58:28 | 显示全部楼层
课后作业
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-22 15:40:07 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-22 16:14:26 | 显示全部楼层
测试题:
0. 请问下边代码将打印多少个 'A'?
10, j没有重置为0

1. 请问下边代码会打印多少个 'B'?
0,i++的值先为0才自增

2. 请写出表达式 a = b = c = 5 中的"l-value"?
a

3. 请问表达式 a = (b = 3, 4, c = b++ + 5, ++c + ++b); 执行后,整型变量 a、b、c 的值是?
14, 5, 9

4. 请使用条件运算符求出变量 x 的绝对值,并存放到变量 z 中。
  1. #include <stdio.h>

  2. float abs(float x){
  3.         if(x>=0){
  4.                 return x;
  5.         }
  6.         else{
  7.                 return -x;
  8.         }
  9. }
  10. int main(){
  11.         printf("%d, %d, %f, %f", (int)abs(66), (int)abs(-66), abs(3.14), abs(-9.9));
  12.        
  13. }
复制代码



5. C 语言其实在大部分情况下不使用 goto 语句也能做得很好,请尝试将下列代码段写成不带 goto 语句的版本。
  1. A.
  2. if (size > 12)
  3. {
  4.         cost = cost * 1.05;
  5.         flag = 2;
  6. }
  7. bill = cost * flag;

  8. B.
  9. if (ibex > 14)
  10. {
  11.         sheds = 3;
  12. }
  13. sheds = 2;
  14. help = 2 * sheds;

  15. C.
  16. scanf("%d", &score);
  17. if (score < 0)
  18. {
  19.         printf("count = %d\n", count);
  20. }
  21. count++;
  22. continue;
复制代码


动动手:
0. 请编写一个程序,计算需要多少年黑夜手头的 Money 才会超过小甲鱼?
  1. #include <stdio.h>

  2. int main(){
  3.         float h = 10000.0, j = 10000.0;
  4.         int year = 0;
  5.         while(h<=j){
  6.                 year++;
  7.                 j = j + 10000.0*0.1;
  8.                 h = h*0.05 + h;
  9. //                printf("j: %f\th: %f\n", j, h);
  10.         }
  11.         printf("%d年后,投资超过!\nj的投资额是:%.2f\nh的投资额是:%.2f\n", year, j, h);
  12.         return 0;
  13. }
复制代码


1. 请编写一个程序,计算需要多久小甲鱼才会败光所有家产,再次回到一贫如洗?

  1. #include <stdio.h>
  2. #define TOTALMONEY 4000000

  3. int main(){
  4.         int year=0;
  5.         float money=TOTALMONEY;
  6.         for(year; money>0; year++){
  7.                 money-=500000;
  8.                 money+=money*0.08;
  9.         }
  10.         printf("%d年之后败光家产\n", year);
  11.         return 0;
  12. }
复制代码


2. 根据以下已知公式求 Pi 的近似值,要求正确计算出小数点后前 7 位(即3.1415926)。

  1. #include <stdio.h>
  2. #include <math.h>
  3. #define ACCURACY 8

  4. int main(){
  5.         double pi, div=1.0, accuracy=pow(10, ACCURACY);
  6.        
  7.         // CPU拉满
  8.         for(div; fabs(div)<accuracy; div+=4){
  9.                 pi += (1/div);
  10.         }
  11.        
  12.         div=-3;
  13.         for(div; fabs(div)<accuracy; div-=4){
  14.                 pi += (1/div);
  15.         }
  16.        
  17.         pi*=4;
  18.         printf("Pi: %.7f\n", pi);
  19.         return 0;
  20. }
复制代码


3. 这是一个有趣的古典数学问题:如果说兔子在出生两个月后,就有繁殖能力,在拥有繁殖能力之后,这对兔子每个月能生出一对小兔子来。假设所有兔子都不会死去,能够一直干下去,那么两年之后可以繁殖多少对兔子呢?

  1. #include <stdio.h>
  2. #define TIMELIMIT 12
  3. //#define MULT_DELAY 2
  4. //#define DEATH_AGE -1

  5. int rabbit_mult(int time){
  6.         if(time==1||time==2){
  7.                 return 1;
  8.         }
  9.         else{
  10.                 return rabbit_mult(time-1) + rabbit_mult(time-2);
  11.         }
  12. }

  13. int main(){
  14.         int time=TIMELIMIT;
  15.         long long int rabbits;

  16.         rabbits=rabbit_mult(time);
  17.          
  18.         printf("%d兔子已生成\n", rabbits);
  19.         return 0;
  20. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-22 16:32:42 | 显示全部楼层
t
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-22 18:46:13 From FishC Mobile | 显示全部楼层
w
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-22 22:58:35 From FishC Mobile | 显示全部楼层
h
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-23 11:00:08 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-13 07:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表