C语言编程:将十进制数转换为k进制

4星 · 超过85%的资源 需积分: 10 5 下载量 200 浏览量 更新于2024-07-31 收藏 125KB DOC 举报
"该资源是一份关于计算机二级C语言考试的模拟练习题,涉及到将十进制数转换为任意k进制数的编程问题。题目提供了部分代码,并指出了需要修正的三处错误。" 这篇资源主要涉及的知识点是C语言中的数制转换和数组的应用。以下是详细的解释: 1. **数制转换**: - 在编程中,将一个十进制数转换为其他任意进制(如二进制、八进制、十六进制或者用户自定义的2到9之间的进制)通常通过除法和取余操作完成。 - 这段代码中的函数`fun`设计用于实现这个功能。它接受两个参数,一个是待转换的十进制数`m`,另一个是目标进制`k`。 - 代码使用一个整型数组`aa`存储转换后的各位置的数字。数组索引`i`从0开始递增,对应转换后的数的最低位。 2. **错误修复**: - 第1处错误:在循环体内,应该用`m % k`获取`m`除以`k`的余数,然后将其赋值给`aa[i]`。因此,`aa[i] = m % k;`是正确的填充内容。 - 第2处错误:在计算完余数后,需要将`m`除以`k`更新其值,以便下一次迭代。所以,`m /= k;`是正确填充的内容。 - 第3处错误:在输出转换后的数字时,应当打印数组`aa`的元素,而不是一个未定义的变量。因此,`printf("%d", aa[i-1]);`是正确的填充内容。 3. **C语言基础**: - `#include`预处理器指令用于包含头文件,例如`<stdio.h>`包含输入输出函数,`<string.h>`包含字符串处理函数。 - `void`函数声明表示函数无返回值。 - `int`是整型数据类型,`char`用于字符型数据,`char *`是指向字符的指针,常用于字符串操作。 - `for`循环和`while`循环是C语言中的控制流程语句,用于重复执行一段代码。 - `%d`是`printf`函数中的格式化字符串,用于输出整数。 - `scanf`函数用于从标准输入读取数据,`"%d"`匹配整数。 - `[]`是数组的表示,`[i]`表示访问数组的第`i`个元素。 4. **数组与指针**: - 数组`aa`在这里作为缓冲区存储转换过程中的各个位,`i`作为索引遍历数组。 - 指针`pt`在提供的另一段代码中用于接收连接后的字符串结果,这涉及字符串拼接的概念,但此问题并未提供完整的代码,仅提到了错误修正。 综上,解答了计算机二级C语言模拟题中的数制转换算法和代码修复,以及C语言的基础知识,包括变量、数组、循环、函数调用等。