标题:帮忙看看有什么问题 修改一下 谢谢 运行不出来
只看楼主
看了就看了
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2019-12-31
 问题点数:0 回复次数:4 
帮忙看看有什么问题 修改一下 谢谢 运行不出来
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
//提示菜单
void Menu()
{
puts("\t\t 欢迎进入学生体育成绩管理系统 ");
puts("\t\t1-----对学生体育成绩进行处理");
puts("\t\t2-----查询");
puts("\t\t3-----统计");
puts("\t\t4-----输出");
puts("\t\t5-----退出");
puts("\t\t----请选择----");
}
void Menu0()
{
puts("\t\t----欢迎进入学生体育成绩录入系统----");
puts("\t\t请依次输入每个学生的学号,姓名,性别,跳远、握力、跑步这三方面成绩");
puts("\t\t----请输入----");
}
void Menu1()//学生成绩处理
{
puts("-------欢迎进入成绩处理子系统------");
puts("\t\t1---计算出每个学生的总成绩");
puts("\t\t2---计算出每个学生的平均成绩");
puts("\t\t3---按学生的总成绩排序");
puts("\t\t4---返回");
puts("\t\t----请选择----");
}
void Menu2()//学生成绩查询
{
puts("------欢迎进入成绩查询子系统-----");
puts("\t\t1---按学科查询");
puts("\t\t2---按学号进行查询");
puts("\t\t3---返回");
puts("\t\t----请选择----");
}
void Menu3()//查询测评的结果
{
puts("\t\t---欢迎进入学生体育成绩测评查询子系统----");
puts("\t\t---请按下面方式查询测评的结果:");
puts("\t\t---查询跳远测评结果请按'0'");
puts("\t\t---查询握力测评结果请按'1'");
puts("\t\t---查询跑步测评结果请按'2'");
puts("\t\t---查询综合测评结果请按'3'");
puts("\t\t---返回请按'4'");
puts("\t\t---请选择---");
}
//结构体定义
typedef struct student
{
char xuehao[15];
char name[10];
char sex;
int score[3];
int sum;
double aver;
}STUDENT;
//各个子函数
void Shuru(STUDENT stu[],int n)//输入信息
{ int i,j;
for(i=0;i<n;i++)
{
scanf("%s",&stu[i].xuehao);
scanf("%s",&stu[i].name);
scanf(" %c",&stu[i].sex);//请以单个字符的形式输入性别
for(j=0;j<3;j++)
{
scanf("%d",&stu[i].score[j]);
}
}
}
void Xieru(STUDENT stu[],int n)//将学生信息写入文件
{
FILE *fp;
int i,j;
fp=fopen("G://ABC.txt","w+");
fprintf(fp,"学号\t\t姓名\t\t性别\t\t跳远\t\t握力\t\t跑步\n");
for(i=0;i<n;i++)
{
fprintf(fp,"%s\t",stu[i].xuehao);
fprintf(fp,"%s\t\t",stu[i].name);
fprintf(fp,"%c\t\t",stu[i].sex);
for(j=0;j<3;j++)
{
fprintf(fp,"%d\t\t",stu[i].score[j]);
}
fprintf(fp,"\n");
}
fclose(fp);
}
void Sum(STUDENT stu[],int n)//求每位学生的总分
{
int i,j;
for(i=0;i<n;i++)
{
stu[i].sum=0;
for(j=0;j<3;j++)
{
stu[i].sum=stu[i].sum+stu[i].score[j];
}
}
for(i=0;i<n;i++)
{
printf("%s%6s%4d\n",
stu[i].xuehao,
stu[i].name,
stu[i].sum);
}
}
void Average(STUDENT stu[],int n)//求每位学生的平均成绩
{
int i;
for(i=0;i<n;i++)
{
stu[i].aver=(double)stu[i].sum/3;
}
for(i=0;i<n;i++)
{
printf("%s%6s\t%4.2lf\n",
stu[i].xue


hao,
stu[i].name,
stu[i].aver);
}
}
double Ave_stu(STUDENT *s,char *no,int n)
{
double average,sum=0;
int i,j;
for(i=0;i<n;i++)
if(strcmp(s[i].xuehao,no)==0)
break;
for(j=0;j<3;j++)
sum+=s[i].score[j];
average=sum/3;
return average;
}
void Paixu(STUDENT stu[],int n)//按学生的总成绩排序
{
STUDENT studentx={"92839283","zhlas",'f',{45,76,83}};
int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(stu[j].sum>stu[i].sum)
{
k=j;
}
}
if(k!=i)
{
studentx=stu[i];
stu[i]=stu[k];
stu[k]=studentx;
}
}
for(i=0;i<n;i++)
{
printf("%16s%10s\t%c",stu[i].xuehao,
stu[i].name,
stu[i].sex);
for(j=0;j<3;j++)
printf("%4d\t",stu[i].score[j]);
printf("%4d\t%4.2lf\n",
stu[i].sum,
stu[i].aver);
}
}
double Ave_course(STUDENT *s,int course_num,int n)//某门课的平均成绩
{double sum=0,average;
int i;
for(i=0;i<n;i++)
sum+=s[i].score[course_num-1] ;
average=sum/n;
return average;
}
void Dis_course(STUDENT *s)//输出某位学生的体育成绩信息
{
int i;
printf("学号%s\t姓名%s\t性别%c\t",s->xuehao,s->name,s->sex);
for(i=0;i<3;i++)
{
printf("%d\t",s->score[i]);
}
printf("总分%d",s->sum);
}
void Shuchu(STUDENT stu[],int n)//输出所有学生的体育成绩信息
{
int i,j;
puts("学号\t\t姓名\t性别\t跳远\t握力\t跑步\t总分\t平均分");
for(i=0;i<n;i++)
{
printf("%s\t%s\t%c\t",
stu[i].xuehao,
stu[i].name,
stu[i].sex);
for(j=0;j<3;j++)
{
printf("%d\t",stu[i].score[j]);
}
printf("%d\t%.2lf\t",stu[i].sum,
stu[i].aver);
printf("\n");
}
}
void Tongji(STUDENT stu[],int n,int k)//按某门课对所有学生的体育成绩评价
{
int i;
int a=0,b=0,c=0,d=0,e=0;
for(i=0;i<n;i++)
{
if((stu[i].score[k]>=90)&&(stu[i].score[k]<=100))
a++;
else if((stu[i].score[k]>=80)&&(stu[i].score[k]<90))
b++;
else if((stu[i].score[k]>=70)&&(stu[i].score[k]<80))
c++;
else if((stu[i].score[k]>=60)&&(stu[i].score[k]<70))
d++;
else
e++;
}
printf("测评结果如下:\n");
printf("该科优秀人数:%d\n",a);
printf("该科良好人数:%d\n",b);
printf("该科中等人数:%d\n",c);
printf("该科及格人数:%d\n",d);
printf("该科不及格人数:%d\n",e);
}
void Zongping(STUDENT stu[],int n)//按总成绩进行评价
{
int i;
int a=0,b=0,c=0,d=0,e=0;
for(i=0;i<n;i++)
{
if((stu[i].sum>=270)&&(stu[i].sum<=300))
a++;
else if((stu[i].sum>=240)&&(stu[i].sum<270))
b++;
else if((stu[i].sum>=210)&&(stu[i].sum<240))
c++;
else if((stu[i].sum>=180)&&(stu[i].sum<210))
d++;
else
e++;
}
printf("测评结果如下:\n");
printf("优秀人数:%d\n",a);
printf("良好人数:%d\n",b);
printf("中等人数:%d\n",c);
printf("及格人数:%d\n",d);
printf("不及格人数:%d\n",e);
}
//主函数



