第四个输出是随机数,因为没有\0
"a,b,c,/0"
'a','b','c'
打印一个二维数组
二维数组实际上是按行存储,可以把行当作数组名,所以列不能省略
冒泡排序实现由小到大
#include <stdio.h>
void bubble_sort(int arr[],int sz)
{
int i = 0;
for (i = 0; i < sz - 1; i++) {
int j = 0;
for (j = 0; j < sz - 1 - i;j++ ) {
if (arr[j] > arr[j + 1]) {
int tmp = 0;
tmp = arr[j+1];
arr[j + 1] = arr[j];
arr[j] = tmp;
}
}
}
}
int main()
{
//冒泡排序写逆序
int arr[] = { 9,8,7,6,5,4,3,2,1 };
int sz = sizeof(arr) / sizeof(arr[0]);
bubble_sort(arr,sz);
int i=0;
for (i = 0; i < sz; i++) {
printf("%d", arr[i]);
}
return;
}
更完善一下
#include <stdio.h>
void bubble_sort(int arr[],int sz)
{
int flag = 1;
int i = 0;
for (i = 0; i < sz - 1; i++) {
int j = 0;
for (j = 0; j < sz - 1 - i;j++ ) {
if (arr[j] > arr[j + 1]) {
int tmp = 0;
tmp = arr[j+1];
arr[j + 1] = arr[j];
arr[j] = tmp;
flag = 0;
}
if (flag == 1) {
break;
}//if在第一次第一趟判断完成后,因为如果第一趟flag仍未1,说明是正序排列
//,当然也可以在下一层循环,但是这样重复工作就多了.本身这个flag的意义就是提高效率
}
}
}
int main()
{
//冒泡排序写逆序
int arr[] = { 9,8,7,6,5,4,3,2,1 };
int sz = sizeof(arr) / sizeof(arr[0]);
bubble_sort(arr,sz);
int i=0;
for (i = 0; i < sz; i++) {
printf("%d", arr[i]);
}
return;
}
两个例外
&arr是取得整个数组的地址,在值上与数组首元素地址相同