首页 > 其他分享 >打卡5

打卡5

时间:2023-04-27 15:34:53浏览次数:37  
标签:ifs int ios dat ofs 打卡 include

img


#include <iostream>
#include <fstream>
#include <cstring>

using namespace std;

// 定义教师结构体
struct Teacher {
    int id;         // 工号
    string name;    // 姓名
    char gender;    // 性别
};

int main() {
    int N;
    cout << "请输入教师信息的个数:";
    cin >> N;

    // 创建文件输出流
    ofstream ofs("teacher.dat", ios::binary);
    if (!ofs) {
        cerr << "打开文件失败!" << endl;
        return -1;
    }

    // 依次输入教师信息,并写入文件
    for (int i = 0; i < N; i++) {
        Teacher t;
        cout << "请输入第" << i + 1 << "个教师的工号、姓名和性别:";
        cin >> t.id >> t.name >> t.gender;
        ofs.write((char*)&t, sizeof(Teacher));
    }

    ofs.close();

    // 读取文件内容,验证是否写入成功
    ifstream ifs("teacher.dat", ios::binary);
    if (!ifs) {
        cerr << "打开文件失败!" << endl;
        return -1;
    }

    Teacher t;
    while (ifs.read((char*)&t, sizeof(Teacher))) {
        cout << "工号:" << t.id << "\t姓名:" << t.name << "\t性别:" << t.gender << endl;
    }

    ifs.close();

    // 修改某位教师的信息
    int modifyId;
    cout << "请输入要修改的教师的工号:";
    cin >> modifyId;

    // 创建文件输入流和输出流
    ifstream ifs2("teacher.dat", ios::binary);
    if (!ifs2) {
        cerr << "打开文件失败!" << endl;
        return -1;
    }
    ofstream ofs2("teacher2.dat", ios::binary);
    if (!ofs2) {
        cerr << "打开文件失败!" << endl;
        return -1;
    }

    while (ifs2.read((char*)&t, sizeof(Teacher))) {
        if (t.id == modifyId) {  // 如果是要修改的教师,则重新输入信息
            cout << "请输入修改后的教师的工号、姓名和性别:";
            cin >> t.id >> t.name >> t.gender;
        }
        ofs2.write((char*)&t, sizeof(Teacher));  // 将教师信息写入新文件
    }

    ifs2.close();
    ofs2.close();

    // 删除原文件,并将新文件名改为原文件名
    remove("teacher.dat");
    rename("teacher2.dat", "teacher.dat");

    // 输出修改后的教师信息
    ifstream ifs3("teacher.dat", ios::binary);
    if (!ifs3) {
        cerr << "打开文件失败!" << endl;
        return -1;
    }

    while (ifs3.read((char*)&t, sizeof(Teacher))) {
        cout << "工号:" << t.id << "\t姓名:" << t.name << "\t性别:" << t.gender << endl;
    }

    ifs3.close();

    return 0;
}

img

#include <iostream>
#include <fstream>
#include <string>
#include<iostream>
#include<algorithm>
using namespace std;
#include<vector>
//二进制
int main() 
{
    ifstream ifs("f1.txt", ios::binary);
    ofstream ofs("f2.txt", ios::binary);
    if (!ifs)
    {
        cout << "文件打开失败" << endl;
        return -1;
    }
    vector<int> v;
    int num;
    while (ifs.read((char*)&num, sizeof(int)))
    {
        v.push_back(num);
    }
    ifs.close();
    sort(v.begin(), v.end());
    for (auto i : v)
    {
        cout << i << ' ';
        ofs.write((char*)&i, sizeof(int));
    }
    ofs.close();
    return 0;
}



#include <iostream>
#include <fstream>
#include <string>
#include<iostream>
#include<algorithm>
using namespace std;
#include<vector>
//文本文件
int main() 
{
    ifstream ifs("f1.txt", ios::in);
    ofstream ofs("f2.txt", ios::out);
    if (!ifs)
    {
        cout << "文件打开失败" << endl;
        return -1;
    }
    vector<int> v;
    int num;
    while (ifs >> num)
    {
        v.push_back(num);
    }
    ifs.close();
    sort(v.begin(), v.end());

    for (int i = 0; i < v.size(); i++)
    {
        ofs << v[i] << " ";
    }
    ofs.close();
    return 0;
}


img

