| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 685 人关注过本帖
标题:帮个忙吧!!谢谢
只看楼主 加入收藏
现实太狗
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2013-12-1
收藏
得分:0 
回复 7楼 神机军师
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 50
 typedef struct student/*结构体的定义*/
{
     char num[50];
     char name[50];
     int score[50][4];
     int sum;
     float aver;

}STU;
 void MainMenu()
 {
     
     printf("\t**********************菜单*************************************\n");
     printf("\t\t\t学生信息管理系统\n");
     printf("\t按1键:读入学生档案-----------------------按6键:学科及格概率---\n");
     printf("\t按2键:按照姓名查询-----------------------按7键:学生档案排序---\n");
     printf("\t按3键:按照学号查询-----------------------按8键:保存学生档案---\n");
     printf("\t按4键:添加学生档案-----------------------按9键:查看学生档案---\n");
     printf("\t按5键:删除学生档案-----------------------按10键: 各科平均值---\n");
     printf("\t按0键:退出管理系统\n");
     printf("\t****************************************************************\n");
 }
 int Shuru(STU a[])/*学生信息的输入*/
 {
     FILE *fp;
     int i,j,k,m,n=0;
     char cha[]="-1";
     if((fp=fopen("E:\\学生信息\\学生信息表.txt","w+"))==NULL)
     {
         printf("此文件不存在\n");
         getch();
         exit(1);
     }
     fprintf(fp,"学号    姓名     数学    语文    英语    C语言   总分  平均值\n");
     for(i=0;i<N;i++)
     {
         printf("请输入第%d个学生的学号:\n",i+1);
         scanf("%s",a[i].num);
         printf("\n");
         m=strcmp(cha,a[i].num);
         if(m==0)
             break;
         printf("请输入给该生的姓名:\n");
         scanf("%s",a[i].name);
         printf("\n");
         fprintf(fp,"%s   %s",a[i].num,a[i].name);
         printf("数学 语文 英语 C语言\n");
         a[i].sum=0;
         for(j=0;j<4;j++)
         {
            
             scanf("%d",&a[i].score[j]);
             a[i].sum=a[i].sum+a[i].score[j];
             fprintf(fp,"  %d  ",a[i].score[j]);
         }
         fprintf(fp,"%d",a[i].sum);
         a[i].aver=(float)a[i].sum/i;
         fprintf(fp,"  %f  ",a[i].aver);
         fprintf(fp,"\n");
     }
      fclose(fp);
     if((fp=fopen("E:\\学生信息\\学生信息表.txt","r"))==NULL)
     {
         printf("此文件不存在\n");
         getch();
         exit(1);
     }
     while(n<i)
     {
         fscanf(fp,"%s %s %d %d %d %d %d %f",a[i].num,a[i].name,a[i].score[0],a[i].score[1],a[i].score[2],a[i].score[3]);
         fscanf(fp,"\n");
         n++;
     }
     fclose(fp);
     
   
     printf("%d\n",i);
     return(i);
     
 }
 void main()
{
    STU a[50];/*学生的人数*/
    int stu_score;/*学生的实际人数*/
    int n;
    while(1)
    {
        MainMenu();
        printf("\t\t\t请输入0--10,并按回车:__\n");
        scanf("%d",&n);
        switch(n)
        {
           case 1:stu_score=Shuru(a);break;
        }
    }
}那你就在帮忙看一下这个吧!!谢谢了!!文件中几率的成绩不对,我感觉显示也不对吧!!!
2013-12-23 20:56
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
收藏
得分:0 
感觉主要是有一个问题,定义的构造体里面:
typedef struct student/*结构体的定义*/
{
     char num[50];
     char name[50];
     int score[50][4];
     int sum;
     float aver;

}STU;

score 是个50行4列的int型的二维数组。下面:
for(j=0;j<4;j++)
{
   scanf("%d",&a[i].score[j]);
   a[i].sum=a[i].sum+a[i].score[j];
   fprintf(fp,"  %d  ",a[i].score[j]);
}

&a[i].score[j]:
输入%d格式,这里应该是一个int的地址。
分析:score是二维数组名 表示score+0 也就是&(*(score+0))也就是&score[0]这是第0行的首地址
&a[i].score[j]就是第j行的首地址。 他是一个int (*p)[4] 类型的地址 它指向一个四个int型的一维数组。

其他的我在前面的程序里面应该改了,但是程序在输入数据那里出问题了。

未知令人期待!
2013-12-23 22:13
快速回复:帮个忙吧!!谢谢
数据加载中...
 
   



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

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