标题:刚学C语言不久,遇到问题解决不了,想请教各位!!谢谢
只看楼主
lem_lpdr
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-1-10
结帖率:0
已结贴  问题点数:20 回复次数:9 
刚学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
朱三哥
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:311
专家分:359
注 册:2012-12-11
得分:2 
自己去写
你帧草但

哥,破你无线很难的,不要老是改,少看路由器上的灯,你会死啊
2013-01-10 20:41
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
得分:2 
数据管理的代码例子现成的很多,自己搜索一下吧,在别人的基础上修改就可以了

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-01-12 09:22
bobo2185355
Rank: 2
等 级:论坛游民
帖 子:81
专家分:43
注 册:2010-4-11
得分:2 
LZ有这样的想法不错啊,如何将想法体现在程序里呢,那你就继续学习吧
2013-01-12 14:01
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
得分:2 
又来作业啦???
年底作业好多哟

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-01-12 18:18
ren613
Rank: 3Rank: 3
来 自:宣武
等 级:论坛游侠
帖 子:117
专家分:120
注 册:2012-11-20
得分:2 
///////

天道酬勤
2013-01-12 20:57
tangrongyang
Rank: 2
来 自:福建--福州
等 级:论坛游民
帖 子:30
专家分:18
注 册:2012-11-20
得分:2 
额,看到LZ这样写!压力好大啊………………压得我蛋疼!

趁着年轻,折腾折腾!
年轻真好!
2013-01-12 21:29
不玩虚的
Rank: 9Rank: 9Rank: 9
来 自:四川
等 级:贵宾
威 望:10
帖 子:331
专家分:1301
注 册:2012-12-9
得分:2 
确实写得够麻烦的。
我就不明白了,你老判断那个n干嘛,你输入学生信息的时候不是输入过了嘛。还有定义那个int a[30];干嘛的啊,你函数参数传个n进去不就可以了嘛。你排序,直接把学生对象交换不就好了嘛。

同学习......同进步....你帮我......我帮你.....上善若水.....
2013-01-13 02:36
w54540179
Rank: 1
等 级:新手上路
帖 子:3
专家分:2
注 册:2012-12-23
得分:2 
其实遇到问题可以一步一步测试.
2013-01-13 15:16
a1024204390
Rank: 2
来 自:河南周口郸城
等 级:论坛游民
帖 子:87
专家分:67
注 册:2012-6-27
得分:2 
看的头痛…

永不言败!never say die!
2013-01-14 11:41



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




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

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