void main()
{
STUDENT stu[40];
char stu_no[20];
int n,i;
int choice1,choice2,choice3,course_no;
Menu();
printf("请输入你要输入的学生的人数:\n");
scanf("%d",&n);
printf("请输入每个学生的相关信息:\n");
Menu0();
getchar();
Shuru(stu,n);
Xieru(stu,n);
Sum(stu,n);
Average(stu,n);
system("cls");
printf("可以按下面步骤可以对学生体育成绩进行处理和查询:\n");
Menu();
while(12)
{
scanf("%d",&choice1);
switch(choice1)
{
case 1:
system("cls");
Menu1();
while(8)
{
scanf("%d",&choice2);
switch(choice2)
{
case 1:
Sum(stu,n);
getchar();getch();
system("cls");
Menu1();
break;
case 2:
Average(stu,n);
getchar();getch();
system("cls");
Menu1();
break;
case 3:
Paixu(stu,n);
getchar();getch();
system("cls");
Menu1();
break;
case 4:
system("cls");
Menu();
break;
}
if(choice2==4)
break;
}break;
case 2:
system("cls");
Menu2();
while(8)
{
scanf("%d",&choice2);
switch(choice2)
{
case 1:
printf("请输入学科编号");
scanf("%d",&course_no);
printf("本科平均成绩为:%.2lf\n",Ave_course(stu,course_no,n));
getchar();getch();
system("cls");
Menu2();
break;
case 2:
printf("请输入学生的学号");
getchar();
scanf("%s",stu_no);
for(i=0;i<n;i++)
if(strcmp(stu[i].xuehao,stu_no)==0)
{Dis_course(&stu[i]);break;}
printf("\n该生平均成绩为:%.2f\n",Ave_stu(stu,stu_no,n));
getchar();getch();
system("cls");
Menu2();
break;
case 3:
system("cls");
getchar();
Menu();
break;
}
if(choice2==3) break;
}break;
case 3:
system("cls");
Menu3();
while(8)
{
scanf("%d",&choice3);
switch(choice3)
{
case 0:
Tongji(stu,n,choice3);
getchar();getch();
system("cls");
Menu3();
break;
case 1:
Tongji(stu,n,choice3);
getchar();getch();
system("cls");
Menu3();
break;
case 2:
Tongji(stu,n,choice3);
getchar();getch();
system("cls");
Menu3();
break;
case 3:
Zongping(stu,n);
getchar();getch();
system("cls");
Menu3();
break;
case 4:
system("cls");
getchar();
Menu();
break;
}
}break;
case 4:
printf("信息如下:\n");
Shuchu(stu,n);
getchar();getch();
system("cls");
Menu();
break;
case 5:
puts("\t\t---欢迎下次光临!---");
exit(0);
}
}
}
搜索更多相关主题的帖子: printf int stu sum puts 
2019-12-31 10:01
D2284581470
Rank: 3Rank: 3
来 自:沈阳
等 级:论坛游侠
威 望:2
帖 子:169
专家分:147
注 册:2019-12-8
得分:0 


