一个关于C语言文件输入输出的问题,主函数代码如下。问题在代码注释中

//按照主要问题的方向简化了原来的代码

#define plainplan "huaji"//文件名
int main(void)
{
int people = 0;
FILE*fp = fopen(plainplan, "rb+");//检查文件是否存在
if (fp == NULL)//创建文件
{
fp = fopen(plainplan, "wb+");
fwrite(&people, sizeof(int), 1, fp);//写入初始化数据
}
fread(&people, sizeof(int), 1, fp);
printf("%d\n", people);
puts("enter a new number:");
scanf("%d", &people);
//fp = fopen(plainplan, "rb+");//这行代码
/*
如果删除上面那行,不重新打开文件的话,下面的fwrite()函数就会无效
是不是每次打开文件,只能进行读操作或者写操作,不能进行完读操作之后再进行写操作。但我看的是《C Primer Plus》,并没有看到这种说话。求大佬点明一下我OTZ
*/
fwrite(&people, sizeof(int), 1, fp);
fclose(fp);
puts("done.");
system("pause");
return 0;
}

c

3个回答

r是只读的意思,用wb+

sinat_36027429
sinat_36027429 可是我用的是rb+,按理应该能写入才对,如果用wb+的话,会把我文件的内容清除了,读不出原来的数据了。在“这行代码”的位置用wb+确实能解决问题,但是正常来讲rb+也不应该会出现问题才对。
2 年多之前 回复

