创建一个包含不超过 100 个整型数的文本文件 data.txt,试完成如下功能:
(1)编写一个函数,从文件中读取所有整型数。
(2)在 main 函数中输出所有整型数。格式要求每行输出 8 个整数,每个整数占 5 列。
(3)编写一个函数,删除所有整型数中包含数字 2 和 4的整数。在 main 函数中输出所有剩余的整数,输出格式与(2)相同。
(4)编写一个函数,将(3)中的所有整数输出到文本文件 result.txt 中,格式与输出到屏幕的格式相同。
分析:
先用随机数方式生成100个整数。
将每一小项,都做成一个函数单独处理,用main函数调用。
具体代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
#include "stdafx.h" #include <time.h> #include <fstream> #include <iostream> #include <iomanip> using namespace std; /**生成100个整数 int main() { //随机生成100个整数 srand(time(NULL)); int array[100]; for (int i = 0; i < 100; i++) { array[i] = rand()%500; } ofstream fout("data.txt"); if (!fout) { cout << "Can't open file!\n"; exit(0); } for (int i = 0; i < 100; i++) { fout << setw(5) << array[i]; } return 0; } */ void ReadFile(char* filename, int array[]) { ifstream fin("data.txt"); if (!fin) { cout << "Can't open file!\n"; exit(0); } int count = 0; while (fin >> array[count]) { count++; if (count >= 100) break; } } void Print(int array[], int len) { for (int i = 0; i < len; i++) { cout << setw(5) << array[i]; if ((i + 1) % 8 == 0) cout << "\n"; } cout << "\n"; } bool NumContain2or4(int num) { char* buffer = new char[256]; _itoa(num, buffer, 10); int len = strlen(buffer); for (int i = 0; i < len; i++) { if (buffer[i] == '2' || buffer[i] == '4') return true; } return false; } void Remove2or4(int array[], int len, int array1[], int& ResLen) { ResLen = -1; for (int i = 0; i < len; i++) { if (!NumContain2or4(array[i])) { ++ResLen; array1[ResLen] = array[i]; } } } void writefile(char* filename, int array[], int len) { ofstream fout(filename); if (!fout) { cout << "Can't open file!\n"; exit(0); } for (int i = 0; i < len; i++) { fout << setw(5) << array[i]; if ((i + 1) % 8 == 0) fout << "\n"; } } int main() { int array[100]; ReadFile("data.txt", array); Print(array, 100); int array1[100]; int ResLen = 0; Remove2or4(array, 100, array1,ResLen); cout << "去除整数中含2和4" << endl; Print(array1, ResLen); writefile("result.txt", array1, ResLen); system("pause"); return 0; } |
运行结果: