《C语言程序设计-第三阶段练习》由会员分享,可在线阅读,更多相关《C语言程序设计-第三阶段练习(8页珍藏版)》请在金锄头文库上搜索。
1、江南大学现代远程教育 第三阶段练习题考试科目:C语言程序设计第10章至第13章(总分100分) 学习中心(教学点) 批次: 层次: 专业: 学号: 身份证号: 姓名: 得分: 一、单项选择题(本题共20小题,每小题2分,共40分。)1、若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是( D )。A、p=q;B、 *p=*q;C、 n=*q;D、 p=n;2、已定义以下函数fun (int *p) return *p: 该函数的返回值是( C )。A、不确定的值 B、 形参p中存放的值C、 形参p所指存储单元中的值 D、 形参p的地址值3、有以下程序main()char
2、*s=one,two,three,*p;p=s1;printf(%c,%sn,*(p+1),s0);执行后输出结果是( C )。A、n,twoB、 t,oneC、w,oneD、 o,two4、若有定义:int *p3;, 则以下叙述中正确的是( B )。A、定义了一个基类型为int的指针变量p,该变量具有三个指针B、 定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针C、 定义了一个名为*p的整型数组,该数组含有三个int类型元素D、 定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素5、已定义以下函数fun(char *p2, char *p1
3、) while(*p2=*p1)!=0)p1+;p2+; 函数的功能是( A )。A、 将p1所指字符串复制到p2所指内存空间B、 将p1 所指字符串的地址赋给指针 p2C、 对p1和p2两个指针所指字符串进行比较D、 检查p1和p2两个指针所指字符串中是否有06、有以下程序void fun(char *c,int d) *c=*c+1;d=d+1;printf(“%c,%c,”,*c,d);main() char a=A,b=a;fun(&b,a); printf(“%c,%cn”,a,b);程序运行后的输出结果是( D )。A、B,a,B,a B、 a,B,a,B C、 A,b,A,b D
4、、 b,B,A,b7、若有以下的说明,则对初值中字符a的引用方式为( B )。static struct st char ch;double x;char a;struct st c22=a,3.5,bc,c,4.5,de,m,8.6,abc;A、c.ch B、c00.ch C、c11.ch D、a08、有以下程序#include main( ) FILE *fp; int i,k=0,n=0; fp=fopen(“d1.dat”,”w”); for(i=1;i4;i+) fprintf(fp,”%d”,i); fclose(fp); fp=fopen(“d1.dat”,”r”); fscan
5、f(fp,”%d%d”,&k,&n); printf(“%d %dn”,k,n); fclose(fp);执行后输出结果是( B )。A、1 2 B、 123 0 C、 1 23 D、 0 09、有以下程序段int a10=1,2,3,4,5,6,7,8,9,10,*p=&a3,b;b=p5;b中的值是( D )。A、5B、6C、8D、910运行下列程序后的输出结果是 B 。 main() char str10=China,Beijing,*p=*str; printf(%sn,p+10);A、China B、Beijing C、ng D、ing11、以下枚举类型的定义中正确的是( B )。A
6、、enum a=one, two, three; B、enum a one=9, two=-1,three;C、enum a=“one” , “two”, “three”; D、enum a “one”, “two”, “three”;12、设有说明: union data int i;float f; struct int x;char y; s; double d; a; 在16位微机环境下,int类型的整数占用两个字节,则变量a在内存中所占字节数为( A )。A、8 B、17 C、9 D、1513、下面对结构数据类型的叙述中,( C )是错的。A、结构变量可以在说明结构类型后定义,也可在
7、说明结构时定义B、结构可由若干个成员组成,各成员的数据类型可以不同C、定义一个结构类型后,编译程序要为结构的各成员分配存储空间D、结构变量的各成员可通过结构变量名和指向结构变量的指针引用14、有以下程序#include main() char *p=“abcdeOfghjik0”;printf(“%dn”,strlen(p);程序运行后的输出结果是( D )。A、12 B、 15 C、 6 D、 515、以下叙述中错误的是( D )。A、二进制文件打开后可以先读文件的末尾,而顺序文件不可以B、在程序结束时,应当用fclose函数关闭已打开的文件C、 在利用fread函数从二进制文件中读数据时,
8、可以用数组名给数组中所有元素读入数据D、 不可以用FILE定义指向二进制文件的文件指针16、若有如下说明,则( D )的叙述是正确的。struct stint a;int b2;a;A、结构体变量a与结构体成员a同名,定义是非法的B、程序只在执行到该定义时才为结构体st分配存储单元C、程序运行时为结构体st分配6个字节存储单元D、类型名struct st可以通过extern关键字提前引用(即引用在前,说明在后)17、对于用r方式打开文件下列说法正确的是( B )。A、用r方式打开的文件只输入不能输出B、用r方式打开的文件只能输出,不能输入C、用r方式可以打开任何文件D、以上均不对18、在C语言
9、中,文件若按数据的组织形式分类可分为( B )。A、字符文件和数字文件 B、ASCII文件和二进制文件C、顺序文件和随机文件 D、以上均不对19、如有以下定义“int y44=1,2,3,4,5,6,7,8,9,10,*pyl=yl,(*py2)4=y;”,则不能正确引用值为7的数组元素的表达式是( B )。A、*(yl+2) B、*(y+1)+2 C、pyl2 D、 py21220、若有以下说明:int a10=1,2,3,4,5,6,7,8,9,10,*p=a;则数值为6的表达式是( C )。A、*p+6 B、*(p+6) C、*p+=5 D、p+5二、填空题(本题共6小题,每空2分,共3
10、0分)1、以下程序输出整形变量a的值,错误的语句是 (4) ,应改为 p=&a 。()main()()int a, *p;()a=100;()*p=a;()printf(“a=%d”,*p);()2、下面的程序用来统计文件中字符的个数,请填空。#include stdio.hmain()FILE *fp; long num=0;if(fp=fopen(filename.dat,r)= NULL )printf(cannot open file!n);exit(0);while( !feof(fp) )fgetc(fp); num+ ;fclose(fp);printf(num=%dn,num)
11、; 3、以下程序运行后输出的第一行内容是 AD ,第二行内容是 BC ,第三行内容是 BB 。 # include main() char *s1=”BD”,*s2=”BC”,*s3=”AB”; if (strcmp(sl,s2)0) swap(sl,s2); if (strcmp(s2,s3)0) swap(s2,s3); if (strcmp(sl,s2)0) swap(sl,s2); puts(sl); puts(s2); puts(s3); swap(char *s1,char *s2) char t; t= *s1;*s1=*s2;*s2=t;4、下面的函数用于比较两个给出的C字符串。按比较结果,函数将返回下列函数值:若: s1=s2 返回0s1s2 返回正值,请填空。程序scmp(char *s1,char *s2)while(*s1)if( *s1-*s2 )return( *s1-*s2 );elses1+;s2+;return( 0 ); 5、C程序中,数据可以用 二进制 和 ASCII 两种代码形式存放。6、运行程序后输出的第一行内