梦中仙 发表于 2023-5-12 10:45:13

答案

零度体温 发表于 2023-5-13 10:24:46

0. 请问下边代码将打印多少个 'A'?
#include <stdio.h>

int main()
{
      int i, j;

      for (i = 0; i != 10, j != 10; i++)
      {
                for (j = 0; j < 10; j++)
                {
                        putchar('A');
                }
      }

      putchar('\n');

      return 0;
}
答:10个。这道题的陷阱在于让你认为退出外层循环需要同时符合 i == 10 和 j == 10 两个条件。其实并不是这样,这是一个逗号表达式,只取最后边的值。也就是说只要满足 j == 10 就可以了。
1. 请问下边代码会打印多少个 'B'?
#include <stdio.h>

int main()
{
      int i = 0;

      while (i++)
      {
                if (i > 10)
                {
                        goto Label;
                }
                putchar('B');
      }

Label:putchar('\n');

      return 0;
}
一个都没有!因为i++是先取出变量i的值,再为变量自身加一。因此第一进入循环判断时,取出的值是0,并不符合循环的条件,因此循环一次都没有被执行。
2. 请写出表达式 a = b = c = 5 中的"l-value"?
a、b、c 都是"l-value"。
3. 请问表达式 a = (b = 3, 4, c = b++ + 5, ++c + ++b); 执行后,整型变量 a、b、c 的值是?
b=3;
c=8
b=4;
c=9;
b=5;
a=(b=3,4,c=8,9+5)=16
b=5
c=9
解答这道题需要充分消化这一节课我们所学习的内容,首先 b = 3(因为赋值运算符的优先级比逗号运算符高);c = b++ + 5,c = 8(因为 b++ 是先使用变量 b 的值,再将自身加一);a 最后的值是 ++c + ++b,此时 c = 8,b = 4,则 a = 9 + 5,最后 a = 14, b = 5, c = 9。

4. 请使用条件运算符求出变量 x 的绝对值,并存放到变量 z 中。
z= x>0? x:-x;
5. C 语言其实在大部分情况下不使用 goto 语句也能做得很好,请尝试将下列代码段写成不带 goto 语句的版本。
A.
if (size > 12)
{
      goto a;
}
goto b;
a:      cost = cost * 1.05;
      flag = 2;
b:      bill = cost * flag;

B.
if (ibex > 14)
{
      goto a;
}
sheds = 2;
goto b;
a:      sheds = 3;
b:      help = 2 * sheds;

C.
readin: scanf("%d", &score);
if (score < 0)
{
      goto stage2;
}
count++;
goto    readin;
stage2: printf("count = %d\n", count);
答:
A.
if (size > 12)
{
        cost = cost * 1.05;
    flag = 2;
}
bill = cost * flag;

B.
if (ibex > 14)
{
      sheds = 3;
}
else
{
        sheds = 2;
}
help = 2 * sheds;

C.

scanf("%d", &score);
while(score >=0)
{
        count++;
        scanf("%d", &score);
}
printf("count = %d\n", count);

动动手:
假设小甲鱼和黑夜手上均有 10000 元,小甲鱼以 10% 的单利息投资,黑夜则以每年 5% 的复合利息投资。请编写一个程序,计算需要多少年黑夜手头的 Money 才会超过小甲鱼?
提示:单利息即每年的利息均为投资额 * 利率;复合利息则是每年的本息所得作为第二年的投资额。
#include<stdio.h>
#include<math.h>
int main()
{
                int year = 0;
                float fishc = 10000,heiye = 10000;
                double f_result,h_result;
               
                do
                {
                        year++;
                        f_result = fishc * 0.10 * year + fishc;
                        h_result = heiye * pow(1.05,(double)year);
                       
                }while(h_result < f_result);
                printf("%d年后,黑夜的投资额超过小甲鱼!\n",year);
                printf("小甲鱼的投资额为:%.2f\n",f_result);
                printf("黑夜的投资额为:%.2f\n",h_result);
                return 0;
}
1. 都说天降横财不是什么好事儿,这不,小甲鱼中了双色球一等奖,扣除税收后还剩下 400 万人民币。假设小甲鱼把这些钱做固定投资,每年可以获得 8% 的红利,但在每年的第一天,小甲鱼都会取出 50 万作为本年度的开销……
请编写一个程序,计算需要多久小甲鱼才会败光所有家产,再次回到一贫如洗?
#include<stdio.h>

int main()
{
                int year = 0;
                float fishc = 400;
                do
                {
                        year++;
                        fishc -= 50;
                        fishc = fishc * (1+0.08);
                }while(fishc > 0 );
                printf("%d年后,小甲鱼败光了所有的家产,再次回到一贫如洗....",year);
                return 0;               
}
2. 根据以下已知公式求 Pi 的近似值,要求正确计算出小数点后前 7 位(即3.1415926)。
#include<stdio.h>
#include<math.h>