int main(void)
{
char choose;
int flight_choose = 0;
char all_choose[FUNCSIZE+1] = "abcdef";
//找了点错误,但和主要问题没什么关系
struct plainsize people[MAXSIZE];
FILE*fp = fopen(plainplan, "rb+");//检查文件是否存在
if (fp == NULL)//创建文件
{
fclose(fp);//错误
fp = fopen(plainplan, "a");//模式错误
chushi(people);

sinat_36027429
sinat_36027429 这里是在修改前的代码找到的错误
2 年多之前 回复

找了原因,在“这行代码”的地方使用了rewind(fp);就解决了问题,关于这个我在书上只找到“标准I/O内幕”的半页说明,还不是很能理解文件的工作原理。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
【C语言编写函数问题】从键盘输入一个浮点数,编写程序完成 如下功能:

编写程序,从键盘输入一个不等于0的浮点数,然后利用格式控制串分别输出这个浮点数的符号、整数部分和小数部分。例如输入-123.456,输出应该是按下列格式输出**(不允许使用if语句)**: ```sign: - ```integral part: 123 ```decimal fraction part: 0.456000

怎样定义两个函数,并在主函数中输出结果,下面代码有什么错误

#include <stdio.h> int main() { float max_(); float min_(); int i; float a[5]; for(i=0;i<5;i++) scanf("%f",&a[i]); max_(); min_(); printf("max=%.1f,min=%.1f\n",max_(),min_()); return 0; } float max_() { int i; float a[5],max; max=a[0]; for(i=1;i<=5;i++) { if(max<a[i]) max=a[i]; } return max; } float min_() { int i; float a[5],min; min=a[0]; for(i=1;i<=5;i++) { if(min>a[i]) min=a[i]; } return min; }

c语言 输入20个学生成绩

输入20个学生记录(每个学生记录包括学号,性名、性别、年龄、成绩),构成结构体数组,计算所有学生的平均分,找出最高分,找出所有不及格的学生,然后按成绩由高到低的排序结果写入文件中,最后读取文件,输出排序结果

C语言程序编写,简单的工资管理系统

c语言 请编写一个简单的工资管理系统。系统要完成的功能如下:(假定只处理实际工资,员工人数不超过100人) (1) 工资输入(输入 -1 标志输入结束) (2) 工资输出 (3) 查找最高工资 (4) 查找最低工资 (5) 求平均工资 (6) 统计各个工资段的人数及其所占百分比 (>=5000;3000-5000;<3000) (7) 对工资进行排序(输入a:升序;输入d:降序) 要求: (1) 上述的每个功能要求用一个函数来完成,可存储在独立的文件中。 (2) 另编写一个主函数,对这些函数进行调用,用以完成一个较完整的工资管理系统。 (3) 用户界面在功能完成后,自行修改得美观一些。

c语言函数问题使用 函数统计指定数字的个数

我这么写怎么不对,哪里错了? 代码:![图片说明](https://img-ask.csdn.net/upload/201911/16/1573913540_317698.png) 题目:![图片说明](https://img-ask.csdn.net/upload/201911/16/1573913550_756100.png)

C语言输入一个最小值min,输入一个最大值max,求出从最小值每次加1加到最大值的和sum。(例如min=1,max=100,那就是依次求出sum=1+2+3+......+98+99+100)

输入一个最小值min,输入一个最大值max,求出从最小值每次加1加到最大值的和sum。(例如min=1,max=100,那就是依次求出sum=1+2+3+......+98+99+100)

C语言有10个学生,每个学生数据包括学号、姓名和成绩,前8个学生的数据采用初始化,后2个学生键盘输入?

63. 编程题 有10个学生,每个学生数据包括学号、姓名和成绩,前8个学生的数据采用初始化,后2个学生键盘输入。编写一个程序,将这10个学生的信息按成绩由高到低的顺序排序并保存后输出所有学生的全部信息。 请认真测试程序的正确性。将源代码以文本方式提交,不要直接提交文件。

C/C++ char类型指针数组输入问题

# C/C++ char类型指针数组输入问题 数据结构课程设计,要求从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树并将它存于文件hfmTree中.将已在内存中的哈夫曼树以直观的方式(比如树)显示在终端上。 程序代码如下: ```cpp #include <iostream> #include <string.h> #define N 50 #define M 2*N-1 #define MAX 100 using namespace std; typedef struct { char data[5]; int weight; int parent; int lchild; int rchild; }HTNode; typedef struct { char cd[N]; int start; }HCode; void CreatHT(HTNode ht[], int n) { int i,k,lnode,rnode; int min1,min2; for (i=0; i<2*n-1; i++) { ht[i].parent=ht[i].lchild=ht[i].rchild=-1; } for (i=n; i<2*n-1; i++) { min1=min2=32767; lnode=rnode=-1; for (k=0; k<=i-1; k++) { if (ht[k].parent==-1) { if (ht[k].weight<min1) { min2=min1; rnode=lnode; min1=ht[k].weight; lnode=k; } else if (ht[k].weight<min2) { min2=ht[k].weight; rnode=k; } } } ht[lnode].parent=i; ht[rnode].parent=1; ht[i].weight=ht[lnode].weight+ht[rnode].weight; ht[i].lchild=lnode; ht[i].rchild=rnode; } } void CreatHCode(HTNode ht[], HCode hcd[], int n) { int i,f,c; HCode hc; for (i=0; i<n; i++) { hc.start=n; c=i; f=ht[i].parent; while (f!=-1) { if (ht[f].lchild==c) { hc.cd[hc.start--]='0'; } else { hc.cd[hc.start--]='1'; } c=f; f=ht[f].parent; } hc.start++; hcd[i]=hc; } } void DispHCode(HTNode ht[], HCode hcd[], int n) { int i,k; int sum=0,m=0,j; printf("输出哈弗曼编码:\n"); for (i=0; i<n; i++) { j=0; printf(" %s:\t", ht[i].data); for (k=hcd[i].start; k<=n; k++) { printf("%c", hcd[i].cd[k]); j++; } m+=ht[i].weight; sum+=ht[i].weight*j; } printf("\n平均长度=%g\n", 1.0*sum/m); } int main(int argc, const char * argv[]) { // insert code here... int n,i; char *str[MAX];//这里定义了一个指针数组存放哈夫曼编码 int fnum[MAX]; HTNode ht[M]; HCode hcd[N]; printf("输如字符集大小:"); scanf("%d", &n); printf("输入%d个字符:", n); for (i=0; i<n; i++) { scanf("%s", str[i]);//这里的输入应该如何修改? } printf("输入%d个权值:", n); for (i=0; i<n; i++) { scanf("%d", &fnum[i]); } for (i=0; i<n; i++) { strcpy(ht[i].data, str[i]); ht[i].weight=fnum[i]; } CreatHT(ht, n); CreatHCode(ht, hcd, n); DispHCode(ht, hcd, n); return 1; } ``` 有问题的地方已在主函数中注释,其他的函数都是哈夫曼树的基本算法。 困扰许久求大佬解决!

代码僵硬的停在那里,编译器却不认识它

如果一个正整数m的所有小于m的不同因子(包括1)加起来正好等于m本身,那么就被称它为完全数。它是指这样的一些特殊的自然数,它所有的真因子(即除了自身以外的约数)的和,恰好等于它本身。 注意:1没有真因子,所以不是完全数。例如,6就是一个完全数,是因为6 = 1 + 2 + 3。 请编写一个判断完全数的函数IsPerfect(),然后判断从键盘输入的整数是否是完全数。 要求:按如下原型编写判断完全数的函数,若函数返回0,则代表不是完全数,若返回1,则代表是完全数。 int IsPerfect(int x); **要求输入提示信息为: "Input m:\n" **要求输入格式为: "%d" **要求输出格式为 "%d is a perfect number\n" "%d is not a perfect number\n" 注:不能使用指针、结构体、共用体、文件、goto、枚举类型进行编程,主函数不能使用int main和return 0。 代码:#include int main() { int n,k,i,sum; printf("Input m:\n"); scanf("%d",&k); sum=0; while (i<=k) { scanf("%d",&k); if(k%i==0) sum=sum+i; else sum=sum+0; } if(sum==k) printf("%d is a perfect number\n",k); else printf("%d is not a perfect number\n",k); return 0; } 那么问题来了,为什么我的代码有毛病呢? 大神赐教

c语言数据结构 表达式求值

**目的:1)掌握栈的概念与基本操作; 2)掌握文本文件的读写操作。 要求:实现任意加、减、乘、除与括号的表达式求值; 输入输出格式要求如下: 输入文件input.txt内容: 2*(4-100)= 3*5+9/3= 100-20*(4*6/3)= 输出文件output.txt内容(output.txt文件为自动生成,若已存在则覆盖): 2*(4-100)=-192 3*5+9/3=18 100-20*(4*6/3)=-60** 求大神帮帮咯 代码如下,就是不会写文件那部分: #include <stdio.h> #include <stdlib.h> #define MAX 20 //定义第一个栈---作为存放运算数的操作符 struct SNode_Num { int datas[MAX]; int top; }; typedef struct SNode_Num OperateNum; //定义第二个栈---作为存放运算符号的栈 struct SNode_Symbol { char symbol[MAX]; int top; }; typedef struct SNode_Symbol OperateSymbol; /******************************************************************** 描述:定义函数:InitOperandNum,并且初始化运算数栈顶 参数:OperateNum *StackNum 返回值:void ********************************************************************/ void InitOperateNum(OperateNum *StackNum) { StackNum->top = -1; } /******************************************************************** 描述:定义函数: InitOperateSymbol,并且初始化运算符栈顶 参数:OperateSymbol *StackSymbol 返回值:void ********************************************************************/ void InitOperateSymbol(OperateSymbol *StackSymbol) { StackSymbol->top = -1; } /******************************************************************** 描述:定义函数:PushOperateNum, 压一个数到栈顶 参数:OperateNum *StackNum, int x 返回值:void ********************************************************************/ void PushOperateNum(OperateNum *StackNum, int x) { StackNum->top++; StackNum->datas[StackNum->top] = x; } /******************************************************************** 描述:定义函数:PushOperateSymbol,压一个运算符到栈顶 参数:OperateSymbol *StackSymbol, char ch 返回值:void ********************************************************************/ void PushOperateSymbol(OperateSymbol *StackSymbol, char ch) { StackSymbol->top++; StackSymbol->symbol[StackSymbol->top] = ch; } /******************************************************************** 描述:定义函数:PopOperateNum,将运算数从栈中读取出来 参数:OperateNum *StackNum 返回值:返回取出来的数 ********************************************************************/ int PopOperateNum(OperateNum *StackNum) { int num; num = StackNum->datas[StackNum->top]; StackNum->top--; return num; } /******************************************************************** 描述:定义函数:PopOperateSymbol,将运算符从栈中取出来 参数:OperateSymbol *StackSymbol 返回值:返回取出来的符号 ********************************************************************/ char PopOperateSymbol(OperateSymbol *StackSymbol) { char ch; ch = StackSymbol->symbol[StackSymbol->top]; StackSymbol->top--; return ch; } //取出相应的数 int GetOperateNum(OperateNum *StackNum) { return StackNum->datas[StackNum->top]; } //取出相应运算符 char GetOperateSymbol(OperateSymbol *StackSymbol) { return StackSymbol->symbol[StackSymbol->top]; } /******************************************************************** 描述:定义函数, IsOperateSymbolOrNum,判断输入的符号是那些符号 参数:char ch 返回值:有符号返回1,无符号返回0 ********************************************************************/ short IsOperateSymbolOrNum(char ch) { //判断所有需要用的操作符 包括 + - * / ( ) \n if(ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '(' || ch == ')' || ch == '\n') return 1; else return 0; } /******************************************************************** 描述:定义函数: Priority,用于判断符号优先级运算 参数:char inputnum, char ch 返回值:符号的大小的字符 ********************************************************************/ char Priority(char inputnum, char ch) { switch(inputnum) { //加减在同一个优先级上 case '+': case '-': { if(ch == '+' || ch == '-') return '>'; else if(ch == '*' || ch == '/') return '<'; else if(ch == '(') return '<'; else if(ch == ')') return '>'; else return '>'; } break; //乘除在同一优先级 case '*': case '/': { if(ch == '+' || ch == '-') return '>'; else if(ch == '*' || ch == '/') return '>'; else if(ch == '(') return '<'; else if(ch == ')') return '>'; else return '>'; } break; //括号在所有优先级以上 case '(': { if(ch == ')') return '='; else return '<'; } break; case ')': { return '>'; } break; case '\n': { if(ch == '\n') return '='; else return '<'; } break; } } /******************************************************************** 描述:定义函数: Calculate,计算结果 参数:int num1, char ch, int num2 返回值:返回两个数计算的结果result ********************************************************************/ int Calculate(int num1, char ch, int num2) { int result; switch(ch) { case '+': result = num1 + num2; break; case '-': result = num1 - num2; break; case '*': result = num1 * num2; break; case '/': result = num1 / num2; } return result; } /******************************************************************** 描述:定义函数:MainCalc,主要用于获取用户输入,并且进行计算 参数:void 返回值:result ********************************************************************/ int MainCalc() { //主函数进行计算 OperateNum datas; OperateSymbol symbol; int num1, num2, result, num; char ch, sign; InitOperateNum(&datas); InitOperateSymbol(&symbol); //把回车计算的操作符放在栈中 PushOperateSymbol(&symbol, '\n'); ch = getchar(); while((ch != '\n') || (GetOperateSymbol(&symbol) != '\n')) { if(!IsOperateSymbolOrNum(ch)) { num = atoi(&ch); //将字符转换为整数 ch = getchar(); //获取输入 while(!IsOperateSymbolOrNum(ch)) { num = num * 10 + atoi(&ch); ch = getchar(); //当没有输入回车时,继续获取输入 } PushOperateNum(&datas, num); } else { switch(Priority(GetOperateSymbol(&symbol), ch)) { //判断优先级后进行计算 case '<': PushOperateSymbol(&symbol, ch); ch = getchar(); break; case '=': sign = PopOperateSymbol(&symbol); ch = getchar(); //获取输入 break; case '>': sign = PopOperateSymbol(&symbol); num2 = PopOperateNum(&datas); num1 = PopOperateNum(&datas); result = Calculate(num1, sign, num2); PushOperateNum(&datas, result); break; } } } result = GetOperateNum(&datas); return result; } int main(int argc, char *argv[]) { int result; printf("请输入运算式:\n"); result = MainCalc(); printf("结果为:\n"); printf("%d\n", result); //输出结果 return 0; }

