luminse 2023-03-06 19:41 采纳率: 80%
浏览 18
已结题

请问代码最后的stud[i].score[0]为什么要加[0]?


#include<stdio.h> 
#include<stdlib.h> 
#include<string.h> //字符串处理  
#include<windows.h> 
int n=4; 
struct student 
{ 
int num; //学号 
char name[10]; //名字 
float score[3]; //成绩 
}stud[100];
int i,choose,a,t=0; 
long int num;
 
int main () 
{ 
void save(void); 
void input(void); 
void output(void); 
void scoremodify();
void namemodify(); 
void scorecheck();
void namecheck(); 
void Addstudent(); 
void sclsearch(); 
while(1) 
{ 
printf(" ********************************************************* \n"); 
printf("  >>欢迎进入学生成绩记录系统<< \n");
printf(" 【1】-------------------------- 创建学生成绩信息 \n");
printf(" 【2】-------------------------- 显示所有学生成绩信息 \n");
printf(" 【3】-------------------------- 添加学生成绩信息 \n");
printf(" 【4】-------------------------- 按学号查询学生成绩信息 \n");
printf(" 【5】-------------------------- 按姓名查询学生成绩信息 \n");
printf(" 【6】-------------------------- 按学号修改学生的成绩 \n");
printf(" 【7】-------------------------- 按姓名修改学生的成绩 \n");
printf(" 【8】-------------------------- 按分数段显示学生的信息 \n");
printf(" 【0】-------------------------- 退出 \n");
printf(" ********************************************************* \n");
printf(" 请输入相应菜单编号: ");
scanf("%d",&a);
switch(a)
{ 
case 1: 
input(); //输入 
save(); //保存 
break; 
case 2: 
output(); //输出 
printf("\n"); 
system("PAUSE"); 
system("CLS"); //清屏 
break; 
case 3: 
Addstudent(); 
printf("\n"); 
system("PAUSE"); 
system("CLS"); 
break; 
case 4: 
scorecheck(); 
printf("\n"); 
system("PAUSE"); 
system("CLS"); 
break;
case 5: 
namecheck(); 
printf("\n"); 
system("PAUSE"); 
system("CLS"); 
break; 
case 6: 
scoremodify(); 
printf("\n"); 
system("PAUSE"); 
system("CLS"); 
break;
case 7: 
namemodify(); 
printf("\n"); 
system("PAUSE"); 
system("CLS"); 
break;  
case 8: 
sclsearch(); 
printf("\n"); 
system("PAUSE"); 
system("CLS"); 
break;
case 0:exit(0); 
default: ; 
} 
} 
return 0; 
} 

