8、编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数, 然后打印出这个十进制整数对应的二进制形式。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;


//自动装包解包
public class HeiMa {

	public static void main(String[] args) throws IOException{
		Scanner scanner = new Scanner(System.in);
		String string = scanner.nextLine();
		int num = Integer.valueOf(string);
		ArrayList<Integer> remainder = new ArrayList<Integer>();
		int shang = 0;
		while(num / 2 > 0){
			shang = num / 2;
			remainder.add(num % 2);
			num = shang;
		}
		if(num == 1) remainder.add(1);
		System.out.println(remainder.size());
		System.out.println(remainder);
		for(int i = remainder.size() - 1; i >= 0; i--){
			System.out.print(remainder.get(i));
		}
	}

}

模块化程序设计是一种将复杂系统分解成多个简单模块的方法,每个模块负责实现特定功能的技术。在进行进制转换的程序设计中,我们可以将整个过程分为几个模块:输入模块、转换模块和输模块。 首输入模块负责接收用户输入十进制整数。然后,转换模块根据用户指定的目标进制进行转换。转换模块可以进一步细分为三个子模块,分别用于转换到二进制、八进制和十六进制。最后,输模块将转换结果显示给用户。 以C语言为例,下面是一个简单的代码框架,展示了如何实现这样的模块化程序设计: ```c #include <stdio.h> // 函数声明 void ConvertToBinary(unsigned int n); void ConvertToOctal(unsigned int n); void ConvertToHexadecimal(unsigned int n); unsigned int ConvertFromBinary(const char *binaryString); unsigned int ConvertFromOctal(const char *octalString); unsigned int ConvertFromHexadecimal(const char *hexString); int main() { unsigned int number; int targetBase; // 输入模块 printf("请输入一个十进制整数: "); scanf("%u", &number); printf("请输入目标进制(2, 8, 16): "); scanf("%d", &targetBase); // 转换模块 switch (targetBase) { case 2: ConvertToBinary(number); break; case 8: ConvertToOctal(number); break; case 16: ConvertToHexadecimal(number); break; default: printf("无效的目标进制。\n"); break; } return 0; } // 转换到二进制并输 void ConvertToBinary(unsigned int n) { // 实现转换到二进制的代码 } // 转换到八进制并输 void ConvertToOctal(unsigned int n) { // 实现转换到八进制的代码 } // 转换到十六进制并输 void ConvertToHexadecimal(unsigned int n) { // 实现转换到十六进制的代码 } // 其他相关的转换函数,例如从二进制字符串转换回十进制 ``` 在上述代码中,我们定义了输入模块和转换模块的框架,具体实现每个转换函数需要编写相应的算法。例如,将十进制数转换为二进制可以通过不断地除以2并取余数的方式来实现,余数逆序排列即为二进制形式。 对于相反的转换,即从二进制、八进制、十六进制字符串转换回十进制,可以通过将每个位置的数字乘以其权重(基数的幂)然后求和的方式来实现。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值