CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  非技术区

请各位救救我

楼主bangbangwo(求教)2003-06-04 09:51:21 在 C/C++ / 非技术区 提问

我刚学C语言,我有几道题想求教各位。  
  1、读程序并写结果和功能  
  main()  
  {extern   in();extern   out();extern   edit();  
  char   ch;   int   m=1;  
  while(m){  
  printf("1   input     2   output\n3     edit     4   end\n");  
  printf("choose");  
  scanf("%c",&ch);  
  switch(ch){  
  case'1':   in();break;  
  case'2':out();break;  
  case'3':edit();break;  
  case'4':m=0;  
  }}  
  功能:                                         结果:  
  2、设有一个姓名与三门课成绩的二维表,请用如下结构体变量描述  
  struct   stu{char   name[20];   float   score[3];};  
  要求在主函数中赋值,赋值方法不限,在另一个函数print()中打印输出。  
   
  姓名       语文       数学         历史  
  王           80             29               32  
  张           89             37               86  
  刘           23             68               90  
   
  3、设有二进制文件存放着某年级学生的基本情况,这些情况由以下结构来描述:  
  struct   student  
  {long   int   xh;         /*学号*/  
  char   xm[10];         /*姓名*/  
  int   nl;                       /*年龄*/  
  char   xb;           /*性别*/  
  char   zy[20];       /*专业*/  
  char   dz[10];           /*地址*/  
  }  
  请编程序,读出文件内容,显示专业是“计算机”的学好、姓名、专业  
  说明:1、文件名由键盘输入;2、文件长度为10个记录。  
   
  问题点数:100、回复次数:12Top

1 楼arfi()回复于 2003-06-04 10:09:02 得分 10

1.     相当于一个菜单选项,运行时,如果按下1键,执行in函数,2执行out函数,3执行edit函数,4退出程序。Top

2 楼bigtea(企鹅)回复于 2003-06-04 10:10:31 得分 5

1、读程序并写结果和功能  
  是一个程序控制界面,让你选择1   input   2   output\n3   edit   4   end  
  根据你的选择,调用别的文件中  
  extern   in();extern   out();extern   edit();  
  完成不同的功能。  
  看样子与你后面的问题有联系,估计是输入,输出,编辑等操作。Top

3 楼arfi()回复于 2003-06-04 10:23:18 得分 35

2.程序:  
  #include   <stdio.h>  
   
  #define   STUNUM   3  
  #define   COURSENUM   3  
  struct   stu  
  {  
  char   name[20];    
  float   score[3];  
  }s[STUNUM];  
   
  void   print(void)  
  {  
  printf("姓名\t语文\t数学\t历史\n");  
  for(int   i=0;   i<STUNUM;   i++)  
  {  
  printf("%s\t",   s[i].name);  
  for(int   j=0;   j<COURSENUM;   j++)  
  printf("%5.2f\t",   s[i].score[j]);  
  printf("\n");  
  }  
  }  
   
  void   main(void)  
  {  
  for(int   i=0;   i<STUNUM;   i++)  
  {  
  printf("输入学生姓名:");  
  scanf("%s",   s[i].name);  
  printf("分别输入该学生语文、数学、历史课程的成绩:");  
  scanf("%f%f%f",   &s[i].score[0],   &s[i].score[1],   &s[i].score[2]);  
  }  
  print();  
  }  
  Top

4 楼arfi()回复于 2003-06-04 10:36:36 得分 45

3.程序:  
  #include   <stdio.h>  
  #include   <stdlib.h>  
  #include   <string.h>  
   
  struct   student  
  {  
  long   int   xh; /*学号*/  
  char   xm[10]; /*姓名*/  
  int   nl; /*年龄*/  
  char   xb; /*性别*/  
  char   zy[20]; /*专业*/  
  char   dz[10]; /*地址*/  
  };  
   
   
  void   print(struct   student   *ps)  
  {  
  printf("学号:%ld\n",   ps->xh);  
  printf("姓名:%s\n",   ps->xm);  
  printf("年龄:%d\n",   ps->nl);  
  printf("性别:%c\n",   ps->xb);  
  printf("专业:%s\n",   ps->zy);  
  printf("地址:%s\n\n",   ps->dz);  
  }  
   
  void   main(void)  
  {  
  char   filename[80];  
  FILE   *fp;  
  struct   student   s;  
   
  printf("请输入保存学生记录的文件名:");  
  scanf("%s",   filename);  
  fp   =   fopen(filename,   "rb");  
  if(fp   ==   NULL)  
  {  
  perror("Open   file   error");  
  exit(1);  
  }  
   
  while(1)  
  {  
  fread(&s,   sizeof(s),   1,   fp);  
  if(feof(fp))  
  break;  
  if(!strcmp(s.zy,   "计算机"))  
  print(&s);  
  }  
  fclose(fp);  
  }Top

5 楼pzytony(507)回复于 2003-06-04 14:09:57 得分 5

 
  给你一个程序参考  
   
   
  #include   "stdio.h"  
  #include   "stdlib.h"  
  #include   "string.h"  
   
  #define   N   2  
  #define   MAX_LINE_SIZE   255  
   
   
  struct   stud  
  {      
  char   num[5];  
          char   name[10];  
          int   s[4];  
          double   ave;  
  }   student[N];  
   
         
  double   gain_average(int   score[4])  
  {  
  double   average   =   double((score[0]+score[1]+score[2]+score[3])/4.0);  
  return(average);  
  }  
   
  int   change_string_into_number(char   *string)  
  {  
  int   number   =   *string   -   '0';  
  string   ++;  
   
  while   (*string   !=   '\0')  
  {  
  number   =   number   *   10   +   *string   -   '0';  
  string   ++;  
  }  
   
  return   (number);  
  }  
   
  void   read_document(void)  
  {  
  FILE   *fp;  
  if   ((fp=fopen("read.txt","r"))   ==   NULL)  
  {  
  printf("Open   error!\n");  
  exit(0);  
  }  
   
  char   line[MAX_LINE_SIZE];  
  for   (int   i=0;   i<N;   i++)  
  {  
  fgets(line,MAX_LINE_SIZE,fp);  
  char   *p=line;  
   
  while   ((*p   <   '0')   ||   (*p   >   '9'))   p++;//去前行空格  
   
  char   a[5]     =   "";  
  char   b[10]   =   "";  
  int   j   =   0;  
  while   ((*p   !=   '   ')   &&   (*p   !=   '\t'))   //读student[i].num  
  {  
  a[j]   =   *p;  
  j++;  
  p++;  
  }  
  a[j]   =   '\0';  
   
  strcpy(student[i].num,   a);  
  strcpy(a,"");  
   
  while   ((*p   ==   '   ')   ||   (*p   ==   '\t'))   p++;   //跳过空格  
  j=0;  
   
  while   (((*p   <   '0')   ||   (*p   >   '9'))   &&   (j   <=   9))   //读student[i].name  
  {  
  b[j]   =   *p;  
  j++;  
  p++;  
  }  
  b[j]   =   '\0';  
   
  strcpy(student[i].name,b);  
  while   ((*p   ==   '   ')   ||   (*p   ==   '\t'))   p++;//跳过空格  
     
  j   =   0;  
  for   (int   k=0;   k<4;   k++)   //读student[i].s  
  {  
  while   ((*p   !=   '\n')   &&   (*p   !=   '   '))  
  {  
  a[j]   =   *p;  
  j++;  
  p++;  
  }  
  while   ((*p   ==   '   ')   ||   (*p   ==   '\t'))   p++;//跳过空格  
   
  a[j]   =   '\0';  
  student[i].s[k]   =   change_string_into_number(a);  
  j   =   0;  
  }  
  student[i].ave   =   gain_average(student[i].s);  
  }  
   
  fclose(fp);  
  }  
   
  void   write_document(void)  
  {  
  FILE   *fp;  
  if   ((fp=fopen("write.txt","w"))   ==   NULL)  
  {  
  printf("Open   error!\n");  
  exit(0);  
  }  
   
  for   (int   i=0;   i<N;   i++)  
  {  
  fprintf(fp,"%s,%s,",student[i].num,student[i].name);  
  for   (int   j=0;   j<4;   j++)    
  {  
  fprintf(fp,"%d,",student[i].s[j]);  
  }  
  fprintf(fp,"%4.1f\n",student[i].ave);  
  }  
  }  
   
  int   main(void)  
  {  
   
  read_document();  
   
  for   (int   i=0;   i<N;   i++)  
  {  
  student[i].ave   =   gain_average(student[i].s);  
  }  
   
  write_document();  
   
  return(0);  
  }  
  Top

6 楼bangbangwo(求教)回复于 2003-06-06 15:56:43 得分 0

arfi你好,你的程序我上机输入了,不过有一些错误,希望您能改正了,在尽快地给我,  
                           
                            一定要写各步骤的解释。因为我有些看不懂,  
   
                          收到你的答复后,我会尽快给你加分。谢谢你的帮助。  
   
  第一题的功能我已经知道,结果呢?希望您能尽快告诉我。Top

7 楼arfi()回复于 2003-06-06 16:33:02 得分 0

第一题没有结果,因为那三个函数未给出,只是个形式而已,告诉你这相当于一个选择菜单。如果可以运行的话,屏幕会显示如下:  
  1   input     2   output  
  3     edit     4   end  
  choose  
  然后等待你输入选项Top

8 楼arfi()回复于 2003-06-06 16:37:14 得分 0

我的程序都试运行过的,只是第三个程序如果你没有学生记录文件的话,当然就不可能读出来。Top

9 楼bangbangwo(求教)回复于 2003-06-07 09:39:57 得分 0

请加写上程序主要变量的定义和语句的注释Top

10 楼pzytony(507)回复于 2003-06-07 09:56:48 得分 0

 
  up  
  Top

11 楼arfi()回复于 2003-06-09 09:24:06 得分 0

#include   <stdio.h>  
   
  #define   STUNUM   3                       /*学生数目*/  
  #define   COURSENUM   3                 /*课程数目*/  
  struct   stu  
  {  
  char   name[20];         /*学生姓名*/  
  float   score[3];       /*各门课的成绩*/  
  }s[STUNUM];  
   
  /*一打印函数,将学生的资料(姓名及课程成绩打印出来)*/  
  void   print(void)  
  {  
  printf("姓名\t语文\t数学\t历史\n");  
  for(int   i=0;   i<STUNUM;   i++)  
  {  
  printf("%s\t",   s[i].name);  
  for(int   j=0;   j<COURSENUM;   j++)  
  printf("%5.2f\t",   s[i].score[j]);  
  printf("\n");  
  }  
  }  
   
  void   main(void)  
  {  
  for(int   i=0;   i<STUNUM;   i++)  
  {  
  printf("输入学生姓名:");  
  scanf("%s",   s[i].name);             /*接收学生姓名*/  
  printf("分别输入该学生语文、数学、历史课程的成绩:");  
  /*如果你的环境是TC,下面的语句在运行时会报那个错误,这是TC编译器的一个bug,你可以在开头定义一个float   temp;变量,然后改成如下的语句进行赋值:  
  scanf("%f",   &temp);  
  s[i].score[0]   =   temp;  
  scanf("%f",   &temp);  
  s[i].score[1]   =   temp;  
  scanf("%f",   &temp);  
  s[i].score[2]   =   temp;  
  */  
  scanf("%f%f%f",   &s[i].score[0],   &s[i].score[1],   &s[i].score[2]);  
  }  
  print();           /*将输入的学生资料输出*/  
  }Top

12 楼arfi()回复于 2003-06-09 09:32:06 得分 0

#include   <stdio.h>  
  #include   <stdlib.h>  
  #include   <string.h>  
   
  /*定义一个包含学生的信息的结构*/  
  struct   student  
  {  
  long   int   xh; /*学号*/  
  char   xm[10]; /*姓名*/  
  int   nl; /*年龄*/  
  char   xb; /*性别*/  
  char   zy[20]; /*专业*/  
  char   dz[10]; /*地址*/  
  };  
   
   
  /*打印函数,输出学生的信息*/  
  void   print(struct   student   *ps)  
  {  
  printf("学号:%ld\n",   ps->xh);  
  printf("姓名:%s\n",   ps->xm);  
  printf("年龄:%d\n",   ps->nl);  
  printf("性别:%c\n",   ps->xb);  
  printf("专业:%s\n",   ps->zy);  
  printf("地址:%s\n\n",   ps->dz);  
  }  
   
  void   main(void)  
  {  
  char   filename[80];         /*学生记录文件名*/  
  FILE   *fp;                           /*文件指针*/  
  struct   student   s;           /*一个保存学生信息的结构变量*/  
   
  printf("请输入保存学生记录的文件名:");  
  scanf("%s",   filename);                     /*接收文件名,保存在filename中*/  
  fp   =   fopen(filename,   "rb");           /*打开此文件*/  
  if(fp   ==   NULL)                                     /*若打开文件出错*/  
  {  
  perror("Open   file   error");         /*输出"Open   file   error"及打开文件失败原因*/  
  exit(1);     /*退出程序*/  
  }  
   
  /*下面循环读取学生信息文件中的内容*/  
  while(1)  
  {  
  fread(&s,   sizeof(s),   1,   fp);       /*读取文件,并将结果保存到s中*/  
  if(feof(fp))                                       /*如果到了文件尾,退出循环*/  
  break;  
  if(!strcmp(s.zy,   "计算机"))           /*看读到的内容中专业是否是"计算机"*/  
  print(&s);           /*如果是,将学生信息输出*/  
  }  
  fclose(fp);                   /*关闭文件*/  
  }Top

相关问题

  • 各位大虾,救救我!!!
  • 各位,救救我吧!
  • 各位大虾救救我
  • 各位高手救救我
  • 各位,快救救我!!!
  • 各位高手救救我!
  • 请各位高手救救我,我是不是概念错了?
  • 我的搜索有问题,请救救命呀,各位大虾!!!
  • 请各位大虾救救我,这个网这么连呀?
  • ### 请各位,救救失学儿童 .......... ###

关键词

  • 函数
  • 学号
  • 文件
  • 文件名
  • 学生
  • ps
  • 专业
  • 数学
  • 计算机
  • 打印

得分解答快速导航

  • 帖主:bangbangwo
  • arfi
  • bigtea
  • arfi
  • arfi
  • pzytony

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo