"NOJ答案(附目录).docx"
这些代码片段是NOJ(可能是指某个在线编程平台)的答案示例,涵盖了不同的算法和编程任务。让我们逐一分析每个程序并提取相关的知识点。
1. "1“的传奇
这个程序计算一个整数中所有数字1出现的次数。它首先计算整数的位数,然后通过循环检查每一位,根据该位上的数字更新计数器。涉及的知识点包括:
- 使用`#include<stdio.h>`和`#include<math.h>`头文件。
- 输入处理:`scanf("%d",&n)`读取整数输入。
- 循环结构:`while`和`for`循环用于遍历数字的每一位。
- 数学运算:`m=m/10`用于移除数字的最后一位,`pow(10,i)`计算10的幂。
- 条件判断:`if`语句根据当前位上的数字进行不同的计算。
- 输出结果:`printf("%d",c1)`打印最终计数值。
2. A+B
这是一个简单的加法程序,接受两个整数A和B,然后输出它们的和。知识点:
- 输入处理:`scanf("%d%d",&A,&B)`读取两个整数输入。
- 输出结果:`printf("%d\n",A+B)`打印两个数的和。
3. A+BⅡ
此程序处理一串整数对(A, B),并输出每对数相加后的结果。知识点:
- 数组的使用:`inta[n+1],b[n+1],c[n+1]`存储输入的整数对和它们的和。
- 循环结构:`for`循环遍历数组并计算和。
- 输出结果:`printf("%d\n",c[j])`打印每对数的和。
4. A*B
这个程序接受两个浮点数A和B,计算它们的乘积,并输出乘积中数字的个数。知识点:
- 浮点数操作:`scanf("%lf%lf",&a,&b)`读取两个浮点数,`c=a*b`计算乘积。
- 字符串处理:`sprintf`将浮点数转换为字符串,`strlen`计算字符串长度。
- 数字计数:遍历字符串中的每个字符,将其转换回数字并累加计数。
- 循环结构:`while`循环处理数字个数大于9的情况。
- 输出结果:`printf("%d",n)`打印数字个数。
5. ACKERMAN
Ackermann函数是一个递归函数,通常用于展示非平凡的递归行为。这个程序可能实现了一个简化的版本。知识点:
- 输入处理:`scanf("%d",&m)`读取 Ackermann 函数的参数。
- 递归调用:`ackermann(m, n)`(未在给出的代码中完整展示)。
- 输出结果:`printf("%d",result)`打印 Ackermann 函数的结果。
这些程序展示了基础的C语言编程技巧,包括输入输出、控制结构、数学运算、数组和递归。它们也涵盖了不同类型的计算问题,如计数、加法、乘法以及递归函数的实现。