[此贴子已经被作者于2019-12-31 12:45编辑过]

2019-12-31 12:43
D2284581470
Rank: 3Rank: 3
来 自:沈阳
等 级:论坛游侠
威 望:2
帖 子:169
专家分:147
注 册:2019-12-8
得分:0 
好长啊!
程序代码:
//预处理
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<dos.h>
#define N 30   //学生人数
#define M 30
#define LEN sizeof(struct student)
struct student
{
    char num[5];//学生学号
    char name[10];//学生姓名
    char eng[5];//英语成绩
    char math[5];//数学成绩
    char phy[5];//物理成绩
    char c_yuyan[5];//C语言成绩
    double sum;//总成绩
    double average;//平均成绩
};
struct student stu[N];
//函数声明
void input();//输入学生信息
void show();//显示学生信息
void search();//搜索学生信息
void order();//学生成绩排序
void menu();//显示主菜单

void menu()
{
   system("cls");
printf("\n\n\n\n\n");
printf("\t|-----------------STUDENT SCORE SYSTEM---------------------------|\n");
printf("\t|\t               1.输入学生信息                            |\n");
printf("\t|\t               2.显示学生信息                            |\n");
printf("\t|\t               3.查找学生信息                            |\n");
printf("\t|\t               4.按总成绩排序                            |\n");
printf("\t|----------------------------------------------------------------|\n\n");
}


