非计算机专业计算机等级考试C语言练习题(吐血推荐).doc_第1页
非计算机专业计算机等级考试C语言练习题(吐血推荐).doc_第2页
非计算机专业计算机等级考试C语言练习题(吐血推荐).doc_第3页
非计算机专业计算机等级考试C语言练习题(吐血推荐).doc_第4页
非计算机专业计算机等级考试C语言练习题(吐血推荐).doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言笔试练习题 一、单选题:(请选择一个正确结果 )1下列语句的输出为( )int x=1;printf(%d,%u,%O,x,x,x,);A)1,65535,177777 B)1,1,1C)1,32767,17777 D)1,32768,1777772若x,y为实数类型的变量,要判断x,y相等,最好使用下列关系表达式( C )A)x= =y;B)xy= =0;C)fabs(xy) 1e8;D)abs(xy)1e-8;3若有以下的定义、说明和语句,则值为101的表达式是( )。struct cwint a ;int *b; *p;int x0=11,12,x1=31,32;static struct cw x2=100,x0,300,x1;p=x;A)*pb B)paC)+ +(pa)D)(p+ +)a4若有以下定义和语句,则输出结果是( B )。char *sp=tb0Englishn;printf(%d, strlen(sp);A) 12B)3C)17D)135有如下程序void main() int x=23;do printf(%d,x);while(!x);该程序的执行结果是( B )A)321 B)23C)不输出任何内容D)陷入死循环6若已定义x和y为double类型,则表达式x=2, y=x+10/4的值是( C )A)2B)4C)4.0D)4.57要将一个整数12000分别以ASCII码文件和二进制文件形式存放,各自所占的存储空间数分别是( )字节。A)5和2 B)2和5 C)2和2 D)5和58对于类型相同的两个指针变量之间,不可进行的运算是( )A)= =B)=C)+D)9sizeof(a+10.4)的值为( )类型。A)int B)floatC)doubleD)char10若有定义int a=3; 则执行完printf(%d,a);语句后a的值为( A )A)3B)2C)2D)311若有float x=2.5;y=4.7;int a=7; 则表达式x+a%3*(int) (x+y)%2/4的值为( D )A)4.0B)3.0C)2.75D)2.512语句prin tf(s=%5.3s,computer); 的输出结果是( B )A)s= com B)s=comC)s= terD)s=ter13int a=3,b=4,c=5; 执行完表达式a+ +b&b+c&+c后,a,b,c的值分别为( B )A)3 4 5B)4 3 5C)4 4 4D)4 4 514int x=3,y=1; 则条件表达式xy?1:2.3的值为( A )A)1B)1.0C)2.3D)215若有定义int i=2,a10,*p=&ai:则与*p+等价的是( D )A)ai+ + B)ai+ +C)aiD)a+ +i16以下程序的输出结果是( C ):void main( ) int a=5,*p1,*p2;p1=&a,p2=&p1;(*p1)+ +;printf(%dn,*p2);A)5B)4C)6D)不确定17以下程序的输出结果是( )int x=3,y=4;void main( ) int x,y=5;x=y+ +;printf(%d,x);A)3B)4C)5D)618若#include后面的文件名用双引号括起来,寻找被包含文件的方式是( A )A)先按系统设定的标准方式查找,再在当前目录中查找B)先在当前目录中查找,再按系统设定的标准方式查找C)只在当前目录中查找D)只按系统设定的标准方式查找19程序设计的步骤一般分为:分析问题、构造模型、设计与描述算法、编写程序、调试程序和( )A)数据设计B)算法分析C)编制程序说明文档D)编译20表达式11&10的结果用十进制表示为( )。A)11B)3C)1D)1021结构化程序语言的三种基本结构是( A )(A)顺序结构、选择结构、循环结构(B)递归结构、循环结构、转移结构(C)嵌套结构、递归结构、顺序结构(D)循环结构、转移结构、顺序结构22若有以下说明和语句,请选出哪个是对c数组元素的正确引用( D )int c45,(*cp)5;cp=c;(A)cp+1(B)(cp+3)(C)*(cp+1)+3 (D)*(*cp+2)23设有如下的程序段:char str =hello;char *ptr;ptr=str;执行上面的程序段后,*(ptr+5)的值为( B )。(A)o (B) 0(C)不确定的值(D) o的地址24执行下面的程序段后,B的值为( B )。int x=35;char z=A;int B;B=(x&15)&(za);(A)0(B)1(C)2(D)325以下程序的输出结果为( C )。#includemain() int i;for(i=0;i10;i+);printf(%d,i);(A)0 (B)123456789(C)0123456789(D)1026以下程序的输出结果是( B )。#includemain() int i=010,j=10;printf(%d,%d,+i,j-);(A)11,10(B)9,10(C)010,9(D)10,927表达式k=(120)b=1;else b=0;该程序所表示的数学函数关系是( )(A)(B) (C) (D) 29在下列程序中,调用f(8)的值是( D )int f(int n) if(n= =1)return(1);else if(n= =2) return(2);else return(f(n-1)+f(n-2);(A)13(B)21(C)55(D)3430在执行程序china.exe时,若输入的命令行为:china enlish Beijing,则程序执行结果为( )。#includevoid main(int argc, char *argv) while(argc1)printf(%c,*+argv); argc-; (A)eB (B)ceB(C)china enlish Beijing(D)enlish Beijing31如a为int型,则与表达式a等价的C语言关系表达式是( )(A)a0 (B)a!=0(C)a= =0(D)a032循环语句for(a=0,b=0;(b!=45)|(a=x&(x=5) y*=x;后变量x、y的值应分别为( )。(A)2、4(B)5、2 (C)5、10 (D)执行时报错45若N为整型变量,则for(N=10;N=0;N-);循环里的循环体被( )。(A)无限循环(B)执行10次(C)执行一次(D)一次也不执行46在位运算中,操作数每左移一位,其结果相当于( A )A)操作数乘以2;B)操作数除以2;C)操作数除以4;D)操作数乘以4;47已有定义int k=2;int *ptrl,*ptr2,且ptrl和ptr2均已指向变量k,下面不能正确执行的赋值语句是( B )A)k=*ptrl+*ptr2;B)ptr2=k;C)ptrl=ptr2;D)k=*ptrl*(*ptr2);49下面程序的输出是( C )main()int x=l0,y=3;printf(“%dn”,y=x/y); A)0 B)1 C)3 D)不确定的值49已知:char s4=cba;char *p;执行语句序列p=s; printf(%cn,*p+1);后,其输出为( D )。A)字符cB)字符bC)字符aD)字符d50enum colorred,green,yellow=5,white,black;定义了一枚举类型编译程序为枚举值表中各标识符分配的枚举值依次为( )A)1、2、3、4、5B)0、1、5、2、3C)0、l、5、6、7D)3、4、5、6、751运行完下列程序后,在屏幕上的内容是( D )。main() int a=0;a+=(a=12);printf(%dn,a);A)0B)6C)12D)2452运行下列程序并用键盘输入53,48,32后,在屏幕上的内容是( )。main( ) int i,j,k;scanf(%d,%d,%d,&i,&j,&k);if(i50)printf(%d,i);else if(i40)printf(%d,j);eles if(i30)printf(%d,k);else printf(Error);A)53B)48C)32D)Error53设有下列语句typedef struct int n;char ch8;Stt;则下面叙述正确的是( )。A)Stt是结构体变量B)Stt是结构类型名C)typedef struct是结构体类型D)swuct是结构体类型名54函数strcat(strl,str2)的功能是( )A)将字符串strl连接到字符串str2之后。B)将字符串str2连接到字符串strl之后。C)将str2复制到字符串strl中。D)将strl复制到字符串str2中。55若要用fopen函数打开一个新的二进制文件,该文件要既能读又能写,则文件读写方式字符串应是( )A)4B)r+C)wb+D)ab56已知:int a34,*p=a0;p+=6;那么与*p的值相同的是( B )。A)*(a+6)B)*(&a0+6)C)*(a1+2)D)*( a00+6)57以下程序的输出结果是( )(注:备选答案中, 代表空格)main()printf(n*s1=%15s*,chinabeijing);printf(n*s2=%-5s*,chi);A)*s1=chinabeijin *s2=chi *B)*s1=chinabeijing *s2=*chi*;C)*s1=* chinabeijing* *s2=chi *;D)*s1=_chinabeijing*s2= chi; 58如下程序运行台m的值为( C )#include void main( ) int m,n,k;m=(n=4)+(k=l0-7);printf(m=%dn,m);A)4B)3C)7D)1459下面程序运行情况是( D ).#includevoid main( )int x=3,y=0,z=0;if(x=y+z) printf(“*”);else printf(“#”);A)有语法错误不能通过编译B)输出*C)可以通过编译,但不能通过连接,因而不能运行D)输出#60执行下面的程序后,a的值是( )#define SQR(x) x*xmain( ) int a=10,k=2,m=3;a/=SQR(m)/SQR(k);printf(“%dn”a);A)10B)1C)5D)061在C程序中,同一程序中的各函数之间( )。A)既允许直接递归调用也允许间接递归调用B)既不允许直接递归调用也不允许间接递归调用C)允许直接递归调用但不允许间接递归调用D)功允许间接递归调用但不允许直接递归调用62C语言中,以下叙述错误的是( )。A)函数被调用时,系统才为形参分配内存B)实参和对应形参的数据类型必须一致C)实参可以是变量、常量或表达式D)形参可以是变量、常量或表达式63C语言中,函数调用时若实参是数组名,则被调函数对应形参( )。A) 可以是相应类型简单变量B) 必须是相应类型的指针变量C) 必须是相应类型数组名D) 可以是相应类型的指针变量64一个数据类型为void的函数中可以没有return语句,那么函数被调用时( )A)没有返回值B)返回一个系统默认值C)返回只有用户临时决定D)返回一个不确定的值65有定义:float y,*p=&y;,假定变量y在内存中所占地址为100103。那么p的值为( )。A)100B)101C)102D)10366有定义:int a1010,*p=a0,j,k;,其中j和k表示数组元素下标并在数组允许范围内,那么能够正确引用元素ajk值的是( C )。A)*(aj+k) B)*(p+j)+kC)*(pj+k)D(a+j)+k二、判断题(正确的选,错误的选)l在C语言中,变量的初始化都是在编译阶段完成的。2如果一个函数只能被本文件中的其他函数所调用,则该函数为外部函数。3若x为整型变量、j为实型变量,当执行语句:x-(int)j;后,j也变为整型变量。4递归函数在实现过程中,要使用“堆栈”这种数据结构来保存递归调用过程中的值。5在C语言中,所有函数之间都可以相互调用。6在同一源文件中,全局变量与局部变量同名,在局部变量作用范围内,全局变量的值等于局部变量的值。7C语言是一种面向过程的语言。8用C语言编写的程序是一种需要经过编译和连接才能运行的程序。9语句for(;)循环体和 while(1)循环体是等价的。10如果被定义函数的返回值是整型或字符型,使用前可以不必进行说明。11语句while(!E);中的条件!E等价于E= =0。12格式字符%md中的m不能为负。13若某自定义函数中无return语句,则该函数一定没有返回值。14fclose函数顺利执行关闭操作则返回值为1。15C语言的编译系统对宏命令的处理是在对源程序中其他成份正式编译之前进行的。16在C语言的源程序中,注释使用越多,编译之后的可执行程序的执行效率越低。17如果strcmp(s1,s2)的返回值为一个负数,则表明字符串s1一定小于字符串s2。18表达式1282的值是32。19若有宏定义:#defineM(x,y,z)x*y+z则宏引用M(2+3,4+5,6+7)通过宏展开后的表达式应为(2+3)*(4+5)+6+7。20C语言程序中,任何英语单词均可以作标识符。21一个计算机系统中寄存器数目有限,不能定义任意多个寄存器变量。22函数fseek(fp,10L,1)的作用是将fp指向的文件内部指针从当前位置后移10个字节的位置。23在C程序中,函数调用不能出现在表达式语句中。24表达式(1b) max=a;else max=b;功能等价的赋值语句是 max=ab?a:b 。2、下列程序的功能是对某班的某科的学生成绩x进行分段统计。要求将0,60,60,70,70,80,80,90,0,100这五个分数段的人数分别统计在a5-a9中。学生成绩采用百分制。当非法输入时,结束统计。#includevoidmain() float x; int i,k; static int a10; scanf(f,&x);k= ;while(k=0&k10) if(k6) k=5;ak=ak+1;scanf(%f,&x);k=_;for(i=5;i10;i+ +)printf(%d%,ai);3.下面的函数用以验证命题:100以内的奇数的平方被8整除,余数均为1,若命题成立,则返回1,否则返回0请填空完成该函数。int func( ) int a, flag=1;for(a=1;a100;a+=2)if(_(a*a)%8=1_) flag=0;return(flag);4以下函数creatlist用来建立一个带头节点的单项链表,新产生节点总是插在链表的末尾。单项链表的头指针作为函数值返回。函数中以换行符作为链表建立的结束标志。请填空。#includestruct node char data; struct node *next;struct node * creatlist( ) struct node *h,*p,*q;char ch;h=(struct node*)malloc(sizeof(struct node);p=q=h;ch=getchar( );while(_) p=(struct node*)malloc(sizeof(struct node);p-data=ch;q-next=p;q=p; ch=getchar( );p-next=0;return h;5下述程序将磁盘中的一个文件复制到另一个文件中,文件名来自命令行。请填空。void main(int argc,char *argv) FILE *fin,*fout;if(argc3) puts(参数丢失1)return;if(fin=fopen(argv1,r)=NULL|(fout=fopen(argv2,w)=NULL) puts(无法打开文件!);return;while(_)fputc(fgetc(fin),fout);fclcse(fin);fclose(fout);6以下程序是输出Fibonacci数列前20个数,这个数列有如下特点:第1,2两个数为1,1,从第三个数开始,该数是其前面两个数之和。#includevoid main( ) int f20=1,1,i;for(i=2;i20;i+ +)fi= _;for(i=0;i20;i+ +) if(i%5= =0) printf(n);printf(%5d,fi);7下面程序的功能是输出5*6阶矩阵中值最大的元素值。#includevoid main( ) int i,j,a56,max;for(i=0;i5;i+ +)for(j=0;j6;j+ +)scanf(“%d”,&aij);max=a00;for(i=0;i5;i+ +)for(j=0;j6;j+ +)if(_)max=aij;printf(max=%dn,max);8以下递归函数是求n!之值。float fac(int n) float f;if(n= =0|n= =1) f=1;else f=_;return(f);9以下程序的作用是输出a数组中10个元素的值。#includevoid main( ) int i,a10,*p=a;for(i=0;i10;i+ +)scanf(%d,p+ +); _;for(i=0;i10;i+ +,p+ +)printf(“%5d”,*p);10以下函数返回字符串s的长度。int Strlen(char *s) char *p=s;while(*p!=0)p+;return(_);11C语言中包含一元运算符、二元运算符和三元运算符。其中条件运算符属于 _。12在C语言中没有固有的输入和输出语句,但是用C语言编写的程序可以用函数调用的形式来实现输入、输出,这些函数由_提供。13以下程序是求a数组中偶数之和及偶数之平均值。main() int s=0,k=0,i,a10=1,2,3,5,6,7,8,9,10;float ave;for(i=0;i10;i+)if(ai%2=0)s+=ai;_;if(k!=0) ave=_;printf(%d,%fin,k,ave);14下面函数的功能是将字符串中的数字字符删除。#includevoid delnum(char*s) int i,j,for(i=0;j=0;si!=0;i+)if(_) sj=si; j+;sj=0;15以下程序用来统计文件f.dat中字符的个数。#include stdio.hmain() FLLE *fp;char ch;long num=0L;if(fp=fopen(f.dat,r)=NULL)printf(Open Errorn);exit(0);ch=fgetc(fp);num=num+1;while(_)fgetc(fp); num=num+1fclose(fp);printf(num=%ldn,num);16下面程序的作用是将两个字符串连接在一起。#includemain()chararl80=abode,*str2=12345,_;ptrl=strl;whilc(*+ptrl);while(*pbl+=*str2+)!=0);puts(strl);17以下程序是求取矩阵A的主对角线上元素之和。#includestdio.hint main( ) int a33=1,2,3,4,5,6,7,8,9,sum1=0,i,j;for(i=0;i3;i+) for(j=0;j3;j+)if(i= =j)sum1=_;printf(sum1=%d,sum1);18MyStrCmp(char*slrl,char*str2)是比较两个字符串大小的函数,当strl,与str2相等时返回0,当strl大于str2返回一个正整数,当strl小于str2返回一个负整数。int MyStrCmp(char*strl,char*str2) for(;*strl= =*str2;strl+,str2+)if(*slrl= = _)return 0;return *strl-*str2;19若x=2,y=3,则x&y的结果是_。20在C语言中,一个函数一般均由两个部分组成,他们分别称为函数首部和_。21任何程序都可调用标准函数exit( ),当它被调用时,它_程序的执行。22下列语句定义结构体变量a,则a占用_个字节。struct damint i; char c; double d;a;23下面程序从键盘读入50个整数并求其中正整数之和。请完善程序main() int i,a,sum;sum=0;for(i=0;i50;i+) scanf(%d,&a);if(a0) _;sum=sum+a;printf(sum=%dn,sum);24下述程序在数组中同时查找最大元素下标和最小元素下标,并分别存放在main函数的变量max和min中,请填空。#includevoid find(int*a,int n,int*max,int*min) int k;*max=*min=a0;for(k=l;ka*max ) _ ;if(aka*min *min=k;void main0 int x =5,8,-7,2,12,7,3,10;int max,min;find(_);printf(n%d,%d,max,min);25下面程序的功能是输出数组中的各字符串,请填空完成程序。#includevoin main() char*a=“abcd”, “12345”, “efghijk”, “67890”;char _;int j=0;p=a;for(;j4;j+)puts(_);26下列程序的输出结果是( )#includevoid main( ) int m=0,n=0;char ch,s1=country,s2=side;while(s1m!=0) m+;while(s2n!=0) s1m+=s2n+;s1m=0;for(n=0;nm;n+)ch=s1n; s1n= s1m-1-n; s1m-1-n=ch;printf(%s,s1;)27以下程序的运行结果是( )。#include#define PR(a)printf(%dt,a)void main( ) int j,laa=1,2,3,4,5,6,7,8,9,10,*p=aa+4;printf(n);for(j=4;j;j-)switch(j) default:PR(*p+);case 1:case 2:PR(*p-);break;case 3:PR(*(+p);28下列程序的输出结果是( )#includevoidmain() char *str=1234567,*ptr;ptr=str;*(ptr+ 4)+=3;printf(%c,%cn, *ptr,*(ptr+4);29下列程序的输出结果是( )#includevoidmain( ) char ch25=1234,5678,*p2;int j,k,s=0;for(k=0;k2;k+)pk=chk;for(k=0;k=0& pkj=9;j+=2)s=l0*s+pkj-0;printf(s=%dn,s);30下列程序的输出结果是( )。#includevoid increment( ) static int x=0;x=x+1;printf(%2d,x);void main() increment();increment(); increment();31无论一个C程序有多少个函数构成,程序总是从 _开始执行的。32函数yh的功能是构成一个杨辉三角形,请填空完成该函数。#include,#define N 11void yh(aN) int j,k;for(j=1;jN;j+) aj1=1;ajj=1;for(_;jN;j+)for(k=2;k=j-1;k+)ajk=_+aj-1k;33下面程序的功能是统计是从命令行上传递进来的第一个参数中的字母个数。请填空完成程序。(注:参数个数从0开始记数)#include#includevoid main(int argc,_argv )char *str; int count=0;if(argc2)return;str=_;while(*str)if(isalpha(*str+)count+;printf(“%dn”,count);34下面程序用于计算1+(1+2)+(1+2+3)+(1+2+3+10),请完善程序。#includevoid main( ) int total,sum,m,n; _;for (m=1;m=10;m+) sum=0;for(n=1;n=m;n+) sum=sum+n;_;printf(total=%dn,total);四、阅读程序题1写出下列程序段的执行结果。( )#includevoid main( ) union int i2;long k;char c4;r,*s=&r;s-i0=0x39;s-i1=0x38;printf(%cn,s-c0);2下列程序的输出结果是( )#includevoid main( )void p(int *s,int *y);int i,a=11,22,32,41;int x=1;for(i=0;i4;i+) p(a,&x);printf(%d,x);void p(int *s,int *y) static int t=3;*y=st;t-;3下面程序的输出结果是( )#includevoid ff(char *p1,char *p2) while(*p2+=*p1+); viod main( ) char*p1=abcde,*p2=1234567;ff(p1,p2);printf(%sn%sn,p1,p2);4下面程序的输出结果是( )#includeint x=12,y=7;void main( )int x=15,z;z=x-y+;int y,z;while(y=x-) y/=3;if(y%3=0) z=(+y);break;printf(%d,%d,%dn,x,y,z);printf(%d,%d,%dn,x,y,z);5下面程序的输出结果是( )#includeextern int j=1;void main( ) void add( );int sum(int x);int k,s;add( );j+;printf(j=%dn,j);for(k=1;k=10;k+)s=sum(k);printf(s=%dn,s);void add( ) int j=0;j+;int sum(int j) int x=0;x+=j;return(x);6以下程序的运行结果是( )。#includevoid num() int x,y;int a=15,b=10;x=a-b;y=a+b;int x,y;void main( ) int a=17,b=15;x=a+b;y=a-b;num( );printf(%d,%dn,x,y);7下面程序的运行结果是( )#includevoid main() struct cmplx int x;int y;cnum2=1,3,0,7;printf(%dn,cnum0.y/cnum0.x*cnum1.x);8下列程序的输出结果是( )。#includevoid sub(iht*a,int n,int k) if(k=n)sub(a,n/2,2*k);*a+=k;void main() int x=0;sub(&x,8,1);printf(%dn,x);9下列程序的运行结果是( )。#4ncludcint find(int *a,int n) int *p,*s;for(p=a,s=a;p-a*s)s=p;return(*s);void main() int x5=12,11,13,6,18;printf(%dn,find(x,5);10下列程序的运行结果是( )。#includevoidmain() int m,n,numl,num2,temp;uml=6;num2=52;if(num1num2)temp=numl,numl=nnm2,num2=temp;m=numl;n=num2;while(n!=0) temp=mn;m=n;n=temp;printf(%dn,m);11#includevoid main() long fun(int n);printf(%ldn,fun(4);long fun(int n) long s;if(n= =1|n= =2) s=2; else s=n+fun(n-1);re

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论