int main()
{
               
                double pi_4 = 1,pi;
                int i = 1;
                double j = 1;
                double k;
                do
                {
                                i = -i;
                                j += 2;
                                k = 1 / j * i;
                                pi_4 += k;
                }while(fabs(k) >= pow(10,-8));
                pi = pi_4 * 4;
                printf("PI的值为%.7f\n",pi);
                return 0;
}
3. 这是一个有趣的古典数学问题:如果说兔子在出生两个月后,就有繁殖能力,在拥有繁殖能力之后,这对兔子每个月能生出一对小兔子来。假设所有兔子都不会死去,能够一直干下去,那么两年之后可以繁殖多少对兔子呢?
#include<stdio.h>
#include<math.h>

int main()
{
                //第一个月开始前的兔子数
                int tu;                //兔子总数
                int tu_0 = 1;        //本月可繁殖的兔子
                int tu_1 = 0;        //上月新生兔,一个月后可繁殖
                int tu_2 = 0;        //本月新生兔,两个月后可繁殖
                int mouth;
                for(mouth=3;mouth<=12;mouth++)
                {
                        //下个月初,一批兔子成熟,可繁殖兔子数增多
                        tu_0 += tu_1;
                        tu_1 = tu_2;
                        tu_2 = tu_0; //新繁殖兔子数
               }
               tu = tu_0 + tu_1 + tu_2;
               printf("两年后兔子总数为%d\n",tu);
               return 0;
                               
}

Wuhahahaha 发表于 2023-5-13 11:09:43

0

FanXing3 发表于 2023-5-16 20:41:54

答案

ynnh 发表于 2023-5-17 11:09:37

朕来阅奏了{:10_312:}

昕宇782916672 发表于 2023-5-18 17:25:58

1

UtaokiM 发表于 2023-5-18 18:27:10

1

进阶的小鱼 发表于 2023-5-19 19:04:06

努力

听雨ty 发表于 2023-5-21 11:43:20

9
10
5
4,3,9
#include<stdio.h>
int main()
{
        int x,z;
        printf("请输入一个数字:\n");
        scanf("%d",&x);
        x>0?z=x:z=-x;
        printf("%d\n",z);
       
        return 0;
       
}



she35 发表于 2023-5-21 23:58:14

haha

humengzhao 发表于 2023-5-23 16:57:05

0.10
1.0个
2.a,b,c
3.4,3,4
4.

出走的猫 发表于 2023-5-24 15:44:14

1

ssshw 发表于 2023-5-26 10:35:46

nbnb

司空曙 发表于 2023-5-26 15:57:14

\0. 请问下边代码将打印多少个 'A'?

答:每次i的内循环,打印10次A。j从0到9,一共10次j

​                当i=0,j = 10时,不符合判断条件,结束循环。一共打印10次

\1. 请问下边代码会打印多少个 'B'?

答:不会打印B。因为goto Label1后,没有返回循环体操作,直接结束代码

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

答:c = 5;b=c ; a=b;

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

答:a = (b = 3, 4, c = b++ + 5, ++c + ++b);

\4. 请使用条件运算符求出变量 x 的绝对值,并存放到变量 z 中

\5. A:if(size > 12){

​        cost = cost +*1.05;

​        flag = 2;

}



B:

1. if (ibex > 14)

   {

   ​   sheds = 3;

   }

   sheds = 2;

   

   C:

if (score < 0)

{

​   printf("count = %d\n", count);

}

风铃山谷 发表于 2023-5-26 16:28:19

6

珍真 发表于 2023-5-27 17:41:30

kk

gggtu 发表于 2023-5-29 16:28:22

q

极度纯洁的微笑 发表于 2023-5-31 13:07:52

{:5_102:}

jxy111 发表于 2023-6-1 23:09:41

1

旻偲 发表于 2023-6-2 01:08:40

0.100次
1.10次
2.a,b,c
3.a = 14, b= 5,c = 9;
4.int x;
    x = x >= 0? x : -x;
5.A:if(size >12)
{
cost *= 1.05;
flag = 2;
}
else
{
bill = cost * flag;
};
B:
if (ibex >14)
{
sheds = 3;
}
else
{
sheds = 2;
help = 2*sheds
};
C:
while(1)
{
    scanf("%d",&score);
    if (score < 0)
   {
    printf("count = "%d\n",count);
    }
    else
    {
    count ++;
    }
}
页: 250 251 252 253 254 255 256 257 258 259 [260] 261 262 263 264 265 266 267 268 269
查看完整版本: S1E16:拾遗 | 课后测试题及答案