编译环境:VS2017
注:本文所有代码都是参考网上其他博客代码,再加以改进整理写成的。
1. 八进制转十进制
#pragma warning(disable : 4996)
#include<stdio.h>
#include<math.h>
int main() {
int n;
int i = 0;
int result = 0;
scanf("%d", &n);
while (n != 0) {
result += (n % 10) * pow(8, i);
n /= 10;
i++;
}
printf("%d\n", result);
system("pause");
}
2. 十进制转八进制
#pragma warning(disable : 4996)
#include<stdio.h>
#include<math.h>
int main() {
int n;
int i = 0;
int result = 0;
scanf("%d", &n);
while (n != 0) {
result += (n % 8) * pow(10, i);
n /= 8;
i++;
}
printf("%d\n", result);
system("pause");
}
3. 冒泡排序
#pragma warning(disable : 4996)
#include<stdio.h>
#define N 10
int main() {
int a[] = { 1057, 3, 27, 8, 87, -1, 0, 87, 55, 400 };
int length = N;
for (int i = 0; i < N - 1; i++) {
for (int j = 0; j < N - i - 1; j++) {
if (a[j] > a[j + 1]) {
int temp = a[j + 1];
a[j + 1] = a[j];
a[j] = temp;
}
}
}
for (int i = 0; i < N; i++) {
printf("%d\t", a[i]);
}
printf("\n");
system("pause");
}
4. 选择排序
#pragma warning(disable : 4996)
#include<stdio.h>
#define N 10
int main() {
int a[] = { 1057, 3, 27, 8, 87, -1, 0, 87, 55, 400 };
int length = N;
int index;
for (int i = 0; i < N - 1; i++) {
index = i;
for (int j = i + 1; j < N; j++) {
if (a[index] > a[j]) {
index = j;
}
}
int temp = a[i];
a[i] = a[index];
a[index] = temp;
}
for (int i = 0; i < N; i++) {
printf("%d\t", a[i]);
}
printf("\n");
system("pause");
}
5. 插入排序
#pragma warning(disable : 4996)
#include<stdio.h>
#define N 10
int main() {
int a[] = { 1057, 3, 27, 8, 87, -1, 0, 87, 55, 400 };
int length = N;
for (int i = 1; i < N; i++) {
int j = i - 1;
int current = a[i];
while (j >= 0 && a[j] > current) {
a[j + 1] = a[j];
j--;
}
a[j + 1] = current;
}
for (int i = 0; i < N; i++) {
printf("%d\t", a[i]);
}
printf("\n");
system("pause");
}
6. 数字转字符串
#pragma warning(disable : 4996)
#include<stdio.h>
#define N 10
int main() {
int n;
char ch[N];
int length = 0;
scanf("%d", &n);
while (n != 0) {
ch[length] = n % 10 + '0';
n /= 10;
length++;
}
for (int i = length - 1; i >= 0; i--) {
printf("%c", ch[i]);
}
printf("\n");
system("pause");
}
7. 字符串转数字
#pragma warning(disable : 4996)
#include<stdio.h>
#define N 10
int main() {
int n = 0;
char ch[N];
int length = 0;
scanf("%s", ch);
while (ch[length] != '\0') {
n = n * 10 + ch[length] - '0';
length++;
}
printf("%d\n", n);
system("pause");
}
8. 二分查找
#pragma warning(disable : 4996)
#include<stdio.h>
#define N 10
int BinarySearch(int a[], int start, int end, int value) {
if (start > end) {
return -1;
}
int middle = (start + end) / 2;
if (value == a[middle]) {
return middle;
}
else if (value < a[middle]) {
return BinarySearch(a, start, middle - 1, value);
}
else if (value > a[middle]) {
return BinarySearch(a, middle + 1, end, value);
}
}
int main() {
int a[] = { -1, 0, 3, 8, 27, 55, 87, 101, 400, 1057 };
int n;
scanf("%d", &n);
printf("%d\n", BinarySearch(a, 0, N - 1, n));
system("pause");
}
9. 汉诺塔
#pragma warning(disable : 4996)
#include<stdio.h>
int move(int n, char from, char to) {
printf("把圆盘%d从%c塔移动到%c塔\n", n, from, to);
}
int Hanoi(int n, char A, char B, char C) {
static int count = 0;
if (n == 1) {
move(1, A, C);
return ++count;
}
else if (n > 1) {
Hanoi(n - 1, A, C, B);
move(n, A, C);
Hanoi(n - 1, B, A, C);
++count;
}
}
int main() {
int n;
scanf("%d", &n);
printf("移动次数:%d\n", Hanoi(n, 'A', 'B', 'C'));
system("pause");
}