Advertisement

11004512实验报告.doc

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
这份文档《11004512实验报告》是一份详细的实验记录文件,包含了编号为11004512的实验目的、方法、数据和结论等内容。 ### 第一题:整数转换为千分位形式 **问题描述** 将一个正整数n(长整型)输出成千分位的形式,即从个位起每三位之间加一个逗号。例如,7654321应当被表示为7,654,321。 **课题分析** 如果输入的数字小于一千,则不需要进行转换;若大于等于一千,则需要将该数除以一千,并取整和余数分别处理,在每三位之间插入一个逗号,直到所有位都被正确地分隔开。此题考察了C语言中的取整、取余及字符操作等知识的应用。 **数据结构设计** ```c char c = ,; // 千分符的符号 int n, i, j; int a[100]; // 存储转换后的数 ``` 如果输入的数字小于一千,直接输出该数字。否则执行以下步骤: - 初始化循环计数器i和j。 - 每次迭代中计算n除以1000的余数并存储在数组a[i]中;然后将n更新为整商部分(即去除最后三位); - 更新索引值,以便后续操作。 **源程序** ```c #include void main() { char c = ,; // 千分符的符号 int n, i=0, j; int a[100]; printf(请输入一个正整数n:\n); scanf(%d, &n); if(n < 1000) { printf(%d\n, n); // 如果输入的数字小于一千,则直接输出 } else { for(i = 0; n >= 1000; i++) { a[i] = n % 1000; n /= 1000; j = i + 1; } a[j] = n; for(i=j; i>0; --i) // 循环运行直到条件不符合 printf(%d%c, a[i], c); printf(%d\n, a[0]); // 输出剩余部分 } } ``` ### 第二题:数制转换程序 **问题描述** 编写一个能够将任意十进制数字自动转化为其他数制表示(包括二进制、八进制和十六进制)的程序,要求使用算法实现而不是直接调用C语言中的格式化输出函数。 **课题分析** 通过不断地除以目标基数并记录每次所得余数来完成转换。对于不同的基数,只需适当调整如何处理余数值即可(如二进制、八进制和十六进制)。 **数据结构设计** ```c unsigned long a, temp; // 存储待转换的十进制数及其运算过程中的中间值 char b[64]; // 存储二进制结果的数组 char o[21]; // 存储八进制结果的数组 char h[16]; // 存储十六进制结果的数组,考虑到无符号长整型数的有效范围。 ``` **源程序** ```c #include int main() { unsigned long a, temp; char b[64], o[21], h[16]; int m = 1; while(m) { // 循环输入直到用户选择退出 printf(请输入一个正整数:); scanf(%ld, &a); temp = a; i=0; while(temp && i<64) { b[i] = (temp%2)+0; // 求余;强制类型转换为实数 temp /= 2; // 整除运算 ++i; } printf(\n二进制: ); for(i--; i>=0; --i) printf(%c, b[i]); printf(\n); } return 0; } ``` 以上程序实现了从十进制到其他数制的转换,并且支持用户循环输入多个数字进行转换。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • 11004512实验报告.doc
    优质
    None