标题:刚学C语言不久,遇到问题解决不了,想请教各位!!谢谢
取消只看楼主
lem_lpdr
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-1-10
结帖率:0
已结贴  问题点数:20 回复次数:0 
刚学C语言不久,遇到问题解决不了,想请教各位!!谢谢
#include<stdio.h>
#include<stdlib.h>
#include<string.h>/*对字符串调用的头文件*/
#include<math.h>
#define S1 "***************欢迎使用学生成绩管理系统***************"
#define S2 "********制造者:*********"
struct student//学生数据结构
    {
        double num;
        char name[20];
        float C;//
        float math;//实验
        float english;//考试
        double zongping;//总评
    }stu[30];
void main()
{
    void newstu(); /* 输入一个班的学生记录*/
    void showall();/* 显示所有记录*/
    void calculate();/* 求出全班平均成绩,显示均方差*/
    void sort();/*输出成绩与排名*/
    void save();/*将数据保存到成绩.txt文件中*/
    int n,i;
    while(n!=6)
    {
        printf("\n\n%s\n\n",S1);
        printf("\n\n%s\n\n",S2);
        printf("%15s***2012应用软件开发9班***\n\n"," ");
        printf("%15s1:输入该班学生大学3科学生成绩记录\n"," ");
        printf("%15s2:显示所有成绩记录\n"," ");
        printf("%15s3:计算并输出平均成绩,均方差\n"," ");
        printf("%15s4:输出成绩与排名\n"," ");
        printf("%15s5:结果存入文件成绩.txt中\n"," ");
        printf("%15s6:退出系统\n"," ");
        printf("%15s7: 按-1返回主菜单\n"," ");
        for(i=0;i<80;i++)
            putchar('=');
        printf("输入选项代码:\n");
        scanf("%d",&n);
        if(n!=1&&n!=2&&n!=3&&n!=4&&n!=5&&n!=6)/*当n不等于1,2,3,4,5,6时*/
          printf("对不起!您的输入有误,请重新输入:");
        else
        switch(n)
        {
            case 1:newstu();break;
            case 2:showall();break;
            case 3:calculate();break;
            case 4:sort();break;
            case 5:save();break;
            case 6:printf("\n*******************谢谢使用!*******************\n");break;
            break;   
        }   
    }
getchar();
}
/* 子  函  数*/
void newstu() /* 输入一个班的学生记录*/

{
    int i,n;
    printf("请输入您要保存记录的人数:");
    scanf("%d",&n);
if(n>30)
printf("对不起,您的输入有误,请重新输入");
else
    {for(i=0;i<n;i++)

    {   

        printf("请输入学号 姓名 C语言 数学 英语:");

        scanf("%lf%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].C,&stu[i].math,&stu[i].english);
        
    }for(i=0;i<n;i++)
stu[i].zongping=stu[i].C+stu[i].math+stu[i].english;
}
system("cls");
}
void showall()/* 显示所有记录*/

{
    int i,n;
    printf("请输入您要保存记录的人数:");
    scanf("%d",&n);

    printf("学号              姓名        C语言       数学      英语     总评\n");

    for(i=0;i<n;i++)

        printf("%lf     %0.5s     %0.5f    %0.5f     %0.5f     %0.5f\n",stu[i].num,stu[i].name,stu[i].C,stu[i].math,stu[i].english,stu[i].zongping);
}

void calculate()/* 求出全班平均成绩,显示均方差*/
{  
    int a[30]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29};
    int i,n;
    double total=0,pfc=0,bzc=0;
    double ave;
    printf("请输入您要保存记录的人数:");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        total=total+stu[i].zongping;
    }
    ave=total/n;
    printf("总评平均成绩是%f\n",ave);
    for(i=0;i<n;i++)
    {
        pfc=pow((stu[i].zongping-ave),2)/n;/*表示第i个学生总评减去平均分的平方*/
    }
    bzc=sqrt(pfc);
    printf("\n平方差是%f\n",pfc);
    printf("\n标准差是%f\n",bzc);
}
void sort()/*输出成绩与排名*/

{
    int a[30]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29};
    int i,j,temp;
    for(j=0;j<29;j++)
    {
        for(i=0;i<29-j;i++)
        if(stu[a[i]].zongping<stu[a[i+1]].zongping)
        {   
            temp=a[i];a[i]=a[i+1];
            a[i+1]=temp;

        }
    }

    printf("顺序为:\n");

    printf("学号             姓名            总评成绩\n");

    for(i=0;i<30;i++)

        printf("%15.0lf%10s%15.2f\n",stu[a[i]].num,stu[a[i]].name,stu[a[i]].zongping);

    printf("\n");

}

void save()/*将数据保存到成绩.txt文件中*/
{int i;
FILE *fp;
fp=fopen("成绩.txt","w");

    fprintf(fp,"学号                 姓名            C语言      数学      英语      总评成绩\n");

    for(i=0;i<29;i++)

        fprintf(fp,"%15.0lf%14s%14.2f%14.2f%14.2f%14.2f\n",stu[i].num,stu[i].name,stu[i].C,stu[i].math,stu[i].english,stu[i].zongping);
printf("System pause...\n");
printf("Please wait...\n");
printf("\n\n*******************恭喜,保存完成!*******************\n\n");
}
这程序感觉有很多要改进的地方,感觉很繁琐,输入错误不能返回,请教一下各位,我应该怎样改进呢?谢谢!!
搜索更多相关主题的帖子: C语言 double include 记录 void 
2013-01-10 20:35



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




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

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