while与for的区别
for(int i = 0;i < 10;i++){
} 有循环控制变量 关心次数
while()不关心次数
用while循环实现for循环
int i = 0;
while(i<10){
i++;
}
do{
}while(i<3);
练习
要求
输入一个十进制数,将它分别转化为二进制,八进制,十六进制
思路 1.了解进制之间的转化
2.先写出最简单的二进制
3.最后处理16进制中10~16的特殊情况
下面以二进制为例展示代码和结果
#include <stdio.h>
int main(){
int num;
printf("请输入数字:");
scanf("%d",&num);
int jinzhi = 2;
int wei = 1;
long long sum = 0;
while(1){
//取余 10100
// 00101
// 1*0 + 10*0 + 100*1 + 1000*0 + 10000*1
// 10100
int yu = num % jinzhi;
num = num / jinzhi;
sum = sum + yu * wei;
wei = wei * 10 ;
if(num < jinzhi){
sum = sum + num * wei;
break;
}
}
printf("%d\n", sum);
return 0;
}
运行结果
![7VI9GEU(@OHAV@)$JJE%@Q.png
数组
为什么要数组
特点:存储多个同种类型的数据
1.数组的定义
【】表示一个数组:必须明确知道数组元素的个数
系统为数组分配内存的时候必须确定
int array【】 = {1,2,3,4};
int array【4】;
int array 【】 = {1,2};
2.数组的内存
数组名就是首地址
int array【4】;
array【0】=*(array + 0)
array【1】=*(array + 1)
array【2】=*(array + 2)
array【4】=10;不能越界
3.数组的访问:下标 0—n-1
array[0] = 2
array[1] = 23
赋值
下面我们还是做一个程序练习一下
要求
生成随机数
然后将不重复的随机数输入数组
思路
1.生成数组
2.产生随机数的同时去比较是否重复
3.如果重复就重新再产生一个随机数
4.如果不重复就保存
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int array[4] = {};
srand(time(NULL));
for (int i = 0; i < 4; i++){
int temp = rand() % 4;
if (i == 0){
array[i] = temp;
}else{
int j = 0;
for(; j <i; j++){
if(array[j] == temp;
printf("重复了:%d\n",temp);
break;
}
}
if (j == i){
array[i] = temp;
}else{
i--;
}
}
}
for (int i = 0; i< 4; i++){
printf("%d ", array[i]);
}
return 0;
}
B$_3IV~$F8$S}75PY(0LVOI.png