您好,欢迎访问三七文档
一、选择题(每题1分,共20分)1.C语言程序的三种基本结构是顺序结构、选择结构和结构。A、循环B、递归C、转移D、嵌套2.下列标识符中,合法的是_______。A)unsignedB)5abC)INT#D)_num23.若floatx;x=10/4;x的值是。A、2.5B、2.0C、3D、24.表达式!x等价于。A、x==0B、x==1C、x!=0D、x!=15.算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为。A、算术运算、赋值运算、关系运算B、关系运算、赋值运算、算术运算C、算术运算、关系运算、赋值运算D、关系运算、算术运算、赋值运算6.能将高级语言编写的源程序转换为目标程序的是。A、链接程序B、解释程序C、编译程序D、编辑程序7.下列语句定义pf为指向float类型变量f的指针,是正确的。A、floatf,*pf=f;B、floatf,*pf=&f;C、float*pf=&f,f;D、floatf,pf=f;8.一个C程序的执行是从。A、本程序的main函数开始,到main函数结束B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C、本程序的main函数开始,到本程序文件的最后一个函数结束D、本程序文件的第一个函数开始,到本程序main函数结束9.能正确表示“当x的取值在[1,10]或[[200,210]范围内为真,否则为假”的表达式是________。A、(x=1)&&(x=10)&&(x=200)&&(x=210)B、(x=1)||(x=10)||(x=200)||(x=210)C、(x=1)&&(x=10)||(x=200)&&(x=210)D、(x=1)||(x=10)&&(x=200)||(x=210)10.对两个数组a和b进行如下初始化chara[]=“ABCDEF”;charb[]={‘A’,’B’,’C’,’D’,’E’,’F’};则以下叙述正确的是。A、a和b数组完全相同B、a和b长度相同C、a和b中都存放字符串D、a数组比b数组长度长11.是不正确的字符常量。A、'\n'B、'1'C、aD、'\101'12.若变量已正确定义,语句“if(ab)k=0;elsek=1;”和等价。A、k=(ab)?1:0;B、k=ab;C、k=a=b;D、a=b?0:1;13.设变量定义为“intx,*p=&x;”,则&*p相当于。A、pB、*pC、xD、*&x14.有两个字符数组a、b,则以下正确的输入语句是。A)gets(a,b);B)scanf(“%s%s”,a,b);C)scanf(“%s%s”,&a,&b);D)gets(“a”),gets(“b”);15.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是。A、地址传递B、单向值传递C、由实参传给形参,再由形参传回给实参D、由用户指定传递方式16.C语言规定,函数返回值的类型是由。A、return语句中的表达式类型所决定B、调用该函数时的主调函数类型所决定C、调用该函数时系统临时决定D、在定义该函数时所指定的函数类型所决定17.若已定义chars[10];则在下面表达式中不表示s[1]的地址的是。A、s+1B、s++C、&s[0]+1D、&s[1]18.下列关于switch语句和break语句的说法中,正确的是。A、break语句是switch语句中的一部分。B、在switch语句中可以根据需要使用或不使用break语句。C、在switch语句中必须使用break语句。D、以上三个结论中有两个是正确的。19.以下对二维数组a的正确说明是。A、inta[][3]={0};B、inta[3][]={{1},{2},{3}};C、inta[1][3]={1,2,3,4};D、inta[2][3]={{1,2},{3,4},{5,6}};20.以下结构体类型和变量的定义,正确的是。A、structstudentB、struct{intnumber,{intnumber,charname[20],charname[20],}s;};s;C、structstudentD、structstudent{intnumber;{intnumber;charname[20];charname[20];}s;};s;二、填空题(每空2分,共20分)1.写出语句printf(%d,%o,%x,0x12,12,012);的输出结果①。2.C语言运算符中,优先级最低的是②。3.intx;floaty;且执行scanf(“%3d%f”,&x,&y);语句时,从第一列开始输入数据12345678,则x的值是③y的值是④。4.定义inti=1;执行while(i++5)后i的值为⑤。5.执行下列语句chars[4]=”DEF”,*p;p=s;后,*(p+3)的值是⑥。6.构成数组的各个元素必须具有相同的⑦。5.在C语言中,二维数组元素在内存中的存放顺序是⑧。7.在C语言中,逻辑“假”值为⑨。8.字符串”ab\034\\\x79”的长度为⑩。三、读程序,写结果(每题4分,共20分)1.写出下列程序段的输出结果。#includestdio.hmain(){intk;for(k=10;k!=0;k--);printf(%d,k);}3.写出下列程序的输出结果。#includestdio.hmain(){structst{intx,y;}a[4]={{10,20},{30,40},{50,60},{70,80}};structst*p=a;printf(%d,,(*a).x);printf(%d,,a[2].y);printf(%d\n,(*(p+3)).x);}5.写出下列程序的输出结果。#includestdio.hvoidmain(){inta[10]={1,2,3,-4,5,6,7,-8,9,10},s=0;for(inti=0;i10;i++){if(a[i]0)break;s+=a[i];}printf(%d,s);}四、程序填空题(每空2分,共20分)1.下列程序,求数组中主对角线元素之和。main(){inta[3][3],s=0;for(inti=0;i3;i++)2.写出下列程序的输出结果。#includestdio.hvoidsub(intx,inty,int*z){*z=y-x;}main(){inta,b,c;sub(7,3,&a);sub(2,a,&b);sub(a,b,&c);printf(%d,%d,%d\n,a,b,c);}4.写出下列程序的输出结果。#includestdio.hvoidmain(){intk,j,a[5][5],b[5];for(k=0;k5;k++)for(j=0;j5;j++)a[k][j]=k*5+j+1;for(k=0;k5;k++){b[k]=0;for(j=0;j5;j++)b[k]+=a[k][j];}for(k=0;k3;k++)printf(%4d,b[k]);}for(intj=0;j3;j++)scanf(%d,①);for(i=0;i3;i++)for(intj=0;j3;j++)if(②)s+=③;printf(s=%d\n,s);}2.下面的程序的功能是:利用指针统计一个字符串中,字母、空格、数字、及其它字符的个数,请填空。#includestdio.hvoidmain(){intalpha,space,digit,other;char*p,s[80];alpha=space=digit=other=0;gets(s);for(p=s;*p!='\0';p++)if(④)alpha++;elseif(⑤)space++;elseif(⑥)digit++;elseother++;printf(alpha:%dspace:%ddigit:%dother:%d\n,alpha,space,digit,other);}输入10个数,按从大到小的顺序排序输出。#includestdio.hvoidmain(){inti,j,a[10],temp;for(i=0;i10;i++)⑦for(i=0;i9;i++)for(⑧;⑨;j++)if(⑩){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}for(i=0;i10;i++)printf(%d,a[i]);}五、编程题(每题10分,共20分)1.从键盘输入10个整数,求所有素数的和。要求判断整数是否为素数的功能用函数实现。2.a为float型的一维数组,输入n个实数,去掉一个最大数,去掉一个最小数,求其他n-2个数的平均值(输出时要求保留一位小数.)如输入5/*n=5*/2.13.54.31.93.7则输出3.5+2.1+3.7的平均值:3.1。
本文标题:C语言试卷及答案
链接地址:https://www.777doc.com/doc-2109009 .html