一个实例掌握for循环语句————进制转换器

一、循环语句

C语言中,支持两种循环语句,一种是while循环,一种是for循环。

1、两种循环的具体用法

1.while(条件){}
2.for(循环控制变量;条件;控制控制变量的变化){}
(除条件外,其他的部分都可以省略)

2、两种循环的区别

for循环可以实现的,while循环都可以实现。
for循环,专注循环的次数。

二、实战—进制转换器

题目要求:使用户输入想要转化的十进制数值,并输入想转换的进制。通过程序,实现从十进制到二进制,八进制,十六进制的转化。

代码
#include<stdio.h>
#include<stdlib.h>
int less(int val,int value);//向较小进制转化(2,8)
int more(int val,int value);//向较大进制转化(16)
int main(){
	int val;//十进制数字
	int value;//转换的进制
	printf("请输入您要转换的十进制数字:");
	scanf("%d",&val);
	printf("请输入你想转换的进制:");
	scanf("%d",&value);
	if(value==2||value==8){
		less(val,value);
	}else{
		more(val,value);
		
	}
}
int less(int val,int value){
	int rest;
	int answer=0;
	int n=1;
	for(;1;){
	    rest=val%value;
		val=val/value;
		answer=answer+rest*n;//利用个十百千是从左向右这样排列的特点,实现“逆序输出 ”
		n=n*10;
		if(val==1||val==0){//判断最后终止的时刻
			answer=answer+n*val;
			break;
		}
	}
	printf("%d",answer);
}
//难点1:同一个数组无法储存不同类型的数据(int char)
//难点2:同一个输出,也不能输出不同类型的数据(int char)
//难受,可以试着定义一个字符串,写完0-9,A-F
int more(int val,int value){
	char display[16]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
	char array[10000];
	int copy_i;
	for(int i=0;1;i++){
		char rest;
		rest=display[val%value];
		array[i]=rest;
		val=val/value;
		if(val==0||val==1){
			array[i+1]=display[val];
			copy_i=i;
			break;
		}
	}
	for(;copy_i>=0;copy_i--){
		printf("%c",array[copy_i]);
	}
	
	
}

当从十进制转化成二或八进制时,一切都还好说。但是我们在这里用到了一个小技巧,即通过数字的位数的大小是从左到右排列的(而非我们平时的阅读顺序从右到左,实现不应用数组就可以输出结果)。
真正困难的地方是从10进制到16进制的转换,因为16进制,除了数字之外,还涉及到‘a’–‘f’等字符,如果没有想到用一个字符串将所有字符都表示出来的话,就会遇到代码注释中一样的问题。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值