| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1604 人关注过本帖
标题:明天c语言答辩 求大神帮忙看一下代码的含义
只看楼主 加入收藏
南下1997
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-7-15
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
明天c语言答辩 求大神帮忙看一下代码的含义
#include<stdio.h>

#include<conio.h>

#include<string.h>
struct teacher
{
  char name[41];//教师姓名

  char time [12];//任教时间
  char age[20];//教师年龄
  float salary ;// 教师工资

};

struct teacher tea[50];

int n=0;

void printchoices()

{

printf("\t\t\t\t欢迎使用希望中学教师信息管理系统\n");
printf("\t\t\t\t[1]添加教师信息\n");
printf("\t\t\t\t[2]显示教师信息\n");
printf("\t\t\t\t[3]删除教师信息\n");
printf("\t\t\t\t[4]退出\n");


printf("\n请选择");

}

void add()

{

char t[20];
float temp;//临时变量
printf("\n请输入教师姓名:");
 scanf("%s",t);
 while(strcmp(t,"0")!=0)

{

strcpy(tea[n].name,t);
 printf("请输入教师任教时间:");
 fflush(stdin);
  scanf("%s",tea[n].time);
  printf("请输入教师年龄:");
  scanf("%s",tea[n].age);


printf("请输入教师工资:");
 scanf("%f",&temp);
 tea[n].salary=temp;




n++;

printf("\n请输入教师姓名:");
scanf("%s",t);




}

printf("\n");

}

void del()

{

 char temp[20];

int i,j;

printf("\n\n请输入要删除的教师姓名:");
scanf("%11s",temp);

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

{

if(strcmp(tea[i].name,temp)==0)

break;}

if(i==n)
    printf("\n教师不存在");
else

{

for(j=i;j<n-1;j++);
 tea[j]=tea[j+1];
  n--;

printf("\n删除成功!\n");

}





}

void show()

{

int i;
 printf("\n\n%-16s%-16s%-16s%10s\n","教师姓名","任教时间","教师年龄","教师工资");
 for(i=0;i<n;i++)

{

printf("%-16s",tea[i].name);
 printf("%-16s",tea[i].time);
 printf("%-16s",tea[i].age);


printf("%10.1f\n",tea[i].salary);

}

}






void main()

{

char c;

printchoices();

while((c=getche())!='4')

{

switch(c)

{

case'1':

add();

break;

case'3':

del();

break;

case'2':

show();

break;


default: printf("\n输入错误!\n");








}

printchoices();



}





printf("\n谢谢使用,再见\n");








}


搜索更多相关主题的帖子: char 教师 printf 输入 scanf 
2018-07-15 11:25
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:10 
具体哪行的含义?
2018-07-15 11:39
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define n 2  //定义人数
#define course 3   //定义课程门数
#define len sizeof(struct student)
void inquiry(struct student *head);
void score_max(struct student *head);
void score_average(struct student *head);
void score_alter(struct student *head);
void score_count(struct student *head);
void score_delete(struct student *head);
void score_min(struct student *head);
void score_ascending(struct student *head);
void course_ascending(struct student *head);
struct student
{
    char name[10];
    int stu_id;        
    int score[course];
    char sex;
    int age;
    struct student *next;
}a[n];

