2022年北京印刷学院公共课《C语言》科目期末试卷A(有答案)_第1页
2022年北京印刷学院公共课《C语言》科目期末试卷A(有答案)_第2页
2022年北京印刷学院公共课《C语言》科目期末试卷A(有答案)_第3页
2022年北京印刷学院公共课《C语言》科目期末试卷A(有答案)_第4页
2022年北京印刷学院公共课《C语言》科目期末试卷A(有答案)_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

2022年北京印刷学院公共课《C语言》科目期末试卷A(有答案)一、填空题1、设x为无符号整数。表达式x^(~(~0<<n)<<(p+1-n)))的作用是将x中从第p位开始的n位求反(1变0,0变1),其他位不变。请按表达式的求值顺序写出分解步骤,并解释含义。__________________________________2、C语言源程序的基本单位是________3、结构化程序由________、________、________3种基本结构组成。4、把以下多项式写成只含7次乘法运算,其余皆为加、减运算的C语言表达式为_______。5x7+3x6-4x5+2x1+x3-6x2+x+105、已知字母a的ASCIl码为十进制数97,且设ch为字符型变量,则表达式ch='a'+'8'-3'的值为_______。6、下面程序段的运行结果是_______。chars[20]="abcd";char*sp=s;sp++;puts(strcat(sp,"ABCD"));7、下面程序段中循环体的执行次数是_______。a=10;b=0;do{b+=2;a-=2+b;}while(a>=0);8、假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。请填空。a+=_______;b=a-_______;a-=_______;9、为建立如图10-5所示的存储结构(即每个结点两个域,data是数据域,next是指向结点的指针域),请将定义补充完整。structs{chardata;_______}node;10、设有以下宏定义:#defineWIDTH80#defineLENGTHWIDTH+40则执行赋值语句:v=LENGTH*20;(v为int型变量)后,v的值是_______。二、选择题11、表达式18/4*sqrt(4.0)/8值的数据类型为()A.intB.floatC.doubleD.不确定12、若x、i、j和k都是int型变量,则执行表达式x=(i=4,j=16,k=32)后x的值为()。A.4B.16C.32D.5213、设x、y和z均为int型变量,则执行语句x=(y=(z=10)+5)-5;后,x、y和z的值是()。A.x=10B.x=10C.x=10D.x=10y=15y=10y=10y=5z=10z=10z=15z=1014、以下能正确地定义整型变量a,b和c并为其赋初值5的语句是()。A.inta=b=c=5;B.inta,b,c=5;C.a=5,b=5,c=5;D.a=b=c=5;15、判断字符串a和b是否相等,应当使用()。A.if(a==B.B.if(a=B.C.if(strcpy(a,B.)D.if(strcmp(a,B.)16、以下叙述不正确的是()A.一个C源程序可由一个或多个函数组成B.一个C源程序必须包含一个main函数C.C程序的基本组成单位是函数D.在C程序中,注释说明只能位于一条语句的后面17、执行语句for(i=1;i++<4;);后变量i的值是()。A.3B.4C.5D.不定18、在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是()A.externB.registerC.autoD.static19、已有定义int(*p)();指针p可以()。A.代表函数的返回值B.指向函数的入口地址C.表示函数的类型D.表示函数返回值的类型20、设有以下定义:char*cc[2]={"1234","5678");则正确的叙述是()。A.cc数组的两个元素中各自存放了字符串”1234”和"5678”的首地址B.cc数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址C.cc是指针变量,它指向含有两个数组元素的字符型一维数组D.cc数组元素的值分别是1234和567821、以下程序的运行结果是()。#include<stdio.h>intfun(inta,intB.{if(a>B.return(a+B.;elsereturn(a-B.;intmain(){intx=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf("%d\n",r);return(0);}A.-16B.-17C.17D.1622、下面程序的运行结果是()。#include<stdio.h>intmain(){charstr[]="SSSWLIA",c;intk;for(k=2;(c=str[k])!=\o';k++){switch(C.{case'I':++k;break;case'L':continue;default:putchar(C.;continue;putchar('*’);}return0;}A.SSW*B.SW*C.SW*AD.SW23、下面程序段的运行结果是()。inta[6],i;for(i=1;i<6;i++){a[i]=9*(i-2+4*(i>3))%5;printf("%3d",a[i]);}A)-40404B)-40403C)-40443D)-4044024、以下程序的输出是()。#include<stdio.h>intmain(){inta=5,b=8,c=3,max;max=a;if(c>B.if(c>A.max=c;elseif(b>A.max=b;printf("max=%d\n",max);return0;}A.max=8B.max=5C.max=3D.无输出结果25、下面程序的运行结果是()。#include<stdio.h>intmain(){inti;for(i=1;i<=5;i++)switch(i%5){case0:printf("*");break;case1:printf("#");break;default:printf("\n");case2:printf("&.");}return0;}A)#&8&&*B)#&C)#D)#&&&&*&*&*三、读程序填空26、以下程序的输出结果为_______。#include<stdio.h>intmain(){shorti;i=一4;printf("\ni:dec=%d,oct=%o,hex=%x,unsigned=%u\n",i,i,i,i);return0;}27、已有定义intd=-2;执行以下语句后的输出结果是_______。printf("*d(1)=%d*d(2)=%3d*d(3)=%-3d*\n",d,d,d);printf("*d(4)=%x*d(5)=%6x*d(6)=%-6x*\n",d,d,d);28、若运行以下程序时输入:1992<回车>,则程序的运行结果是_______。#include<stdio.h>intmain(){inty,t;scanf("%d",&y);t=((y%4==0&&y%100!=0)||y%400==0)?1:0;if(t)printf("%dis",y);elseprintf("%disnot",y);printf("aleapyear");return0;}29、以下程序的功能是_______。#include<stdio.h>intmain(){intx,y,sum,product;printf("Enterxandy:");scanf("%d,%d",&x,&y);sum=x+y;product=x*y;if(sum>product)printf("(x+y)>(x*y)");elseprintf("(x*y)>=(x+y)");return0;}30、下面程序的功能是从键盘输入的10个整数中,找出第一个能被7整除的数。若找到,打印此数;若未找到,打印notexist。请填空。#include<stdio.h>intmain(){inti,a;for(i=1;i<=10;i++){scanf("%d",&a);if(a%7==0)_______;}if(_______)printf("%d\n",a);elseprintf("notexist\n");return0;}31、下面程序的运行结果是_______。#include<stdio.h>intsub(intn);intmain(){inti=5;printf("%d\n",sub(i));return(0);}intsub(intn){inta;if(n==1)return1;a=n+sub(n一1);return(a);}32、设数组a中的元素均为正整数,以下程序是求a中偶数的个数和偶数的平均值。请填空。#include<stdio.h>intmain(){inta[10]={1,2,3,4,5,6,7,8,9,10};intk,s,i;floatave;for(k=s=i=0;i<10;i++){if(a[i]%2!=0)_______;s+=_______;k++;}if(k!=0){ave=s/k;printf("%d,%f\n",k,ave);}return0;}33、以下程序的运行结果是_______。#include<stdio.h>#defineM4voidfun(int*a){inti,j,k,m;for(i=M;i>0;i--){k=*(a+M-1);for(j=M-1;j>=0;j--)*(a+j+1)=*(a+j);*a=k;for(m=0;m<M;m++)printf("%d",*(a+m));printf(\n");}}intmain(){inta[M]={1,2,3,4);fun(a);return(0);}四、编程题34、输入两个整数,求它们相除的余数。用带参的宏编程来实现。35、编写程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该串,请用指针完成。

参考答案一、填空题1、【1】~0得到一个全1的数【2】(~0<<n)得到一个左端几个1,右端全0的数【3】~(~0<<n)得到一个左端为0,右端几个1的数【4】~(~0<<n)<<(p+1-n)将几个1移到以p为起点的位置【5】x^(~(~0<<n)<<(p+1-n))对x中的指定位数用异或求反2、函数3、【1】顺序结构【2】选择结构【3】循环结构4、X*(X*(X*(X*(X*(X*(5*X+3)一4)+2)+1)-6)+1)+105、f6、bedABCD7、38、【1】b【2】b【3】b9、structs*next;10、880二、选择题11、C12、C13、A14、A15、D16、D17、C18、D19、B20、A21、B22、B23、C24、B25、B三、读程序填空26、i:dec=-4,oct=177774,hex=fffc,unsigned=6553227、*d(1)=-2*d(2)=囗-2*d(3)=-2囗**d(4)=fffe*d(5)=囗囗fffe*d(6)=fffe囗*(注:答案中的囗代表空格)28、1992isaleapyear29、输入两个数x、y,比较x+y和x*y哪个大。30、【1】break【2】i<=1031、1532、【1】continue【2】a[i]33、4123341223411234四

温馨提示

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

评论

0/150

提交评论