#include <stdio.h>
// 对数组进行冒泡排序
void bubble_sort(int arr[], int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr[4][4];
// 读取16个数并存储到二维数组中
printf("请输入16个数,每组4个数:\n");
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
scanf("%d", &arr[i][j]);
}
}
// 对每组数进行排序
for (int i = 0; i < 4; i++) {
bubble_sort(arr[i], 4);
}
// 打印排序后的二维数组
printf("排序后的二维数组:\n");
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
#include <stdio.h>
int main()
{
char str1[] = "hello bit.";
char str2[] = "hello bit.";
const char *str3 = "hello bit.";
const char *str4 = "hello bit.";
if(str1 ==str2)
printf("str1 and str2 are same\n");
else
printf("str1 and str2 are not same\n");
if(str3 ==str4)
printf("str3 and str4 are same\n");
else
printf("str3 and str4 are not same\n");
return 0;
}
问题详解:
1.由答案我们可以看出str1和str2是不同的,这是为什么呢,其实答案很好理解的,因为我们创建了两个不同的字符数组(他们连名字都不相同,那这两个数组怎么可能相同啊???),那么他们在内存中的空间位置肯定是不同的,而数组名代表首元素地址,两个不同的数组的首元素地址肯定也是不相同啊,那么自然str1肯定和str2是不相同的啦
2.首先常量字符串要在内存中开辟空间存储它本身,那么我们有必要在内存中储存两个一模一样的东西吗?(c/c++会把常量字符串储存到单独的一个内存区域中) 当这两个指针指向同一个常量字符串时,实际上就是指向同一块儿地址**(指针就是地址,地址就是指针)**
#include <stdio.h>
void sort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr[4][4] = {0}; // 初始化为0
int i, j;
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
scanf("%d", &arr[i][j]);
}
}
sort(arr, 4); // 按从小到大排好后存入二维数组中
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}