#include <fstream>
#include <string>
#include<iostream>
#include<algorithm>
using namespace std;
#include<vector>
int main() 
{
    ifstream ifs("mesage.txt", ios::in);
    string line;
    int linenum=0;
    int wordnum = 0;
    while (getline(ifs, line)) {

        ++linenum;
        for (int i = 0; i < line.length(); i++)
        {
            if (line[i] == ' ')
            {
                ++wordnum;
            }
        }
    }
    ifs.close();
    cout << "单词的数目:" << wordnum << endl;
    cout << "行数:" << linenum << endl;
    return 0;
}

标签:ifs,int,ios,dat,ofs,打卡,include
From: https://www.cnblogs.com/gyg1222/p/17359036.html

相关文章

  • 打卡14
    3.1完数 #include<bits/stdc++.h>usingnamespacestd;intn;intf(intx){ intsum=0; for(inti=2;i<n/i;i++)//可以缩短时间复杂度 { if(x%i==0)sum+=i; } returnsum;}intmain(){ intl,r; cin>>l>>r; for(inti=l;i<=r;i++) { if(i==f(i))n++;//如果因......
  • c++打卡第十七天
    一、问题描述二、设计思路①、对于每个小孩得所得到的糖果数我们可以定义一个数组存储它们。②、需要进行循环结构,同时循环停止的条件为10个小孩得糖果数相同。③、小孩所得得糖果为奇数时需要向老师要一块后才再次分一半给后一个小朋友,这时候我们需要选择结构来实现。④、我们......
  • 打卡第十三天
    输入两个整数,求他们的平方和一、1.定义两个函数,一个用于求平方,另一个用于求和二、三、#include<iostream>usingnamespacestd;inthongyan(inta){ returna*a;}intjiandi(intx,inty){ returnhongyan(x)+hongyan(y);}intmain(){ intn,q; cin>>n>>q; cout<<""<&l......
  • 4.27打卡
    一、问题描述:求某一范围内完数的个数。如果一个数等于它的因子之和,则称该数为“完数”(或“完全数”)。例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。二、设计思路:根据完数的定义,解决本题的关键是计算出所选取的整数i(i的取值范围不固定)的因子(因子就是所有可以整除这个数的数),将......
  • 打卡 打印点、圆、圆柱信息
    定义平面二维点类CPoint,有数据成员x坐标,y坐标,函数成员(构造函数、虚函数求面积GetArea,虚函数求体积函数GetVolume、输出点信息函数print。由CPoint类派生出圆类Cirle类(新增数据成员半径radius),函数成员(构造函数、求面积GetArea,虚函数求体积函数GetVolume、输出圆面积信息函数pr......
  • 每天打卡一小时 第十七天 编译四部曲
    第一部曲自然语言路线图分块,能走通的节点合并为一块,记块的总数为num1。然后去掉一个节点后,再次分块,记块的总数为num2。如果num2-1(去掉了单独的一个节点)与num1相等或num2(去掉该节点之后,该节点所在的块仍互通)等于num1,则不影响连通性。第二部曲流程图第三部曲代码#include<io......
  • 每日打卡第二周 3
    1.10数值转换#include<bits/stdc++.h>usingnamespacestd;intsource,object,length;//储存原数,村拿出目标数值,存储字符串长度longdecimal_num;//存储十进制chartemp[1000];//存转换后的数值intflag=1;//是否退出的标志/*将字符转换为数字*/intchar_to_num(charch){if(ch......
  • 4.26打卡
     #include<bits/stdc++.h>usingnamespacestd;classnumber{intfz,fm;friendnumberoperator+(number&n1,number&n2);public:number(inta=0,intb=1){fz=a;fm=b;}friendintgcd(inta,intb......
  • C++每日打卡
    一个捐款人类Donator及一个相关函数getMaxName(),Donator类中包含捐款人的姓名及其捐款额。输出一批捐款人来到前后的捐款总金额,以及本批次捐款人中捐款最高者的姓名。 #include<iostream>usingnamespacestd;classDonator{private:stringname;float......
  • 2023.4.26编程一小时打卡
    一、问题描述:有一元二次方程ax2+bx+c=0,其一般解为x1,2=(-b±b2-4ac)/2a,但若a=0或b2-4ac<0时,用此公式出错。编程序,从键盘输入a,b,c的值,求x1和x2。如果a=0或b2-4ac<0,输出出错信息。二、解题思路:首先,将定义a,b,c为浮点数,然后输入a,b,c,去判断二次项系数的大小是否符合,再去判断b*2......