使用:
0 工程建立
我使用的环境 VS2015
新建一个C++空工程,加入一个 main.cpp,代码如下。
1 修改自己的txt是几行几列的,默认 4*4
2 修改txt的文件名名称,默认名:这个txt地址放在VS工程下,和main.cpp同一个目录。
其他说明;
1 txt可以存的是小数
2 如果需要最大值和平均值,其函数已经留出,自行调用。
#include<stdio.h> #include<stdlib.h> // 1 修改txt 的行列数 #define N 4 //4列 #define L 4 //4行 // 2修改txt名称 const char file_name[50] = "myfile.txt"; // ----------------------------------使用 输入一个一维数组,求其中最小值------------------------------------- double min(const double *buf, const double bufsize) //计算数组buf中的最小值,参数bufsize为数组buf的元素数量 { double tmp = buf[0]; int i = 0; for (; i < bufsize; i++) { if (tmp >= buf[i]) tmp = buf[i]; } return tmp; } // -----------------------------使用 输入一个一维数组,求其中最小值的列坐标--------------------------------- int min_x(const double *buf, const double bufsize) //计算数组buf中的最小值的坐标 lie是其列数,参数bufsize为数组buf的元素数量 { double tmp = buf[0]; int i = 0; int lie = 0; for (; i < bufsize; i++) { if (tmp >= buf[i]) { tmp = buf[i]; lie = i; } } return lie; } // -------------------------没有使用 输入一个一维数组,求其中最大值-------------------------------- int max(const int *buf, const int bufsize) //计算数组buf中的最大值,参数bufsize为数组buf的元素数量 { int tmp = buf[0]; int i = 0; for (; i < bufsize; i++) { if (tmp <= buf[i]) tmp = buf[i]; } return tmp; } //----------------------- 没有使用 输入一个一维数组,求其中平均值---------------------------------- float avg(const int *buf, const int bufsize) //计算数组buf中的平均值,参数bufsize为数组buf的元素数量 { float sum = 0; int i = 0; for (; i < bufsize; i++) { sum += buf[i]; } return sum / bufsize; } // ---------------------- 主函数---------------------------------- int main(int argc, char *argv[]) { FILE *fp; double data[N][L] = { 0.0 }; //二维数组 double data_hang[L] = { 0.0 }; int index[N] = { 0 }; //二维数组列下标 double temp; int i, j; int count = 0; //计数器,记录已读出的浮点数 if ((fp = fopen(file_name, "rb")) == NULL) { printf("请确认文件(%s)是否存在!\n", file_name); exit(1); } while (1 == fscanf(fp, "%lf", &temp)) { data[count%N][(index[count%N])++] = temp; count++; } printf(" 最小值: 列 行");printf("\n"); for (i = 0; i < L; i++) { printf("第%d行元素为: \n", i + 1); for (j = 0; j < index[i]; j++) { printf("%.0f ", data[j][i]); data_hang[j] = data[j][i]; } // 每行最小值 printf(" %.0f ", min(data_hang, L)); //其中 min(data_hang, L)返回一个double的最小值 // 每行最小值坐标 printf("%d %d ", min_x(data_hang, L)+1, i); //其中 min_x(data_hang, L)+1 列 i 行 printf("\n"); } fclose(fp); system("pause"); return 0; }