有十个地区的面积要求,对他们按由小到大的顺序排序,将相邻两个运用冒泡排序
#include <stdio.h>
void bubble_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 area[] = {10, 5, 20, 15, 30, 25, 40, 35, 50, 45};
int n = sizeof(area) / sizeof(area[0]);
bubble_sort(area, n);
// 打印排序后的结果
for (int i = 0; i < n; i++) {
printf("%d ", area[i]);
}
printf("\n");
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
class Test
{
void TestFun1() {cout << "TestFun1" <<endl;}
void TestFun2() {cout << "TestFun2" <<endl;}
void TestFun3() {cout << "TestFun3" <<endl;}
};
typedef void (*Fun)(void);
int main()
{
Test test;
cout << "类对象地址:" << &test << endl;
cout << "虚函数表地址: " << (int*)*(int*)&test << endl;
cout << "虚函数TestFun1地址:" <<(int*)*(int*)&test << endl;
cout << "虚函数TestFun2地址:" <<(int*)*(int*)&test + 1 << endl;
cout << "虚函数TestFun3地址:" <<(int*)*(int*)&test + 2 << endl;
system("pause");
}
以下为输出:
类对象地址:0041FCEB 虚函数表地址: CCCCCCCC 虚函数TestFun1地址:CCCCCCCC 虚函数TestFun2地址:CCCCCCD0 虚函数TestFun3地址:CCCCCCD4 请按任意键继续. . .
由此可见虚函数表地址为错误,第一条确认!
我可以解决该问题。
首先需要准备一个存储地区面积的数组,然后使用选择排序算法将它们按面积从小到大排序,最后使用冒泡排序算法将相邻两个地区排序即可。
具体步骤如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 10 // 地区名称最大长度
// 定义地区结构体
struct Area {
char name[MAX_NAME_LEN + 1]; // 地区名称
int area; // 地区面积
};
scanf()
函数读取用户输入的地区信息。#define MAX_AREA_NUM 10 // 地区数量最大值
int main() {
struct Area areaList[MAX_AREA_NUM];
int areaNum = 0;
// 读入地区信息
printf("请输入地区名称和面积,以空格分隔,输入#结束:\n");
while (areaNum < MAX_AREA_NUM) {
scanf("%s", areaList[areaNum].name);
if (strcmp(areaList[areaNum].name, "#") == 0) {
break;
}
scanf("%d", &areaList[areaNum].area);
areaNum++;
}
}
void selectionSort(struct Area areaList[], int areaNum) {
for (int i = 0; i < areaNum - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < areaNum; j++) {
if (areaList[minIndex].area > areaList[j].area) {
minIndex = j;
}
}
if (minIndex != i) {
struct Area temp = areaList[minIndex];
areaList[minIndex] = areaList[i];
areaList[i] = temp;
}
}
}
void bubbleSort(struct Area areaList[], int areaNum) {
for (int i = 0; i < areaNum - 1; i++) {
for (int j = 0; j < areaNum - i - 1; j++) {
if (areaList[j].area > areaList[j + 1].area) {
struct Area temp = areaList[j];
areaList[j] = areaList[j + 1];
areaList[j + 1] = temp;
}
}
}
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 10 // 地区名称最大长度
#define MAX_AREA_NUM 10 // 地区数量最大值
// 定义地区结构体
struct Area {
char name[MAX_NAME_LEN + 1]; // 地区名称
int area; // 地区面积
};
// 选择排序
void selectionSort(struct Area areaList[], int areaNum) {
for (int i = 0; i < areaNum - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < areaNum; j++) {
if (areaList[minIndex].area > areaList[j].area) {
minIndex = j;
}
}
if (minIndex != i) {
struct Area temp = areaList[minIndex];
areaList[minIndex] = areaList[i];
areaList[i] = temp;
}
}
}
// 冒泡排序
void bubbleSort(struct Area areaList[], int areaNum) {
for (int i = 0; i < areaNum - 1; i++) {
for (int j = 0; j < areaNum - i - 1; j++) {
if (areaList[j].area > areaList[j + 1].area) {
struct Area temp = areaList[j];
areaList[j] = areaList[j + 1];
areaList[j + 1] = temp;
}
}
}
}
int main() {
struct Area areaList[MAX_AREA_NUM];
int areaNum = 0;
// 读入地区信息
printf("请输入地区名称和面积,以空格分隔,输入#结束:\n");
while (areaNum < MAX_AREA_NUM) {
scanf("%s", areaList[areaNum].name);
if (strcmp(areaList[areaNum].name, "#") == 0) {
break;
}
scanf("%d", &areaList[areaNum].area);
areaNum++;
}
// 按面积从小到大排序
selectionSort(areaList, areaNum);
// 冒泡排序
bubbleSort(areaList, areaNum);
// 输出结果
printf("按面积从小到大排序:\n");
for (int i = 0; i < areaNum; i++) {
printf("%s %d\n", areaList[i].name, areaList[i].area);
}
return 0;
}