void save() 
{ 
FILE *fp; 
if ((fp=fopen("stu.dat","wb"))==NULL)/*以只写的方式打开文件*/   
{ 
printf("无法打开文件!\n"); 
return ; 
} 
for(i=0;i<n;i++) 
if (fwrite (&stud[i],sizeof(struct student),1,fp)!=1)/*写入字节为 1 的信息在文件中*/ 
printf("文件写入错误!\n"); 
fclose(fp);/*关闭文件*/ 
} 
void input()//录入学生成绩
{ 
int i; 
char a; 
for(i=0;i<n;i++) 
{ 
printf("\n 请输入学生成绩信息:\n"); 
printf("\n 请依次输入 学号 姓名 c语言成绩:\n"); 
scanf("%d%s%f",&stud[i].num,stud[i].name,&stud[i].score[0]); 
printf("输入:y(继续),n(终止)!\n"); 
fflush(stdin);   //清除输入缓存 
scanf("%c",&a); 
if(a=='n' || a=='N') 
break; 
} 
n=i+1; 
} 
void Addstudent() 
{ 
FILE *fp; 
struct student s; 
fp=fopen("stu.dat","ab"); 
if((fp=fopen("stu.dat","ab"))==NULL) 
printf("File open error!\n"); 
else 
{ 
printf("请输入所增加学生的 学号 姓名 c语言成绩:\n"); 
scanf("%d",&s.num ); 
scanf("%s",s.name); 
scanf("%f",&s.score[0]); 
fwrite (&s,sizeof(struct student),1,fp); 
fclose(fp);/*关闭文件*/ 
} 
printf("写入成功!\n"); 
}//end function Addstudent; 
void output() 
{ 
int i; 
//float s; 
FILE *fp; 
if((fp=fopen("stu.dat","rb"))==NULL) 
{ 
printf("cannot open file\n"); 
exit(0); 
} 
printf("\n 学号 姓名 c语言成绩\n"); 
for(i=0;fread(&stud[i],sizeof(struct student),1,fp)==1;i++) 
{ 
printf("%d %10s % 10.2f\n",stud[i].num,stud[i].name,stud[i].score[0]); 
} 
fclose(fp); 
n=i; 
} 
void scoremodify() 
{ 
int number,i; 
printf("请输入要修改信息的学生学号:"); 
scanf("%d",&number); 
for(i=0;i<n;i++) 
if(number==stud[i].num) 
break;/*查找判断*/ 
if(i<n)/*查找判断*/ 
{ 
printf("请输入修改后的学生的信息:"); 
printf("\n 请输入学生的 c语言成绩:"); 
scanf("%f",&stud[i].score[0]);
printf("\n学号 姓名 c语言成绩\n");
printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]); 
save(); 
} 
else 
printf("没找到该学生的信息\n"); 
system("pause");system("cls"); 
} 
void namemodify() 
{ 
int i;
char name[10];
printf("请输入要修改信息的学生姓名:"); 
scanf("%s",&name); 
for(i=0;i<n;i++) 
if(strcmp(stud[i].name,name)==0) 
break;/*查找判断*/ 
if(i<n)/*查找判断*/ 
{ 
printf("请输入修改后的学生的信息:"); 
printf("\n 请输入学生的 c语言成绩:"); 
scanf("%f",&stud[i].score[0]);
printf("\n学号 姓名 c语言成绩\n");
printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]); 
save(); 
} 
else 
printf("没找到该学生的信息\n"); 
system("pause");system("cls"); 
} 
void namecheck() 
{ 
char name[10]; 
printf("按照姓名查询请按\n"); 
printf("\n 请输入姓名:"); 
scanf("%s",&name); 
printf("查询结果\n"); 
printf("学号 姓名 c语言成绩\n");
for(i=0;i<n;i++)
if(strcmp(stud[i].name,name)==0) 
{ 
printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]); 
} 
} 
void scorecheck() 
{ 
int b; 
printf("按照学号查询请按\n"); 
{ 
printf("\n 请输入学号:"); 
scanf("%d",&b); 
printf("查询结果\n"); 
printf("学号 姓名 c语言成绩\n"); 
for(i=0;i<n;i++) 
if(stud[i].num ==b) 
{ 
printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]); 
} 
} 
} 
void sclsearch() 
{ 
int i; 
printf("90 分以上:\n"); 
printf("学号 姓名 c语言成绩\n"); 
for(i=0;i<n;i++) 
{ 
if(stud[i].score[0]>=90) 
printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]); 
} 
printf("80~89:\n"); 
printf("学号 姓名 c语言成绩\n"); 
for(i=0;i<n;i++) 
{ 
if(stud[i].score[0]>=80&&stud[i].score[0]<90) 
printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]); 
} 
printf("70~79:\n"); 
printf("学号 姓名 c语言成绩\n"); 
for(i=0;i<n;i++) 
{ 
if(stud[i].score[0]>=70&&stud[i].score[0]<80) 
printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]); 
} 
printf("60~69:\n"); 
printf("学号 姓名 c语言成绩\n"); 
for(i=0;i<n;i++) 
{ 
if(stud[i].score[0]>=60&&stud[i].score[0]<70) 
printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]); 
} 
printf("60 分以下:\n"); 
printf("学号 姓名 c语言成绩\n"); 
for(i=0;i<n;i++) 
{ 
if(stud[i].score[0]<60) 
printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]); 
} 
}
  • 写回答

2条回答 默认 最新

  • Huazie 全栈领域优质创作者 2023-03-06 19:46
    关注

    这里 你只输入 一个c语言成绩, stud[i].score[0] 这里就是 取结构体中 成绩数组 的 第一个元素

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月14日
  • 已采纳回答 3月6日
  • 创建了问题 3月6日

悬赏问题

  • ¥15 Centos7 / PETGEM
  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