图的最短路径算法的实现

设计内容: 设计校园平面图,所含景点不少于8个。以图中顶点表示学校内各景点,存放景点的名称、景点介绍信息等;以边表示路径,存放路径长度信息。要求将这些信息保存在文件graph.txt中,系统执行时所处理的数据要对此文件分别进行读写操作。 1.从文件graph.txt中读取相应数据, 创建一个图,使用邻接矩阵表示图 ; 2.景点信息查询:为来访客人提供校园任意景点相关信息的介绍; 3.问路查询:为来访客人提供校园任意两个景点之间的一条最短路径 。 选做内容(对文件进行操作,相应信息变化后,再次进行景点信息查询和问路查询时应该有所体现) 1. 修改一个已有景点的相关信息; 2. 增加一个新景点及其相关信息; 3. 增加一条新的路径; 4. 删除一个景点及其相关信息; 5. 删除一条路径。 设计提示: 1. 校园道路是双向通行的,可设校园平面图是一个带权的无向图,用邻接矩阵表示此无向网。 typedef struct{ char name[100]; char info[10000]; }VertexType; //顶点结构 typedef struct{ VertexType vexs[10]; int arcs[100][100];//邻接矩阵 int vexnum,arcnum;//顶点个数,边的个数 }MGraph; //图结构 2. 将图的顶点信息和边的信息用数据文件graph.txt存储,数据文件格式可以设置如下形式: 图中顶点数 边的数目 景点名称 景点信息 始点 终点 路径长度 如可以在文件graph.txt中存储以下数据: 8 15 女生宿舍 有南北两栋,6层 南门 经青春大道通往学校北门 …… 正门 主楼 80 正门 图书馆 400 …… 程序运行的参考结果下图(仅供参考): 设计要求: (1) 程序要具在一定的健壮性,即当输入数据非法时,程序也能适当地做出反应。 (2) 程序要添加适当的注释,程序的书写要采用缩进格式。 (3) 根据实验报告模板详细书写实验报告,在实验报告中给出校园平面图。 (4) 校园平面图中的校园景点信息保存在文件graph.txt中。