int main()
{  
    struct student *p1,*p2,*head,*p;
    p=a;
    for(int i=0;i<n;i++)
    {
        p1=(struct student *)malloc(len);
        printf("第%d个学生的信息为\n",i+1);
        
        printf("请输入姓名:");
        scanf("%s",&(*p1).name);
      
        printf("请输入学号:");
        scanf("%d",&(*p1).stu_id);
        
        printf("请输入成绩:");
        for(int j=0;j<course;j++)
            scanf("%d",&(*p1).score[j]);
        getchar();
      
        printf("请输入性别:");
        scanf("%c",&(*p1).sex);
        getchar();
        
        printf("请输入年龄:");
        scanf("%d",&(*p1).age);   
        
        if(i==0)
           head=p1;
        else
           p2->next=p1;
        p2=p1;
    }
    p2->next=NULL;
int xuanze;
    printf("菜单:\n\
            0 退出 :\n\
            1 请输入学号查询学生的信息\n\
            2 求某个学生的最高成分:\n\
            3 求某个学生的平均成绩:\n\
            4 修改某个学生的第n门课程的成绩:\n\
            5 统计某个学生不及格课程的门数及输出基本信息:\n\
            6 删除某一学生的成绩:\n\
            7 求某个学生的最低分:\n\
            8 把某个学生成绩升序排列:\n\
            9 把某门课的成绩按升序排列:\n");
    printf("请输入你的选择:0-9:");
    scanf("%d",&xuanze);
    switch(xuanze)
    {
      case 0:return 0;                 //必须用a不能用p,前面输入时p++,不再是数组的首地址了
      case 1:inquiry(head);break;
      case 2:score_max(head);break;
      case 3:score_average(head);break;
      case 4:score_alter(head);break;
      case 5:score_count(head);break;
      case 6:score_delete(head);break;
      case 7:score_min(head);break;
      case 8:score_ascending(head);break;
      case 9:course_ascending(head);break;
      default:printf("enter date error!:\n");   
    }
    return 0;
}
void inquiry(struct student *head)   //查询学生的基本信息
{
    struct student *p=head;
    int xh;
    printf("请输入学号:\n");
       scanf("%d",&xh);
    while(p!=NULL)
    {
        if((*p).stu_id==xh)
        {
            printf("姓名为:%s\n 学号为%d\n 性别为%c\n 年龄为%d\n ",
                  (*p).name,(*p).stu_id,(*p).sex,(*p).age);
            printf("成绩为");
            for(int i=0;i<course;i++)
                 printf("%3d",(*p).score[i]);
            break;
        }
        p=p->next;
    }
}
void score_max(struct student *head) //求学生课程的最高分
{
    int xh,max=(*p).score[0],t;
    printf("请输入要查找成绩最大的学生的学号:\n");
       scanf("%d",&xh);
     while(p!=NULL)
     {
         if((*p).stu_id==xh)
        {
          for(int i=1;i<c;i++)
           {
                if((*p).score[i]>max)
                {
                    t=max;
                    max=(*p).score[i];
                    (*p).score[i]=t;
                }
           }
           printf("几门课程中成绩最高的为:%d",max);
           break;
        }
        p++;
      }
}
void score_average(struct student *head)    //计算某一学生成绩的平均分
{
    int xh,sum=0;
    float aver=0;
    printf("请输入你要算平均值的学生的学号:\n");
        scanf("%d",&xh);
    while(p!=NULL)
    {
        if((*p).stu_id==xh)
        {
          for(int i=0;i<c;i++)
           {
                sum=sum+(*p).score[i];
           }
              aver=sum/c;
              printf("学号=%d,平均分=%.2f",xh,aver);
              break;
         }
       p++;
    }
}
void score_alter(struct student *head)  //修改某一学生的成绩
{
    int xh;
    printf("请输入要修改成绩的学生的学号:\n");
    scanf("%d",&xh);
    while(p!=NULL)
    {
        if((*p).stu_id==xh)
        {
               printf("请输入要修改的成绩:\n");
               for(int i=0;i<c;i++)
               {
                   scanf("%d",&(*p).score[i]);
            }
            break;
        }
        p++;
    }
    printf("修改过后的成绩为:\n");
    for(int i=0;i<c;i++)
       printf("%3d",(*p).score[i]);
}
void score_count(struct student *head)  //统计不及格学生的信息
{
    int xh,min=60,count=0;
    printf("请输入要统计不及格门数学生的学号:\n");
    scanf("%d",&xh);
    while(p!=NULL)
    {
        if((*p).stu_id==xh)
        {
            for(int i=0;i<c;i++)
            {
                if((*p).score[i]<min)
                   count++;
            
            }
            printf("不及格学生的基本信息为:\n");
            printf("姓名为:%s\n 学号为%d\n 性别为%c\n 年龄为%d\n ",
                  (*p).name,(*p).stu_id,(*p).sex,(*p).age);
            printf("成绩为");
            for(int i=0;i<c;i++)
                 printf("%3d",(*p).score[i]);
            break;
        }
        p++;
    }
    printf("不及格门数为:%d",count);
}
void score_delete(struct student *head)  //删除某一学生的成绩
{
   int xh;
   printf("请输入要删除成绩的学生的学号:\n");
   scanf("%d",&xh);
   while(p!=NULL)
   {
       if((*p).stu_id==xh)
       {
           memset((*p).score,0,sizeof((*p).score));
           break;  
       }
       p++;
   }
   for(int i=0;i<c;i++)
     if((*p).score[i]==0)
     {
        printf("成绩以删除成功!");
        break;
     }   
}
void score_min(struct student *head)  //求最低分
{
  int xh,min=(*p).score[0],t;
  printf("请输入要查询最低分学生的学号:\n");
  scanf("%d",&xh);
  while(p!=NULL)
  {
       if((*p).stu_id==xh)
        {
           for(int i=1;i<c;i++)
            if((*p).score[i]<min)
            {
              t=min;
              min=(*p).score[i];
              (*p).score[i]=t;
          }
          printf("最低分为:%d",min);
          break;
       }
    p++;
  }   
}
void score_ascending(struct student *head)
{
    int xh,t;
    printf("请输入要排列成绩的学生的学号:\n");
    scanf("%d",&xh);
    while(p!=NULL)
    {
        if((*p).stu_id==xh)
        {
            for(int j=0;j<c-1;j++)
                for(int i=0;i<c-1-j;i++)
                    if((*p).score[i+1]<(*p).score[i])
                    {
                        t=(*p).score[i];
                        (*p).score[i]=(*p).score[i+1];
                        (*p).score[i+1]=t;
                    }
            
            printf("升序排列后的顺序为:\n");
            for(int i=0;i<c;i++)
               printf("%3d",(*p).score[i]);   
            break;
        }
        p++;
    }
}
void course_ascending(struct student *head)
{
    int course;
    int max;
    printf("请输入你要按升序排列的课程号:\n");
    scanf("%d",&course);
    course--;                     //课程号减一,因为数组是从零开始计数的
    for(int j=0;j<n-1;j++)
    {
        for(int i=0;i<n-1-j;i++)
        {
            if((*(p+i)).score[course]>(*(p+i+1)).score[course])
            {
                max=(*(p+i)).score[course];
                (*(p+i)).score[course]=(*(p+i+1)).score[course];
                (*(p+i+1)).score[course]=max;
               
            }
        }
    }
    printf("第%d门课程排序后的成绩为:\n",course);
    for(int i=0;i<n;i++)
       printf("%3d",(*(p+i)).score[course]);
}
2018-07-15 11:40
南下1997
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-7-15
收藏
得分:0 
回复 2楼 花脸
亲爱的  就是我上面发出来的  具体就是实现显示删除和输入功能的代码含义
2018-07-15 12:21
zbjzbj
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:633
专家分:3045
注 册:2011-4-22
收藏
得分:10 
代码不是你写的?
2018-07-15 13:52
南下1997
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-7-15
收藏
得分:0 
回复 5楼 zbjzbj
不是
2018-07-15 14:21
快速回复:明天c语言答辩 求大神帮忙看一下代码的含义
数据加载中...
 
   



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

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