C语言学校题库专项练习1.pdf
《C语言学校题库专项练习1.pdf》由会员分享,可在线阅读,更多相关《C语言学校题库专项练习1.pdf(125页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C 语言学校题库专项练习1专 项 1 选择题500道1.设有如下函数fac(int x)(float y=1.0;return(x*y);则函数的类型为().AJnt 型B、float 型C、无法确定Devoid 型注:不定义时默认是int2.以下程序输出的是:()(答案中用大写字母U 代表空格)main()int a=-l,b=4,k;k=(a+=0)&(!(b-=0);printf(%d%d%dn,k,a,b);)A.0U1U2B.0U0U3C、1U0U3D.1U1U2注:k=(a+=0)&(!(b-=0);a=a+=a+1=0b=b=b-l=3a+=0为真(b-)=0 为假,则!(b-)
2、=0 为真所 以 k=l答 案 是 1 0 33.执行下列程序段后,m 的值是().int w=2,x=3,y=4,z=5,m;m=(wx)?w:x;m=(my)?m:y;m=(mz)?m:z;A、5B、3C、2D、44.设有以下定义:int a43=l,2z3z4,5,6,7,8,9,10,llz12);int(*prt)3=a,*p=a0;则 能 够 正 确 表 示 数 组 元 素 的 表 达 式 是().A、*(*(p+5)B、*(*(a+l)+2)C、*(*prt+1)D、(*prt+l)+2注:参考二维数组指针如下1.通过地址来引用二维数组元素若有以下定义:int 且当04i3、04
3、j4,则 a 数组元素可用以 F 五种表达式来引用:(l)aij(2)*(ai+j)(3)*(*(a+i)+j)(4)(*(a+i)j(5)*(&a00+4*i+j)2.当p 数组的每个元素指向a 数组每行的开头时,则 a 数 组 元 素 的 引 用 形 式*(ai+j)和*(pi+j)是完全等价的。由此可见,这时可以通过指针数组p来引用a 数组元素,它们的等价形式如下:(l)*(pi+j)(2)*(*(p+i)+j)(3)(*(p+i)j(4)pij不同的是:pi中的值是可变的,而 ai中的值是不可变的。3.通过建立一个行指针来引用二维数组元素若有以下定义:int a32,(*prt)2;在
4、这里,说明符(*prt)2中,由于一对圆括号的存在,所以*号首先与prt结合,说明prt是一个指针变量,然后再与说明符2结合,说明指针变量prt的基类型是一个包含有两个int元素的数组。在这里,prt的基类型与a 的相同,因此p代=a;是合法的赋值语句。prt+1等价于a+1、等价于al当 prt指向a 数组的开头时,可 以 通 过 以 下 形 式 来 引 用*(prti+j)(2)*(*(prt+i)+j)(3)(*(prt+i)j(4)prtiU在这里,prt是个指针变量,它的值可变,而 a 是一个常量。5.下列字符序列中,可用作C 标识符的一组字符序列是()。A,D56,r_l_2,na
5、me,_st_lB,S.b,sum,average,_aboveC、#md,&12x,month,student_n!D,class,day,lotus_l,2day6.设j 和 k 都是int类型,则下面的for循环语句0。for(j=0,k=0;jageD.p.age9.以下程序的输出结果是().#include stdio.hf(char*s)char*p=s;while(*p!=0,)p+;return(p-s);m ain()printf(,%dn,f(,ABCDEF);)A、0B、6C、3D、810.执行下面程序中的输出语句后,输出的值是:(),main()int a=5;prin
6、tf(%dnHz(a=3*5za*4,a+5);A、20B、65C、10D、15I L 下列程序段的输出结果是:().void fun(int*x,int*y)printf(%d%d,*x,*y);*x=3;*y=4;main()int x=l,y=2;fun(&y,&x);printf(%d%d,x,y);)A、2 1 1 2B、1 2 3 4C、2 1 4 3D、1 2 1 212.若fp 已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为()A.-1B、1C、一个非。值D、0注:未遇到文件结束返回为0,读取错误为-1,正常结尾为113.有两个整型变量dog和 c
7、at,若要从磁盘文件把数据读到其中,正确的形式是().AJscanf(dog,2,1,fp);B,fscanf(fp,%d%d,&dog,&cat);C、fscanf(dog,cat,2,l,fp);D,fscanf(fp,%d,&dog,&cat);14.逻辑表达式33-!0的值为:()A、1B、3c、oD、215.以下程序段中,能够正确地执行循环的是0。AJnt s=6;m:if(s10;i+)D,static int a;while(a)16.char a=This is a program.;输出前 5 个字符的语句是0。A、puts(a);B,printf(%5s,a);C,prin
8、tf(%s,a);D,a5*2=0;puts(a);注:A puts(a);输出a 的整个字符串C printf(%s,a);输出a 的整个字符串D a5*2=0;puts(a);将 a10赋值为0 后,输 出 a 的前十个字符即This is a;只有B 是输出前5 个字的语句。17.已知下面的程序段,若使得i=10,j=15,x=9.6,y=81.73正确的输入语句是().main()int i,j;float x,y;A.scanf(%d,%d,&i,&j);scanf(%f,%5.2f,&x,&y);B,scanf(%d,%d,&i,&j);scanf(%e,%5.2f,&x,&y);
9、Cscanf(%d,%d,i,j);scanf(%f,%f,&x,&y);D,scanf(%d,%d,&i,&j);scanf(%f,%f,&x,&y);18.下述程序的输出结果是().void prt(int*x)printf(%d,+*x);main()int y=30;Prt(&y);)A、32B、30C、29D、3119.表达式18/4*sqrt(4.0)/8值的数据类型为()A,doubleB,floatCJntD、不确定20.若k 是整型,则以下程序段的执行结果是:()k=-3;if(k0C、num=0DJnum!=027.假定有以下变量定义:int k=7,x=12;则能使值为3
10、 的表达式是:()A、(x%=k)-(k%=5)B、x%=(k-k%5)C、x%=k-k%5D、x%=(k%=5)28.char*sl=hello,*s2;s2=sl;则()A、puts(sl);与 puts(s2);结果相同B、不能访问helloC、s2指向不确定的内存单元D、s l 不能再指向其它单元29.下面选择中正确的赋值语句是(设char a5,*p=a;)().A、p=abcd;B,a=abcd;C,*a=abcd;D、*p=abcd;3O.static struct int al;float a2;char a3;a10=l,3.5,A);说明数组a 是地址常量,它有10个结构体
11、型的下标变量,采用静态存储方式,其中被初始化的下标变量是()A、aB,a10C、alD.a-131.以下正确的说法是0。A、用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调B、用户若需调用标准库函数,调用前必须重新定义C、系统根本不允许用户重新定义标准库函数D、用户可以重新定义标准库函数,若如此,该函数将失去原有含义32.以下正确的函数定义是().A,double fun(int x,int y)z=x+y;return z;B、fun(x,y)int x,y;double z;z=x/y;return z;C,float f(int x,int
12、 y)float z;z=x/y;retrun z;D Jun(int x,y)int z;return z;33.int 按照数组a 的元素在内存的排列次序,希望将1,2,3,4,5,6存入a 数组中,以下语句无法实现的是()。A Jor(i=l;i=6;i+)aii=i;BJor(i=0;i6;i+)ai/3i%3=i+l;C Jor(i=0;i2;i+)for(j=0;j3;j+)aij=i*3+j+l;D,for(i=0;i3;i+)for(j=0;j1)D,while(M1)38.定义int a=0,123,4,5,6,7,8,9,*p=a,i;,其中 0Si49,则对a 数组元素的
13、引用不正确的是().A.ap-aB、piC、*(*(a+i)D、*(&ai)39.在执行 文件包含 命令时,下列说法正确的是().A、作为一个源程序编译,得到一个目标文件.B、一 个 include命令可指定多个被包含文件.C、在编译时作为两个文件联结.D、被包含的文件可以是源文件或目标文件.40.已定义 float x=1.25,y=3.37;根据下面的输出结果,正确的输出语句是().y+x=4.62,y-x=2.12A.printf(y+x=%6.2f,y-x=%6,2fn,y+x,y-x);B.printf(y+x=%f,y-x=%fn,y+x,y-x);C,printf(y+x=%.2
14、f,y-x=%.2fn,y+x,y-x);D,printf(y+x=%5.2f,y=%5.2fn,y+x,y-x);41.在执行fopen函数时,ferror函数的初值是(),A、-lB、0C、TRUED、142.若以a+方式打开一个已存在的文件,则以卜叙述正确的是0,A、文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作B、以上各种说法皆不正确C、文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作D、文件打开时,原有文件内容被删除,只可作写操作43.对for(表达式1;表达式3)可以理解为().A、for(表达式1;表达式3;表达式3)B、for(
15、表达式1;表达式1;表达式3)C、for(表达式1;1;表达式3)D、for(表达式1;0;表达式3)44.下述错误的C 语言常量是:().A、OxfB、5.C090D、.25注:0 开头的话,说明是八进制数,八进制数里只会出现字符0 7,不可能有9 的45.如果在一个函数中的复合语句中定义了个变量,以下正确的说法是().A、该变量在本程序范围内均有效B、该变量在主函数中有效C、该变量只在该复合语句中有效D、该变量在该函数中有效46.对于如下的结构体定义,若对变量person的出生年份进行赋值,正确的赋值语句是().struct dateint year,mouth,day;);struct
16、worklistchar name20;char sex;struct date birthday;person;A、year=1976;B,person.birthday.year=1976;C、birthday.year=1976;D,person.year=1976;4 7.卜述函数的功能是().int fun(char*x)char*y=x;while(*y+);return y-x-1;)A、比较两个字符串的大小B、求字符串存放位置C、求字符串的长度D、将字符串x 连接到字符串y 后面48.下面程序的输出结果应该是().void prtv(int*x)printf(%dn,+*x);
17、main()int a=25;Prtv(&a);)A,24B、26C、23D、2549.若fp 是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp)的返回值是0。A.NULLB、非零值C、0D、EOF50.若定义 int a12=l,2z3,4,5,6,7,8,9z10,U,12;char c=a,d,g;则数值为4 的表达式是().A、a4B、ag-cC.afd-cD,ad-c51.设有以下语句,若 0k4,下列选项中对字符串的非法引用是()char str42=aaa,bbb,ccc,ddd),*strp4;int j;for0=O;jb)c=l;else if(a=b)c=0
18、;else c=-l;return c;)A、0B、-lC、2D、156.以下程序的输出结果是().m ain()char str=ABCD,*p=str;printf(%dn,*(p+4);A,68B、字符D 的地址C、不确定的值D、057.函数fun用于将一字符串按相反次序显示,则横线上的表达式为().void fun(char*s)if(!*s)return;printf(%c,*s);)A.printf(%s,s+1);B、fun(*(s+1);C,printf(%s,s+strlen(s)-l);D Jun(s+1);注:运行第一次的时候,s 为首地址的对吧,我们假设为sO,在调用f
19、un(s+l州 寸,进入一个递归,此时,还未调用到打印的地方,那么此时s 为第二个字符,此时s 为 si,依次类推,当运行到最后一位是打印的数据为s(end),此时s(end)为空字符,return 了对吧,那么返回上一个,也就是字符串最后一个不为空的字符,并打印结束后再返回,然后再逐个打印,就将字符串逆向打印出来了58.filel.c中有命令,#include,若 file2.c中有全局静态变量a,则().A、a 在 filel.c中应用extern说明.B、a 在 filel.c中有效,不必用extern说明.C a 在 filel.c中不生效D、a 在 filel.c和 file2.c中
20、均不生效.59.设有宏定义#define PI 3.14 和#define S(r)PI*r*r,则 S(2)的值为().A、6.28B.12.56C、3.14D、9.4260.所谓文本文件又叫()文件.A、图象B、保存C.ASCIID、可执行61.在函数调用语句中,fopen(my.dat,ab+);的含义是().A、为读/写打开一个二进制文件B、读一个二进制文件C、为读/写打开一个文本文件D、为写打开一个二进制文件62.以下可作为函数fopen中第 个参数的正确格式是()A,c:usertext.txtB、c:usertext.txtC.c:usertext.txtD,c:usertext
21、.txt注:字符串中的 必须用转义字符 63.假定所有变量均已正确定义,下列程序段运行后x 的值是0kl=l;k2=2;k3=3;x=15;if(!kl)x-;else if(k2)x=4;else x=3;A、4B、15C、3D、1464.以下程序段给数组所有的元素输入数据,请选择正确答案填入(),#include main()int a10,i=0;while(i0|E0)B、(E=O)C、(!E=O)D、(日=0)66.在Turbo C 运行环境下,下列说法中正确的是().A、双引号中字符串的字符,如果与宏名相同,就要替换.B、用宏定义不可以得到多个返回值.C、双引号中字符串的字符,即使
22、与宏名相同,也不替换.D、调用函数可以得到多个返回值.67.以下能计算1+2+3+10的程序段是().A、do i=l;s=0;s=s+i;i+;while(i=10);BJ=l;s=0;while(i=10);D,i=l;s=0;while(i=10)s=s+i;i+;68.在所有函数之前,定义个外部变量的形式为static int x;那么错误的叙述是().A、x 的值不可以永久保留B、将变量存放在静态存储区C、使变量x 可以山系统自动初始化为0D、使 x 只能被本文件中的函数引用69.设:long w=65535,t=7654321;根据下面的输出结果,正确的程序段是().w=65535
23、,t=7654321endA.printf(w=%5d,t=%7dn,w,t);printf(%s,end);B,printf(w=%5ld,t=%7ld,w,t);printf(%c,end);C,printf(w=%5ld,t=%7ldn,w,t);printf(%s,end);D,printf(w=%5uzt=%7un,w,t);printf(end);70.函数调用:strcat(strcpy(strl,str2),str3)的功能是()A、将串s trl复制到串str2中后再连接到串str3之后B、将串str2连接到串s trl之后再将串s trl复制到串str3中C、将串s trl
24、连接到串str2之后再复制到串str3之后D、将串str2复制到串s trl中后再将串str3连接到串s trl之后71.若 int类型数据占两个字节,则下列语句的输出为(),int k=l;printf(%d,%un,k,k);A,-1,-1B,-1,32767C-1,32768D、-1,65535注:u 为以无符号十进制输出。无符号整数能表示的数范围是0-65535,即对应的二进制数 0-1111111111111111(16 个 1)oint b=-l;b 为有符号的整型,以 1111111111111111(16个 1)的二进制数存储。(-1-进制表示为1000000000000000
25、1,负数在计算机中用反码表示,即 1111111111111111)1,如果用d 输出b,则为-1,但是转换成无符号整数u 输出,1111111111111111(原来的有符号整数-1)被解释成1111111111111111(无符号整数6 5 5 3 5),输出结果为6553572.设a=12,且 a 定义为整型变量。执行语句a+=a-=a*=a;后 a 的值为()A、0B、144C、132D、1273.执行语句for(i=l;i+4;);后 变 量 i 的值是()。A、3B、5C、4D、不定74.设有宏定义#define MA(x)x*(x-l),且 a=l,b=2,则 MA(l+a+b)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学校 题库 专项 练习
限制150内