文件123456789

img

img

img


截图12234568787485221244563445465154612

第一题:
运行截图:

img

代码:

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    int n;
    char buf[310]={0};

    ofstream os("test01.txt");

    while(1)
    {
        cin >> n;
        if(n==0)
            break;
        cin.get(); //吸收回车符
        for(int i=0;i<n;i++)
        {
            cin.getline(buf,301); //读取整行数据
            int len = strlen(buf);
            //将字符个数写入文件
            os << len << endl; //单独一行
            //将字符写入文件
            os << buf<<endl;
            
        }
    }
    os.close();//关闭文件
    ifstream is("test01.txt");//读文件
    while(!is.eof())
    {
        if(is.getline(buf,300,'\n'))
            cout << buf << endl;
    }
    is.close();
    return 0;

}

第三题:
运行示例:

img

代码:

#include <iostream>
#include <fstream>
using namespace std;


typedef struct _student
{
    int id; //学号
    char name[20];
    char sex;
    float score[3];
}Student;


typedef struct _node
{
    Student stu;
    struct _node* next;
}Node;


int main()
{
    int n;
    ofstream os("student.dat",ios::binary); //以二进制方式打开文件
    cin >> n;
    Node* head = new Node;
    head->next = 0;

    Node* p = head;

    for(int i=0;i<n;i++)
    {
        Node* tmp = new Node;
        tmp->next = 0;
        cin >> tmp->stu.id; //输入学号
        cin >> tmp->stu.name;//输入姓名
        cin.get();//吸收回车
        tmp->stu.sex = cin.get(); //输入性别
        float sum = 0;
        for(int j=0;j<3;j++)
        {
            cin >> tmp->stu.score[j];
            sum += tmp->stu.score[j]; //计算总成绩
        }
        //根据总成绩插入链表
        p = head;
        if(p->next == 0)
            p->next = tmp;
        else
        {
            while(p->next)
            {
                float s1 = 0;
                for(int j=0;j<3;j++)
                    s1 += p->next->stu.score[j];
                if(sum > s1)
                    break;
                p = p->next;
            }
            tmp->next = p->next;
            p->next = tmp;
        }

    }

    
    //写入文件
    p = head->next;
    while(p)
    {
        os.write((const char*)(&(p->stu)),sizeof(Student));
        p = p->next;
    }
    os.close();//关闭文件

    return 0;

}

该回答引用GPT

#include <iostream>

using namespace std;

int main()
{
    int a = 1, b = 2, sum = 3, product = 2, difference = -1;
    double quotient = 0.5;

    for (int i = 0; i < 16; i++) {
        int mask = 8;
        int j = i;
        char s[4] = { '-', '-', '-', '-' };

        for (int k = 0; k < 4; k++) {
            if (j & mask) {
                s[k] = '+';
            }
            mask >>= 1;
        }

        int result = (i & 8 ? a + b : a - b);
        result = (i & 4 ? result * b : result / b);
        result = (i & 2 ? result + sum : result - sum);
        result = (i & 1 ? result * quotient : result / quotient);

        if (result == product) {
            cout << a << s[0] << b << s[1] << sum << s[2]
                 << quotient << '=' << product << endl;
            return 0;
        }
    }

    return 0;
}

第三个

#include<iostream>

using namespace std;

int main(){
    for(int a=1;a<=9;a++){
        int b=6-a;
        if(a*10==40&&40-b==11){
            if((double)29/a==3&&29%b==0){
                cout<<a<<" + "<<b<<" = 6"<<endl;
                cout<<"10 * "<<a<<" = 40"<<endl;
                cout<<"40 - "<<b<<" = 11"<<endl;
                cout<<"29 / "<<b<<" = 3"<<endl;
                return 0;
            }
        }
    }
    return 0;
}


//test01
#include <stdio.h>

int main() {
    int  line      = 0;
    int  read_line = 0;
    FILE *fp       = NULL;

    fp = fopen("test01.txt", "w+");
    if (fp == NULL) {
        printf("File open failed!\n");
        return -1;
    }

    printf("Please enter the number of line: ");
    scanf("%d", &line);
    fflush(stdin);

    fprintf(fp, "%d\n", line);

    for (int i = 0; i < line; ++i) {
        char buff[1024] = {0};
        gets(buff);
        fflush(stdin);
        fputs(buff, fp);
        fputs("\n", fp);
    }

    //至此结束写文件过程

    fseek(fp, 0, SEEK_SET); //将文件指针移动到文件开头


    fscanf(fp, "%d\n", &read_line);
    printf("line count = %d\n", read_line);
    for (int i = 0; i < read_line; ++i) {
        char buff[1024] = {0};
        fgets(buff, 1024, fp);
        printf("%s", buff);
    }

    fclose(fp);

    return 0;
}

img

img

//test03
#include <stdio.h>
#include <stdlib.h>

struct student {
    int   sno;
    char  name[20];
    float scores[3];
    float average;
    float sum;
};

struct NODE {
    struct student data;
    struct NODE    *next;
};

int main() {
    int num = 0;
    printf("please input the number of students: ");
    scanf("%d", &num);
    fflush(stdin);
    printf("please input the student's information: \n");
    struct NODE *head = NULL;

    for (int i = 0; i < num; ++i) {
        struct NODE *tmp = malloc(sizeof(struct NODE));
        if (tmp == NULL) {
            printf("malloc failed!\n");
            return -1;
        }
        scanf(
                "%d %s %f %f %f",
                &tmp->data.sno,
                tmp->data.name,
                &tmp->data.scores[0],
                &tmp->data.scores[1],
                &tmp->data.scores[2]
        );
        if (tmp->data.sno > 99999999) {
            printf("sno is too long!\n");
            return -1;
        } else if (tmp->data.sno < 10000000) {
            printf("sno is too short!\n");
            return -1;
        }
        tmp->data.sum     = tmp->data.scores[0] + tmp->data.scores[1] + tmp->data.scores[2];
        tmp->data.average = tmp->data.sum / 3;
        if (head == NULL || tmp->data.sum > head->data.sum) {
            tmp->next = head;
            head = tmp;
        } else {
            //插入时按总分从大到小排序
            struct NODE *p = head;
            while (tmp->data.sum <= p->data.sum && p->next != NULL) {
                p = p->next;
            }
            tmp->next = p->next;
            p->next   = tmp;
        }
    }

    FILE *fp = fopen("student.dat", "wb+");
    if (fp == NULL) {
        printf("File open failed!\n");
        return -1;
    }
    struct NODE *p = head;
    while (p != NULL) {
        fwrite(&p->data, sizeof(struct student), 1, fp);
        printf(
                "%d %s %.2f %.2f %.2f %.2f %.2f\n",
                p->data.sno,
                p->data.name,
                p->data.scores[0],
                p->data.scores[1],
                p->data.scores[2],
                p->data.sum,
                p->data.average
        );
        p = p->next;
    }

    return 0;
}

img

img

img