1江南大学现代远程教育第三阶段测试卷考试科目:《计算机语言(C)》第10章至第13章(总分100分)时间:90分钟学习中心(教学点)批次:层次:专业:学号:身份证号:姓名:得分:一、选择题(每题2分,共30分)1.若已定义a为int型变量,则对指针p的说明和初始化正确的是(D)。A.int*p=a;B.intp=a;C.int*p=*a;D.int*p=&a;2.设P是指向A的指针,Y为整型量,A=5,A的地址为FE03;B=6,B的地址为FE04;下列语句分别执行的结果是(D)。1)Y=*&A;2)Y=*P++;3)Y=&++A;4)Y=*++PA.1)Y=4;2)Y=4;3)Y=FE05;4)Y=7B.1)Y=7;2)Y=7;3)Y=FE02;4)Y=4C.1)Y=6;2)Y=6;3)Y=FE03;4)Y=5D.1)Y=5;2)Y=5;3)Y=FE04;4)Y=63.下列程序段的执行结果是(D)。staticinta[]={5,3,7,2,1,5,4,10};ints=0,k;for(k=0;k8;k+=2)s+=*(a+k);printf(%d,s);A.12B.18C.15D.174.关于指针概念不正确的说法是(C)。A.一个指针变量只能指向同一个类型的变量B.一个变量的地址称为该变量的指针C.只有同一类型变量的地址才能放到指向该类型变量的指针变量之中D.指针变量可以由整数赋值,不能用浮点数赋值5.若有说明int(*p)[3];则以下(D)是正确的叙述。A.p是一个指针数组B.(*p)[3]与*p[3]等价2C.p是一个指针,它可以指向一个一维数组中任一元素D.p是一个指针,它只能指向一个包含3个int类型的一维数组6.下面对结构数据类型的叙述中,(C)是错的。A.结构变量可以在说明结构类型后定义,也可在说明结构时定义B.结构可由若干个成员组成,各成员的数据类型可以不同C.定义一个结构类型后,编译程序要为结构的各成员分配存储空间D.结构变量的各成员可通过结构变量名和指向结构变量的指针引用7.若px为指针变量名,y为变量名,则y=*px++;等价于(B)。A.y=*px;px++;B.y=(*px)++;C.y=px;px++;D.y=*(px++);8.设有说明:intI,*p=&I,要实现I的内容加10,则下面语句(D)是错的。A.*p=*&I+10;B.i=*p+10;C.*p=*p+10;D.*p=&I+10;9.说明语句enummoney{Fen,Jiao,Yuan=100,Tenyuan};每个枚举量所对应的实际值为:(A)。A.0,1,100,101B.1,2,100,101C.“Fen或1,Jiao或2,Yuan或100,Tenyuan或101.D.“Fen,Jiao,Yuan,Tenyuan.10.设有说明:struct{charname[15],sex;intage;floatscore;}stu,*p=&stu;以下不能正确输入结构体成员值的是(D)。A.scanf(”%c”,&p-sex);B.scanf(”%s”,stu.name);C.scanf(”%d”,&stu.age);D.scanf(”%f”,p-score);11.若要用fopen函数打开一个新的二进制文件,该文件要即能读也能写,则文件打开的方式应是(B)。A.〝ab+〞B.〝wb+〞C.〝rb+〞D.〝ab〞12.fwrite函数的一般调用形式是(D)。A.fwrite(buffer,count,size,fp)B.fwrite(fp,size,count,buffer)C.fwrite(fp,count,size,buffer)D.fwrite(buffer,size,count,fp)13.关闭文件函数fclose(fp)的作用是(C)。A.不再为fp指向的文件分配内存空间;B.将fp指向的文件存入磁盘;C.释放指定文件所占据的内存空间和文件指针;3D.将指定文件封闭在某一内存区域。14.下列有关C语言文件的说法正确的是(D)。A.C语言文件是由记录组成B.C语言文件被看作是一个字符(字节)的序列,称为流式文件C.C语言有专门的文件操作命令D.以上说法都不正确15.语句()能正确完成赋字符串的功能。A.chars[4];s[0]=“string”;B.char*s;get(s);C.char*s[]=“string”;D.char*s;strcpy(s,“string”);二、填空题(每空3分,共45分)1.C程序中,文件可以用顺利方式存取,也可以用随机方式存取。2.C程序中,数据可以用二进制和ACSII两种代码形式存放。3.结构体变量所占的内存长度为所有成员占有内存的总和。4.设有以下说明与语句:staticinta[3][2]={1,2,3,4,5,6};int(*p)[2];...p=a;则*(*(a+2)+1)的值为6,*(*(p+1)+1)的值为4。5.下面程序用变量count统计文件letter.dat中字符的个数。#include”stdio.h”main(){FILE*fp;longcount=0;if((fp=foren(“letter.dat”,”r”))==NULL){printf(“cannotopenthisfile\n”);exit(0);}while(!feof(fp)){fscanf(fp,”%c”,&c)或c=fgetc(fp);if((c=’a’&&c=’z’)||(c=’A’&&c=’Z’))count++;}printf(“count=%ld\n”,count);fclose(fp);}6.下面的函数用于比较两个给出的C字符串。按比较结果,函数将返回下列函数值:若:s1=s2返回04s1s2返回负值s1s2返回正值[程序]scmp(char*s1,char*s2){while(*s1)if(*s1-*s2)return(*s1-*s2);else{s1++;s2++;}return(0);}7.下面程序的运行结果是Afgd。#include”string.h”main(){char*p1,*p2,str[50]=”ABCDEFG”;p1=”abcd”;p2=”efgh”strcpy(str+1,p2+1);strcpy(str+3,p1+3);printf(“%s”,str);}8.下面程序的运行结果是baCBAcd。#includestdio.hmain(){char*str=ABCabcd;bubble(str,5);printf(\n%s,str);}bubble(char*str,intcount){inti,j=count;chartmp;while(j--1)for(i=0;ij;i++)if(str[i]str[i+1]){tmp=str[i];str[i]=str[i+1];str[i+1]=tmp;}5}三、编程题(共25分)1.编写一个函数fun(char*s,char*t),其功能是:将S所指字符串中ASCII值为奇数的字符删除,s中剩余的字符形成一个新串放在t所指的数组中。(10分)2.在本地磁盘上建立文件data1.dat,随机写入10个大写字母和10个小写字母,然后将其中的大写字母转换成小写字母,小写字母转换成大写字母后仍保存在该文件中。(15分)1.#includestdio.h#includestdio.hfun(char*s,char*t){inti,j=0;for(i=0;istren(s);i++)if((s[i]%2=0))t[j++]=s[i];t[j]='\0';}2.#include”stdio.h”#include”string.h”#include”stdlib.h”Voidwnitefile(charfname{}){FILE*fp;Intt;Charch;If((fp=fopen(fname,”W”))=NULL){printf((“errorinwinte︳\n”);Exit(0);}Randomize();Prinf(“Thefileis:”);For(i=o;i10;i++){ch=65+random(26);Fputc(ch,fp);putchar(ch);6}For(i=o;i10;i++){ch=97+random(26);Fputc(ch,fp);putchar(ch);}Fclose(fp);Putar(“\n”);}Voidchange(charfname{}){FILE*fp1-*fp2;Charch;If((fp1=fopen(fname,”r”))=NULL){pintf(“errorinred︳\n”);Exit(0);}If((fp2=fopen(“d:\\temp.txt”,”W”))=NULL){printf(“errorintempwrite︳\n”);Exit(0);}While((ch=fgetc(fp1))︳=EOF){If(ch=’A’&&ch=’z’)Ch=ch.32;Fputc(ch,fp2);}Fclose(fp1);fclose(fp2);If((fp1=fopen(fname,”W”))=NULL){prinf(“errorinwrite︳\n”);Exit(0);}