一、循环语句
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’等字符,如果没有想到用一个字符串将所有字符都表示出来的话,就会遇到代码注释中一样的问题。