16进制一共有16个基数 0.1.2.3.4.5.6.7.8.9.A.B.C.D.E.F。 A对应10进制的10 B对应10进制的11 C对应10进制的12 D对应10进制的13 E对应10进制的14 F对应10进制的15。
这是案例
对啊, %d 输出十进制的, %o输出 八进制的,%x输出十六进制的
10,12,a
i=1
A
1 %d十进制 %o 八进制 %x 是16进制
2 i++ 后置自增 先打印再自增 所以为 1
3 i等于j 打印A 不然打印 B , 此时前一句已经自增完成,所以相同 打印A
思路:这是一种基于比较的算法,我们用一个大数组来存放这些数据,这些数据在这个大数组中的表现形式是以这个大数组的下标存在的,比如57,60,42这三个数字进行排序,那么用一个大数组,这个大数组的arr[57] = 1,arr[60] = 1,arr[42] = 1,然后遍历这个大数组就行了。
void count_sort(int arr[],size_t len){
int max = arr[0]; //最大值
int min = arr[0]; //最小值
size_t i;
for(i=0;i<len;i++){
if(max<arr[i]){ //找到最大值
max =arr[i];
}
if(min > arr[i]){ //找到最小值
min = arr[i];
}
}
int cnt = max-min+1; //范围
int *prr = malloc(cnt*sizeof(int)); //申请临时空间
for(i=0;i<cnt;i++){ //这个临时数组全部置0
prr[i] = 0;
}
for(i=0;i<len;i++){ //对需要进行排序的序列进行遍历
prr[arr[i]-min]++; //让下标为(arr[i]-min)的临时大数组的值+1
}
size_t j=0;
for(i=0;i<cnt;i++){ //遍历这个临时数组
while(prr[i]){ //如果这个数组下标为i的值不等于0
arr[j++] = i+min; //那就让需要进行排序的数组的值为i+min;
--prr[i];
}
}
free(prr); //释放掉申请的动态内存
}
字符:o 对应数据类型:unsigned int,无符号8进制(octal)整数 示例:printf(“0%o”,123);输出0173
字符:x/X 对应数据类型:无符号16进制整数,x对应的是abcdef,X对应的是ABCDEF 示例:printf(“0x%x 0x%X”,123,123);输出0x7b 0x7B