This commit is contained in:
2026-06-15 09:00:38 +08:00
parent fec66377d5
commit 4640c5e02b
191 changed files with 6046 additions and 0 deletions
+50
View File
@@ -0,0 +1,50 @@
#include <stdio.h>
#include <time.h>
void doAddition(int iterations);
void doMultiplication(int iterations);
int main() {
const int iterations = 1000000000; // 操作次数
const int repetitions = 10; // 重复测试的次数
double totalAdditionTime = 0.0;
double totalMultiplicationTime = 0.0;
// 重复测试加法
for (int i = 0; i < repetitions; ++i) {
clock_t begin = clock();
doAddition(iterations);
clock_t end = clock();
totalAdditionTime += (double)(end - begin) / CLOCKS_PER_SEC;
}
printf("加法操作平均耗时: %.5f s\n", totalAdditionTime / repetitions);
// 重复测试乘法
for (int i = 0; i < repetitions; ++i) {
clock_t begin = clock();
doMultiplication(iterations);
clock_t end = clock();
totalMultiplicationTime += (double)(end - begin) / CLOCKS_PER_SEC;
}
printf("乘法操作平均耗时: %.5f s\n", totalMultiplicationTime / repetitions);
return 0;
}
// 加法函数
void doAddition(int iterations) {
long long result = 0; // 使用 long long 以避免溢出
for (int i = 0; i < iterations; ++i) {
result += 1; // 简单的加法操作
}
// printf("Addition result: %lld\n", result); // 可以取消注释以验证结果
}
// 乘法函数
void doMultiplication(int iterations) {
long long result = 1; // 使用 long long 以避免溢出
for (int i = 0; i < iterations; ++i) {
result *= 2; // 简单的乘法操作
}
// printf("Multiplication result: %lld\n", result); // 可以取消注释以验证结果
}
Binary file not shown.
+17
View File
@@ -0,0 +1,17 @@
#include <stdio.h>
void pringDuijiao(int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i == j || i + j == n - 1)
printf("*");
printf(" ");
}
printf("\n");
}
}
int main(){
pringDuijiao(9);
return 0;
}
Binary file not shown.
+39
View File
@@ -0,0 +1,39 @@
#include <stdio.h>
void trace(int i, int j, int s[][5]) {
if (i == j) {
printf("A%d", i);
} else {
printf("(");
trace(i, s[i][j], s); // 递归输出左边
trace(s[i][j] + 1, j, s); // 递归输出右边
printf(")");
}
}
int main() {
int wei[] = { 2, 3, 4, 5, 6 };
int s[5][5] = {
{0, 0, 0, 0, 0},
{0, 0, 1, 2, 2},
{0, 0, 0, 2, 2},
{0, 0, 0, 0, 3},
{0, 0, 0, 0, 0}
};
// 打印二维数组 s 的特定格式
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (i == j || i + j == 4) // wei.length - 1 = 4
printf("%d", s[i][j]);
printf("\t");
}
printf("\n");
}
// 打印括号表示法
trace(1, 4, s); // wei.length - 1 = 4
printf("\n");
return 0;
}
Binary file not shown.
+45
View File
@@ -0,0 +1,45 @@
#include <stdio.h>
#include <limits.h>
void matrixChain(int p[], int m[][5], int s[][5], int n) {
for (int i = 1; i <= n; i++) {
m[i][i] = 0; // 初始化对角线
}
for (int d = 2; d <= n; d++) { // d为链的长度
for (int i = 1; i <= n - d + 1; i++) { // i是起始位置
int j = i + d - 1; // 结束位置
m[i][j] = INT_MAX; // 初始化为无穷大
for (int k = i; k < j; k++) {
// 计算当前划分的最小值
int t = m[i][k] + m[k + 1][j] + p[i - 1] * p[k] * p[j];
if (t < m[i][j]) {
m[i][j] = t; // 更新最小值
s[i][j] = k; // 记录划分位置
}
}
}
}
}
//输出A[i,j]的最优计算次序
void traceback(int i, int j, int s[][5]) {
if (i == j) {
printf("A%d", i); // 输出矩阵名
} else {
printf("(");
traceback(i, s[i][j], s); // 递归输出左边
traceback(s[i][j] + 1, j, s); // 递归输出右边
printf(")");
}
}
int main() {
int p[] = {6, 7, 8, 9, 10}; // 矩阵的维数
int n = sizeof(p) / sizeof(p[0]) - 1; // 矩阵个数
int m[6][5] = {0}; // 存放最优值的数组
int s[6][5] = {0}; // 存放分割位置下标的数组
matrixChain(p, m, s, n);
printf("最优值为: %d\n", m[1][n]); // 输出最优值
printf("最优计算次序为: ");
traceback(1, n, s); // 输出最优计算次序
return 0;
}
Binary file not shown.
+26
View File
@@ -0,0 +1,26 @@
#include <stdio.h>
void printAi(int arr[], int i, int length) {
if (i < 1 || i >= length) {
printf("值不符合要求.\n");
} else {
printf("矩阵A%d的维数:%d行x%d列\n",
i, arr[i - 1], arr[i]);
for (int m = 0; m < arr[i - 1]; m++) {
for (int n = 0; n < arr[i]; n++) {
printf("0\t");
}
printf("\n");
}
}
}
int main() {
int arr[] = {2, 3, 4, 5, 6};
int length = sizeof(arr) / sizeof(arr[0]);
// 打印矩阵 A2 的维数
printAi(arr, 2, length);
return 0;
}
Binary file not shown.