第一题:
运行截图:
代码:
#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;
}
第三题:
运行示例:
代码:
#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;
}
//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;
}