void input()
{
    int i=0;//i用来表示学生个数
    double sum;//暂时存储总成绩
    char ch[2]="y";//初始化ch为y
    FILE *fp;//定义一个文件指针
 
    fp=fopen("score.in.txt","wb");//新建并打开文件
    while(strcmp(ch,"y")==0)//判断ch是否为y,是则进行循环
    {
         
         printf("学号为:");
            scanf("%4s",stu[i].num);//输入学号
         printf("姓名为:");
            scanf("%4s",stu[i].name);//输入姓名
         printf("英语成绩为:");
            scanf("%4s",stu[i].eng);//输入英语成绩
         printf("高数成绩为:");
            scanf("%s",stu[i].math);//输入数学成绩
         printf("大物成绩为:");
            scanf("%s",stu[i].phy);//输入大物成绩
         printf("C语言成绩为:");
            scanf("%s",stu[i].c_yuyan);//输入C语言成绩
         sum=atoi(stu[i].eng)+atoi(stu[i].math)+atoi(stu[i].phy)+atoi(stu[i].c_yuyan);/*将输入的字符成绩转为数值来计算总成绩(如果直接将各科
         成绩以数值输入,会出现严重乱码现象,故先输入字符在转成数值)*/
         stu[i].sum=sum;
         stu[i].average=sum/4.0;
        
         printf("是否继续输入:(y/n)");//是否继续输入学生信息,y代表是,n代表否
            scanf("%s",ch);
         i++;
    }
    
    fwrite(stu,LEN,i,fp);//将i个学生信息写入文件中
    fclose(fp);//关闭文件
}
void show()
{
    FILE *fp;
    int i,m=0;//m用来表示文件中学生人数
    fp=fopen("score.in.txt","rb");//打开文件
    while(!feof(fp))//判断指针是否指向文件尾部,文件没有结束则feof(fp)=0
    {
        if (fread(&stu[m],LEN,1,fp)==1)//fread返回读取到大小为LEN的个数
            m++;//读取到m就加一,最终显示学生个数
    }
    fclose(fp);
    printf ("学号  姓名  英语  数学  大物  C语言  总分  平均分\n");
    for(i=0;i<m;i++)//循环将m个学生信息读出并显示在屏幕上
    {       
        printf (" %s ",stu[i].num);    
        printf (" %4s ",stu[i].name);
        printf (" %4s ",stu[i].eng);
        printf (" %4s ",stu[i].math);
        printf (" %4s ",stu[i].phy);
        printf (" %4s ",stu[i].c_yuyan);
        printf (" %4.2f ",stu[i].sum);//保留两位小数
        printf (" %4.2f ",stu[i].average);
        printf ("\n");
    }

}
void search() 
{
    FILE *fp;
    int i,m=0;
    char str[10];//用于储存查找学生的学号或姓名
    fp=fopen("score.in.txt","r");//打开文件
   
    while(!feof(fp))//读取学生个数
    {
        if(fread(&stu[m],LEN,1,fp)==1)
            m++;
    }
    fclose(fp);
        
        printf("请输入学号或姓名查询:");
        scanf("%s",str);//输入查找学生的学号或姓名
        for( i=0;i<m;i++)   //查找输入的学号是否在记录中
        { 
            if(strcmp(str,stu[i].name)==0||strcmp(str,stu[i].num)==0)//判断文件中学生姓名或学号与输入的是否一致
            {
                    printf ("学号  姓名  英语  数学  大物  C语言  总分  平均分\n");
                    printf (" %s ",stu[i].num);    
                    printf (" %4s ",stu[i].name);
                    printf (" %4s ",stu[i].eng);
                    printf (" %4s ",stu[i].math);
                    printf (" %4s ",stu[i].phy);
                    printf (" %4s ",stu[i].c_yuyan);
                    printf (" %4.2f ",stu[i].sum);
                    printf (" %4.2f ",stu[i].average);
                    printf ("\n");
            break;    //找到所查找学生信息即退出循环,终止查找
            }
            
            if(i==m)  printf("找不到该学生!\n");      //未找到要查找的信息
        }
}
void order()
{
    FILE *fp,*FP;
    struct student temp;//中间结构体,用于排序时的暂时存储
    int i=0,j=0,m=0;
    fp=fopen("score.in.txt","rb");//打开文件
     while(!feof(fp))//while循环算出学生个数
    {
        if(fread(&stu[m],LEN,1,fp)==1)
            m++;
    }
   fclose(fp);
       for(i=0;i<m-1;i++)               //双重循环实现成绩比较并交换
            for(j=i+1;j<m;j++)            
                if(stu[i].sum<stu[j].sum)
                {
                    temp=stu[i];
                    stu[i]=stu[j];
                    stu[j]=temp;
                }
                FP=fopen("score.out.txt","w");
                
                for(i=0;i<m;i++)   //将排好序的成绩重新写入指定的磁盘文件中
                    fwrite(&stu[i],LEN,1,FP);
                    fclose(FP);
                printf ("学号  姓名  英语  数学  大物  C语言  总分  平均分\n");
                for(i=0;i<m;i++)
                    {       
                        printf (" %s ",stu[i].num);    
                        printf (" %4s ",stu[i].name);
                        printf (" %4s ",stu[i].eng);
                        printf (" %4s ",stu[i].math);
                        printf (" %4s ",stu[i].phy);
                        printf (" %4s ",stu[i].c_yuyan);
                        printf (" %4.2f ",stu[i].sum);
                        printf (" %4.2f ",stu[i].average);
                        printf ("\n");
                    }
}
void main()
{
    int n;
    menu();
    printf ("请选择一个执行项: ");
    scanf ("%d",&n);//输入1-4的选项
    while (n)
    {  
        switch (n)
        {
        case 1:input();break;//输入
        case 2:show();break;//显示
        case 3:search();break;//查找
        case 4:order();break;//排序
        default : break;
        }
        if (n<1 ||n>4)
            printf("该操作不存在,请重新输入!");
        getch();//停顿
        menu();//显示主菜单
        printf ("请选择一个执行项: ");
        scanf("%d",&n); 
    }
}
2019-12-31 12:43
看了就看了
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2019-12-31
得分:0 
回复 3楼 D2284581470
谢谢你哦  不过我想要的是一种不用文件保存的形式  而是用单链表  直接存进链表  再从中读取   你看看你可以帮忙嘛
2020-01-02 15:54
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用看了就看了在2020-1-2 15:54:44的发言:

谢谢你哦  不过我想要的是一种不用文件保存的形式  而是用单链表  直接存进链表  再从中读取   你看看你可以帮忙嘛

文件是外存数据,链表是内存数据,两者是一个统一体,是同一数据的不同表现形式。
2020-01-04 21:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-498747-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.364421 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved