Skip to content

Latest commit

 

History

History
157 lines (95 loc) · 6.02 KB

20241215.md

File metadata and controls

157 lines (95 loc) · 6.02 KB

一些习题

1(数组)

星梦猫想用程序计算 $50!$ 的值,但她发现,即使使用 unsigned long long 类型,$50!$ 也远远超过了它能表示的最大值。设计程序,计算并打印出 $50!$ 的值。(提示:可以使用数组对象存储大整数的每一位;$50!$ 的位数为65)。

2(数组)

n 个人从 1 到 n 编号,按编号顺序顺时针围成一圈。从 1 号开始,顺时针不停报数,报到偶数的人出列,直至队伍中只剩 1 人。设计程序,输入 n,计算并打印出最后剩下的人的编号。

3(随机数)

“投飞镖”可以近似 $\pi$ 的值。取 $[0,1]\times[0,1]$ 的区域,向其中随机投掷 M 个飞镖,会产生 M 个落点。若其中有 m 个落点落在单位圆内,则 $\pi$ 的近似值为 $\frac{4m}{M}$。设计程序,输入投掷次数,估算 $\pi$ 的值。

4(随机数)

“投针”可以近似 $\pi$ 的值。在无限大的桌面上设置间距为 d 的一组平行线。将 M 个长度为 d 的针随机投掷到桌面上,若其中有 m 个针压到了某条线,则 $\pi$ 的近似值为 $\frac{2M}{m}$

  1. 证明上述式子。
  2. 设计程序,输入投掷次数,估算 $\pi$ 的值。

5(语句)

分解质因数。例:输入 18,输出 2*3*3

6(语句)

根据 BMI 指数(体重(kg) 除以身高(m) 的平方),判断体重是否正常。(提示:消瘦:$\rm{BMI}<18.5$;正常:$18.5\le\rm{BMI}<24.9$;过重:$24.9\le\rm{BMI}<29.9$;肥胖:$\rm{BMI}\ge 30$)

7(**)(<time.h>

实现 struct tm strptime(const char* str, const char* format) 函数。

8(函数)

汉诺塔的规则:有三根相邻的柱子,标号为A、B、C,柱子 A 上从下到上按金字塔状叠放着 n 个不同大小的圆盘,要把所有盘子一个一个移动到柱子 B 上,并且始终不能出现大盘子在小盘子上方的情况。

设计程序,输入 n,输出操作步骤。

9(语句)

输入 n(n>1),输出 1 到 n 的所有质数之和。

10(结构体)

实现简单的复数结构体,并实现加、减、乘、除运算,以及求模长和辐角。

11(*)(数组)

实现多项式求导。例:输入 3x^4+2x^3+7,输出 12x^3+6x^2

12(数组)

输入行列式的阶数 n,再输入 n*n 个数作为行列式每个位置上的值,输出行列式的值。

13(语句)

制作简易计算器。输入第一个数,再输入运算符号,最后输入第二个数,输出结果。

14(对象)

输入位数 n,输出 $\pi$ 精确到 n 位小数的值。

15(在开始编程之前)

  1. 查找资料,了解高效使用搜索引擎的方法。
  2. 熟悉键盘,知道如何打出下列符号:+ - _ / | \ ' " : ; , . ? ! ( ) [ ] { } < > & # *
  3. 在电脑上安装 C 语言开发所需的工具链和编辑器。
  4. (*)了解编程语言的发展史和分类。
  5. (*)探索 Compiler Explorer,并了解其功能。
  6. (*)探索 C++ Refererence,并了解其功能。
  7. (**)阅读并学习《计算机程序的构造和解释》(英文书名 Structure and Interpretation of Computer Programs,简称 SICP)。

16(语句)

实现 RGB 与 HSV 颜色模型之间的转换。

17(数组)

设计程序,模拟“生命游戏”:

  1. 世界由 n*n 个方格组成,每个方格有两种状态:要么有生命,要么无生命;
  2. 每个方格周围的 8 个方格(边 5 个,角 3 个)称为它的“邻居”;
  3. 在每代演化中,如果某方块有生命且其邻居中的 2 个或 3 个有生命,则该方块在下一代中保持有生命;如果该方块无生命且其邻居中的 3 个有生命,则该方块在下一代中变为有生命;其余情况则保持不变。

首先输入世界大小 n;再输入 n*n 个数,作为第 0 代时的每个方格的状态;最后输入 m 作为演化的代数:输出第 m 代的的演化结果。

18(指针)

T 是一个类型,有一个函数 f ,描述一个从 TT 的变换。设 arr 是一个数组:T arr[n]={ /* 初始化 */ };

设计一个满足如下要求的函数:如果把 arrnf 传入函数,起到如下效果:对 arr 内所有元素进行函数 f 所描述的变换,改变他们的值。

19(*)(数组)

某音乐游戏采取如下规则,计算出衡量玩家水平的评分。

1. 对每一首歌曲进行评分

$$ \begin{equation} 歌曲评分=\left{ \begin{array}{l} 定数\times 准确度& 准确度\ge 96%\\ 定数\times (准确度-80%) & 80%<准确度<96%\\ 0 & 其他\\ \end{array} \right. \end{equation} $$

其中,定数是歌曲的属性;准确度的计算公式:

$$准确度=\left(\frac{\rm{Perfect}数}{音符总数}+\frac{\rm{Good}数\times 0.7}{音符总数}\right)\times 100%$$

2. 对玩家进行评分

$$ \begin{equation} 玩家评分=\frac{\rm{AP1}+\rm{Best9}}{10} \end{equation} $$

其中,$\rm{AP1}$ 代表玩家达到 AP(All Perfect)的歌曲中定数最高的歌曲的定数;如果无任何歌曲达到 AP,则此项为 0。

$\rm{Best0}$ 代表所有歌曲中最高的 9 个评分之和。如果歌曲总数小于 9,则空位补 0。

设计程序,输入歌曲总数 n(n>0),再输入每首歌曲的定数、音符总数、Perfect 数、Good 数。计算并输出玩家评分。精确到小数点后两位。

20(语句)

输入圆心坐标,圆的半径和点的坐标,判断点和圆的位置关系。

21(表达式)

判断给定年份是否为闰年。

22(语句)

解下列方程组:

$$ \begin{equation} \left{ \begin{array}{l} ax+by=e\\ cx+dy=f\\ \end{array} \right. \end{equation} $$

输入 a,b,c,d,e 和 f:若有无数组解,输出“无数组解”;若只有一组解,输出解;若无解,输出“无解”。

23(联合体)(枚举)

设计一个可动态存储不同类型数据的结构。(提示:类型用 enum,值用 union;这种类型用一个包含上述的类型和值的 struct 表示)