齐乐娱乐在线 > 复习指导 > 自考“高级语言程序设计”经典习题及答案(29)
2014
10-15

自考“高级语言程序设计”经典习题及答案(29)

自考“高级语言程序设计”经典习题及答案(29)

 4.编一个程序,输入下列学生成绩表中的数据,并用结构体数组存放,然后统计并输出三门课程的名称和平均分数。  name foxbase pascal c  wang 98.0 87.0 77.0  qian 90.5 91.0 88.0  sun 74.0 77.5 66.5  li 84.5 64.5 55.0  “解”类似上一程序,直接给出程序如下:  # include  # include  # define N 100  struct stu {  char namep[20];  int foxbase;  int pascal;  int c;  } students[N], *p;  void main ()  { int n, sf, sb, sc;  char buf[120];  printf(“输入n(< %d) ! \n”, N);  do {  scanf(“%d”, &n);  if(n>0 && n  printf(“输入 n不合理! 请重新输入! \n”);  } while(1);  printf(“输入%d个人的姓名、Foxbase成绩、Pascal成绩、C成绩 \n”, n);  for( p= students;p< students+n; p++);  scanf(“%s”,buf );strncpy(p -> name, buf, 19);  scanf(“%d%d%d”, &p -> foxbase,&p -> pascal,&p -> c)  }  sf=sb=sc =0;  for( p=students; p  sf+= p -> foxbase; sb+= p -> pascal; sc+= p -> c;  }  printf(“Foxbase:%.2f \t Pascal:%.2f \t c:%.2f \n”,  (float)sf/n,(float)sb/n,(float)sc/n);  }  8.1 单项选择题  1.若与文件型指针中相关联的文件的当前读位置已到了文件的末尾,则函数feof(fp)的返回值是( )  ①0 ②-l  ③非零值 ④NULL  “解”当调用fopen函数时,系统将为实参文件设定一个存放文件读写控制信息的控制块。该控制块记录有关文件持征、使用方式,当前读写位置等文件状态,并将该控制块的指针返回,作为文件指针变量的值。以后程序通过该指针调用函数时,系统能访问到这个控制块,利用该文件控制块中的控制信息,正确完成文件的读或写。所以文件指针并不真正指向文件当前读写位置,但通过文件指针,系统能在文件控制块中访问文件的当前读写位置。若某文件与文件指针中相关联着,该文件的当前读写位置在文件的末尾时,函数调用feof(fp)的返回值是一个非零值。所以正确解答是③。  2.下列语句中,将C定义为文件型指针的是( )  ① FILE c; ② FILE *c; ③ file c; ④ file *c;  “解”如上题所述,文件控制块的类型已由系统命名为FILE.所以定义文件指针变量是C,就得用代码:“FILE *c;”。所以正确解答是②。  3.标准库函数fputs(pl,p2)的功能是( )  ①从pl指向的文件中读一个字符率存入p2指向的内存  ②从p2指向的文件中读一个字符串存入pl指向的内存  ③从pl指向的内存中的一个字符串输出到p2指向的文件  ④从p2指向的内存中的一个字符串输出到pl指向的文件  “解”标准函数调用fputs(p1,p2)完成的功能是将由字符指针pl所指的字符串内容输出到与文件指针p2相关联的文件中,即将从pl所指的内存中的字符串内容输出到p2所指向的文件中。所以正确解答是③。  8.2 填充题  1.“FILE *p”的作用是定义一个______,其中的“FILE”是在________头文件中定义的。  “解”代码“FILE *p”的作用是定义一个文件指针变量,其中的FILE是在标准输入输出头文件stdio.h中定义的。  2.在对文件进行操作的过程中,若要求文件的现行位置回到文件的开头,应当调用的函数是_______函数。  “解”若要让文件随机地从某个现行位置回到文件的开头,可调用库函数rewind( )。  f2);  }  fclose(f1);  fclose(f2);  }  “解”程序首先以读方式打开文件pl.c,以写方式打开文件P2.c.程序在文件pl.c未结束之前读入l000个字符复制到文件p2.c.然后关闭这两个文件。所以程序的功能是将文件pl.c的前l000个字符复制到文件p2.c.子目录字符‘\’在C语言中作为转义字符的引导字符,若在字符串中要用这个字符,必须双写该字符。如C盘根目录tc子目录文件p1.c,在C程序中应写成字符串“c:\\tc \\pl.c.  2.假定在当前盘当前目录下有2个文本文件,其名称和内容如下:  文件名 al.txt a2.txt  内容 121314 # 252627#  写出运行下列程序后的输出。  # include  # include  void fc( FILE *);  main()  { FILE *fp;  if( fP= fopen(“al.txt”, “r”))== NULL)  { printf(“Can not open file! \n”);  exit(l);  }  else{ fc(fp); fclose(fp); }  if(( fp = fopen(“a2.txt”,“r”))==NULL)  { printf(“Can not open file! \n”);  exit(1);  }  else { fc(fp); fclose(fp); }  }  void fc(fp1)  FILE *fpl;  { char c;  while((c=fgetc(fpl))!=‘#’) putchar(c);  }  “解”程序以读方式打开文件a1.txt,若能正常打开,则调用函数fc.接着同样地,以读方式打开文件a2.txt,若能正常打开,也调用函数fc.函数企从指定的文件读入字符,在读入字符不是字符‘#’情况下循环,将读人字符输出。对于文件a1.txt,程序输出121314,对于文件a2.txt,程序输出252627.所以程序输出121314252627. 
最后编辑:
作者:重庆自考