求助:c++随机数四则运算10题程序

```/* 包含头文件 */ using namespace std; int CreatingExpression(int & a, int &b, char &op) ; bool ValidatingUserAnswer(int a, int b, char op, int answer) ; /*函数功能:对两整型数进行加、减、乘、除四则运算 函数参数: 整型变量a、b分别表示参加运算的两个操作数 整型变量op表示运算类型 函数返回值:当用户输入的答案与结果相同时,返回值为 1, 否则返回值为 0 */ 程序模板 int main() { const int NUMBER = 10; //出题总数为10 // 设置随机数种子 //调用其它函数完成程序 //to do //cout << "you got "<<right_answer * 10<<" scores, you made "<<10-right_answer<<" mistakes."; //to do } /*加入返回值类型*/ CreatingExpression ( /*加入参数声明*/ ) { int int_op = 0; const int LARGEST = 10; // 操作数的最大值 // 在此加入生成1~ LARGEST之间的随机数 a 的代码; // 在此加入生成 1~ LARGEST之间的随机数 b 的代码; // 在此加入生成1~4之间的随机数 int_op 的代码; switch(int_op) { case 1: op = '+'; answer = a+b; break; case 2: op = ‘-’ ; /* 在此加入处理 a<b 情况的代码,以保证a-b>=0; */ //to do others; case 3: op = '*'; // to do case 4: op = '/'; /* 在此加入处理 除数b == 0 或者 a不能被b整除情况的代码 */ // to do others } // 返回答案 } /*加入返回值类型*/ ValidatingUserAnswer ( /* 加入参数声明 */ ) { //请使用下面的输出语句输出信息 // cout << a <<op<<b <<"="; //cout<<"Right!" <<endl; //cout<<"Not correct!"<<endl; //to do //返回值 } ```

请问error LNK2019 和fatal error LNK1120该怎么解决啊

1>kcsj.obj : error LNK2019: 无法解析的外部符号 "void __cdecl Menu(void)" (?Menu@@YAXXZ),该符号在函数 "void __cdecl InfoOutput(int,int,int)" (?InfoOutput@@YAXHHH@Z) 中被引用 1>D:\课程设计\kcsj\x64\Debug\kcsj.exe : fatal error LNK1120: 1 个无法解析的外部命令 ![图片说明](https://img-ask.csdn.net/upload/201907/09/1562638419_230161.png) 请问这是什么问题 该怎么解决啊 下面是源代码: # include < conio.h > # include < iostream > using namespace std; # define M 20 //男子项目个数 # define W 20 //女子项目个数 # define N 20 //学校个数 # define NULL 0 void Menu(); //函数声明 typedef struct { char proname[10]; //项目名称 int pronum; //项目编号 int top; //取前3名或前5名积分,由用户自己定义 int range[5]; //名次 int mark[5]; //分数 }Pronode; typedef struct { char schname[20]; //学校名称 int schnum; //学校编号 int score; //总分 int Mscore; //男团体总分 int Wscore; //女团体总分 Pronode a[M+W]; //项目数组 }Schnode; Schnode s[N]; void Head() //头菜单界面 { cout<<" *************************************************"<<endl; cout<<" ***** 欢迎使用 *****"<<endl; cout<<" ***** 运动会分数统计系统 *****"<<endl; cout<<" *************************************************"<<endl; cout<<endl; } void MainMenu() //主菜单界面 { cout<<" *************************************************"<<endl; cout<<" ***** 主菜单 *****"<<endl; cout<<" *************************************************"<<endl; cout<<" ***** 1.输入信息 *****"<<endl; cout<<" ***** 2.输出信息 *****"<<endl; cout<<" ***** 3.查询信息 *****"<<endl; cout<<" ***** 4.调用信息 *****"<<endl; cout<<" ***** 5.关 于 *****"<<endl; cout<<" ***** 6.退出系统 *****"<<endl; cout<<" *************************************************"<<endl; cout<<" ***** 注:第一次运行本程序时请选择1号功能 *****"<<endl; cout<<" *************************************************"<<endl; } void SubMenu() //总分显示菜单界面 { cout<<" *************************************************"<<endl; cout<<" ***** 运动会总分显示菜单 *****"<<endl; cout<<" *************************************************"<<endl; cout<<" ***** 1.按学校名称输出 *****"<<endl; cout<<" ***** 2.按学校总分输出 *****"<<endl; cout<<" ***** 3.按男团总分输出 *****"<<endl; cout<<" ***** 4.按女团总分输出 *****"<<endl; cout<<" ***** 5.退出返回主菜单 *****"<<endl; cout<<" ***** 6.直接退出本系统 *****"<<endl; cout<<" *************************************************"<<endl; } void InitSch() //初始化信息 { int i; for(i=0;i<N;i++) { s[i].score=0; s[i].Mscore=0; s[i].Wscore=0; } } void InfoInput(int n,int m,int w) //信息输入模块 { int i,j,k,p; InitSch(); //初始化信息 for(i=0;i<n;i++) //输入学校信息 { cout<<" 学校名称:"; cin>>s[i].schname; cout<<" 学校编号:"; cin>>s[i].schnum; for(j=0;j<m+w;j++) //输入各学校内项目信息 { cout<<" 项目名称:"; cin>>s[i].a[j].proname; cout<<" 项目编号:"; cin>>s[i].a[j].pronum; cout<<" 取前3名还是前5名:"; cin>>s[i].a[j].top; cout<<" 此项目获得的名次个数:"; cin>>k; for(p=0;p<5;p++) //初始化排名和分数 { s[i].a[j].range[p]=0; s[i].a[j].mark[p]=0; } for(p=0;p<k;p++) //输入所获名次信息 { cout<<" 名次:"; cin>>s[i].a[j].range[p]; if(s[i].a[j].top==3) //匹配各名次对应的分数 { switch(s[i].a[j].range[p]) { case 0: s[i].a[j].mark[p]=0; break; case 1: s[i].a[j].mark[p]=5; break; case 2: s[i].a[j].mark[p]=3; break; case 3: s[i].a[j].mark[p]=2; break; } } else { switch(s[i].a[j].range[p]) { case 0: s[i].a[j].mark[p]=0; break; case 1: s[i].a[j].mark[p]=7; break; case 2: s[i].a[j].mark[p]=5; break; case 3: s[i].a[j].mark[p]=3; break; case 4: s[i].a[j].mark[p]=2; break; case 5: s[i].a[j].mark[p]=1; break; } } s[i].score=s[i].score+s[i].a[j].mark[p]; //统计学校总分 if(j<=m-1) s[i].Mscore=s[i].Mscore+s[i].a[j].mark[p]; //统计男团总分 else s[i].Wscore=s[i].Wscore+s[i].a[j].mark[p]; //统计女团总分 } cout<<endl; } } } void Output(int b[],int n) //输出各学校运动会分数信息 { int i; for(i=0;i<n;i++) { cout<<" 学校名称:"<<s[b[i]].schname<<endl; cout<<" 学校编号:"<<s[b[i]].schnum<<endl; cout<<" 学校总分:"<<s[b[i]].score<<endl; cout<<" 男团总分:"<<s[b[i]].Mscore<<endl; cout<<" 女团总分:"<<s[b[i]].Wscore<<endl; cout<<endl; } system("pause"); //程序暂停,以显示结果 system("cls"); //清屏 } void InfoOutput(int n,int m,int w) //信息输出模块 { FILE *fp; int number,i,j,k,b[N]; if((fp=fopen("sport.txt","r"))==NULL) //以读方式打开文本文件 //并判定能否正常打开 { cout<<" 文件打不开!"<<endl; //不能正常打开文件的处理 exit(0); //调用函数exit终止程序运行 } while(1) { Head(); //头菜单界面 SubMenu(); //总分显示菜单界面 cout<<" 请选择:"; cin>>number; switch(number) { case 1: //按学校名称输出 system("cls"); Head(); //头菜单界面 cout<<" 运动会各学校信息按学校名称输出如下:"<<endl; for(i=0;i<n;i++) //输出各学校运动会分数信息 { cout<<" 学校名称:"<<s[i].schname<<endl; cout<<" 学校编号:"<<s[i].schnum<<endl; cout<<" 学校总分:"<<s[i].score<<endl; cout<<" 男团总分:"<<s[i].Mscore<<endl; cout<<" 女团总分:"<<s[i].Wscore<<endl; cout<<endl; } system("pause"); //程序暂停,以显示结果 system("cls"); //清屏 break; case 2: //按学校总分输出 system("cls"); Head(); //头菜单界面 cout<<" 运动会各学校信息按学校总分输出如下:"<<endl; for(i=0;i<n;i++) //冒泡排序,用辅助数组记住学校结点的下标 b[i]=i; for(i=0;i<n;i++) { for(j=i+1;j<n;j++) { if(s[b[i]].score < s[j].score) { k=b[i]; b[i]=b[j]; b[j]=k; } } } Output(b,n); //按所记下标的顺序输出各学校运动会分数信息 break; case 3: //按男团总分输出 system("cls"); Head(); cout<<" 运动会各学校信息按男团总分输出如下:"<<endl; for(i=0;i<n;i++) //冒泡排序,用辅助数组记住学校结点的下标 b[i]=i; for(i=0;i<n;i++) { for(j=i+1;j<n;j++) { if(s[b[i]].Mscore < s[j].Mscore) { k=b[i]; b[i]=b[j]; b[j]=k; } } } Output(b,n); //按所记下标的顺序输出各学校运动会分数信息 break; case 4: //按女团总分输出 system("cls"); Head(); cout<<" 运动会各学校信息按女团总分输出如下:"<<endl; for(i=0;i<n;i++) //冒泡排序,用辅助数组记住学校结点的下标 b[i]=i; for(i=0;i<n;i++) { for(j=i+1;j<n;j++) //n m w ???? { if(s[b[i]].Wscore < s[j].Wscore) { k=b[i]; b[i]=b[j]; b[j]=k; } } } Output(b,n); //按所记下标的顺序输出各学校运动会分数信息 break; case 5: //退出返回主菜单 system("cls"); Menu(); break; case 6: //退出系统 exit(0); default: cout<<" 对不起,无此功能,请输入正确的功能序号!"<<endl; system("pause"); system("cls"); InfoOutput(n,m,w); break; } } fclose(fp); //关闭文件 } void BMenu() //信息查询界面 { cout<<" *************************************************"<<endl; cout<<" ***** 1.按学校编号查询 *******"<<endl; cout<<" ***** 2.按项目编号查询 *******"<<endl; cout<<" ***** 3.退出返回主菜单 *******"<<endl; cout<<" ***** 4.直接退出本系统 *******"<<endl; cout<<" *************************************************"<<endl; } void Inquiry(int n,int m,int w) //信息查询模块 { int number,i,j,k,y; while(1) { Head(); BMenu(); cout<<" 请选择查询方式:"; cin>>number; switch(number) { case 1: //按学校编号查询 system("cls"); Head(); cout<<" 要查询的学校编号:"; cin>>i; if(i>n) //学校编号超出范围,输出提示信息 cout<<" 这个学校没有参加此次运动会!"<<endl; else { cout<<" 要查询的项目编号:"; cin>>j; if(j>m+w || j==0) //项目编号超出范围,输出提示信息 cout<<" 此次运动会没有这个项目!"<<endl; else //输出要查询学校项目的成绩 { cout<<" 这个项目取前"<<s[0].a[j-1].top<<"名,该学校的成绩如下:"<<endl; for(k=0;k<5;k++) { if(s[i-1].a[j-1].range[k]!=0) cout<<" 名次:"<<s[i-1].a[j-1].range[k]; if(s[i-1].a[j-1].mark[k]!=0) cout<<" 分数:"<<s[i-1].a[j-1].mark[k]<<endl; } } } system("pause"); system("cls"); break; case 2: //按项目编号查询 system("cls"); Head(); cout<<" 要查询的项目编号:"; cin>>y; if(y>m+w || y==0) //项目编号超出范围,输出提示信息 cout<<" 此次运动会没有这个项目!"<<endl; else //输出该项目取得名次的学校的成绩 { cout<<" 该项目取前"<<s[0].a[y-1].top<<"名,取得该名次的学校:"<<endl; for(i=0;j<n;i++) for(j=0;j<5;j++) { if(s[i].a[y-1].range[j]!=0) cout<<" 学校名称:"<<s[i].schname<<" 学校编号:"<<s[i].schnum<<" 名次:"<<s[i].a[y-1].range[j]; if(s[i].a[y-1].mark[j]!=0) cout<<" 分数:"<<s[i].a[y-1].mark[j]<<endl; } } system("pause"); system("cls"); break; case 3: //退出返回主菜单 system("cls"); Menu(); break; case 4: //退出系统 exit(0); default: cout<<" 对不起,无此功能,请输入正确的功能序号!"<<endl; system("pause"); system("cls"); Inquiry(n,m,w); break; } } } void About() //“关于”界面 { cout<<" 啦啦啦"<<endl; } void fsave() //保存信息,即将信息写入文件里 { FILE *fp; if((fp=fopen("sport.txt","w"))==NULL) //以写方式打开文本文件 //并判定能否正常打开 { cout<<" 文件打不开!"<<endl; //不能正常打开文件的处理 exit(0); //调用函数exit终止程序运行 } fwrite(s, sizeof(Schnode), N, fp); //调用文件数据块写函数将信息写进文件里 fclose (fp); //关闭文件 } void Read() //调用信息模块 { FILE *fp; int i,j,m; if((fp=fopen("sport.txt","r"))==NULL) //以读方式打开文本文件 //并判定能否正常打开 { cout<<" 文件打不开!"<<endl; //不能正常打开文件的处理 exit(0); //调用函数exit终止程序运行 } fread(s, sizeof(Schnode), N, fp); //调用文件数据块读函数将信息从文件里读出 for(i=0;i<N;i++) //将读出的信息输出 { cout<<" 学校名称:"<<s[i].schname<<endl; cout<<" 学校编号:"<<s[i].schnum<<endl; for(j=0;j<M+W;j++) { cout<<" 项目名称:"<<s[i].a[j].proname<<endl; cout<<" 项目编号:"<<s[i].a[j].pronum<<endl; cout<<" 取前3名还是前5名:"<<s[i].a[j].top<<endl; for(m=0;m<5;m++) { fread(&s[i].a[j].range[m],sizeof(int),1,fp); if(s[i].a[j].range[m]!=0) cout<<" 名次:"<<s[i].a[j].range[m]; fread(&s[i].a[j].mark[m],sizeof(int),1,fp); if(s[i].a[j].mark[m]!=0) cout<<" 分数:"<<s[i].a[j].mark[m]<<endl; } cout<<endl; } } fclose(fp); //关闭文件 } void Menu(int n,int m,int w) //主菜单函数 { int number; do { Head(); MainMenu(); cout<<" 请选择:"; cin>>number; switch(number) { case 1: //输入信息 system("cls"); Head(); cout<<" 请输入运动会各学校信息:"<<endl; InfoInput(n,m,w); //信息输入模块 fsave(); //保存信息 system("cls"); break; case 2: //输出信息 system("cls"); InfoOutput(n,m,w); //信息输出模块 break; case 3: //查询信息 system("cls"); Inquiry(n,m,w); //信息查询模块 break; case 4: //调用信息 system("cls"); Head(); Read(); //调用信息模块 system("pause"); system("cls"); break; case 5: //“关于”模块 system("cls"); Head(); About(); //“关于”界面 system("pause"); system("cls"); break; case 6: //退出系统 system("cls"); Head(); cout<<" 谢谢使用!"<<endl; exit(0); default: //其他 cout<<" 对不起,无此功能,请输入正确的功能序号!"<<endl; system("pause"); system("cls"); break; } }while(1); } void main() //主函数 { int n,m,w; cout<<"学校个数:"; cin>>n; cout<<"男子项目个数:"; cin>>m; cout<<"女子项目个数:"; cin>>w; Menu(n,m,w); //主菜单函数 }

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《Oracle Java SE编程自学与面试指南》最佳学习路线图2020年最新版(进大厂必备)

正确选择比瞎努力更重要!

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

都前后端分离了,咱就别做页面跳转了!统统 JSON 交互

文章目录1. 无状态登录1.1 什么是有状态1.2 什么是无状态1.3 如何实现无状态1.4 各自优缺点2. 登录交互2.1 前后端分离的数据交互2.2 登录成功2.3 登录失败3. 未认证处理方案4. 注销登录 这是本系列的第四篇,有小伙伴找不到之前文章,松哥给大家列一个索引出来: 挖一个大坑,Spring Security 开搞! 松哥手把手带你入门 Spring Security,别再问密...

字节跳动面试官竟然问了我JDBC?

轻松等回家通知

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

阿里面试官让我用Zk(Zookeeper)实现分布式锁

他可能没想到,我当场手写出来了

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

2020春招面试了10多家大厂,我把问烂了的数据库事务知识点总结了一下

2020年截止目前,我面试了阿里巴巴、腾讯、美团、拼多多、京东、快手等互联网大厂。我发现数据库事务在面试中出现的次数非常多。

爬虫(101)爬点重口味的

小弟最近在学校无聊的很哪,浏览网页突然看到一张图片,都快流鼻血。。。然后小弟冥思苦想,得干一点有趣的事情python 爬虫库安装https://s.taobao.com/api?_ks...

在拼多多上班,是一种什么样的体验?我心态崩了呀!

之前有很多读者咨询我:武哥,在拼多多上班是一种什么样的体验?由于一直很忙,没抽出时间来和大家分享。上周末特地花点时间来写了一篇文章,跟大家分享一下拼多多的日常。 1. 倒时差的作息 可能很多小伙伴都听说了,拼多多加班很严重。这怎么说呢?作息上确实和其他公司有点区别,大家知道 996,那么自然也就能理解拼多多的“11 11 6”了。 所以当很多小伙伴早上出门时,他们是这样的: 我们是这样的: 当...

应聘3万的职位,有必要这么刁难我么。。。沙雕。。。

又一次被面试官带到坑里面了。面试官:springmvc用过么?我:用过啊,经常用呢面试官:springmvc中为什么需要用父子容器?我:嗯。。。没听明白你说的什么。面试官:就是contr...

太狠了,疫情期间面试,一个问题砍了我5000!

疫情期间找工作确实有点难度,想拿到满意的薪资,确实要点实力啊!面试官:Spring中的@Value用过么,介绍一下我:@Value可以标注在字段上面,可以将外部配置文件中的数据,比如可以...

自学编程的 6 个致命误区

嗨,小伙伴们大家好,我是沉默王二。本篇文章来和大家聊聊自学编程中的一些误区——这是我在 B 站上看了羊哥的一期视频后有感而发的文章。因为确实有很多读者也曾私信问过我这些方面的问题,很有代表性,所以我就结合自己的亲身体会来谈一谈,希望对小伙伴们有所启发。 01、追求时髦 所谓基础不牢,地动山摇啊。可很多小伙伴压根就没注意过这个问题,市面上出什么新鲜的技术就想去尝试,结果把自己学的乱七八糟,心灰意冷...

立即提问
相关内容推荐