1、2022 年北京联合大学公共课C 语言科目期末试卷 B(有答案)一、填空题1、已有定义int a;float b,x;char cl,c2;为使a=3、b=6.5、x=12.6、cl=a、c2=A,正确的scanf函数调用语句是 ,数据输入的形式应为 。2、C 语言源程序的基本单位是 3、一个 C 语言源程序由若干函数组成,其中至少应含有一个 4、若x和a均是int型变量,则执行表达式( 1)后的x值为 ,执行表达式(2) 后的x值为 。(1)x=(a=4,6*2)(2)x=a=4,6*25、在 C 语言中,用关键字 定义单精度实型变量,用关键字 定义双精度实型变量,用关键字 定义字符型变量。
2、6、请读程序段: unsigned a=16;printf(%d,%d,%dn,a2,a=a2,a);以上程序段的输出结果是 。7、下面程序段是找出整数的所有因子。请填空。scanf(%d,&x);i=1;for(; ;)if(x%i=0)printf(%3d,i); i+;8、下面程序段将输出computer。请填空。char c=It is a computer; for(i=0; ;i+) ;printf(%c,cj);9、若有定义:doublex35;,则 x 数组中行下标的下限为 ,列下标的上限为 。10、定义语句int*f();int(*f)();的含义分别为 和 。二、选择题11
3、、对应以下各代数式中,若变量a和x均为double类型,则不正确的C语言表达式是()12、设以下变量均为int类型,则值不等于7的表达式是()。A.(x=y=6,x+y,x+1)B.(x=y=6,x+y,y+1) C.(x=6,x+1,y=6,x+y) D.(y=6,y+1,x=y,x+1)13、C 语言规定:在一个源程序中,main 函数的位置( ) A.必须在最开始 B.必须在系统调用的库函数的后面C.可以任意 D.必须在最后14、以下叙述不正确的是()A.一个C源程序可由一个或多个函数组成B.一个C源程序必须包含一个main函数C.C程序的基本组成单位是函数D.在C程序中,注释说明只能位
4、于一条语句的后面15、若有初始化inta3=1,2,3,4,5,6,7;,则以下错误的叙述是()A.引用a数组时,元素的两个下标值均不能超过2 B.a数组的第一维大小为3C.a 数组中包含 9 个元素D.a 数组中包含 7 个元素16、已知ch是字符型变量,下面不正确的赋值语句是()A.ch=a+b;B.ch=o;C.ch=7+9;D.ch=5+9;17、若需要建立如图9-3所示的存储结构,且已有说明float*p,m=3.14;则正确的赋值语句是()A)p=m;B)p=&m;C)*p=m;D)*p=&m;18、若用数组名作为函数调用的实参,则传递给形参的是()A.数组的首地址B.数组第一个元
5、素的值C.数组中全部元素的值D.数组元素的个数19、执行语句for(i=1;i+4;);后变量i的值是()。A.3B.4C.5D.不定20、以下正确的描述是()。A. continue语句的作用是结束整个循环的执行B. 只能在循环体内和switch语句体内使用break语句C. 在循环体内使用break 语句或continue语句的作用相同D. 从多层循环嵌套中退出时,只能使用goto语句21、执行以下程序段后的输出是()。Int i=-1; if(i=0)printf(”*n) elseprintf(%n);A.*B.有语法错,不能正确执行C.%CD.%22、下面程序的功能是将已按升序排好序
6、的两个字符串a和b中的字符按升序归并到字符串c中。请选择填空。#include #include int main()char a=acegikm,b=bdfhjlnpq; charc80,*p;int i=0,j=0,k=0;while(ai!=o&bj!=o)if(aibj) ck=ai;i+ else【】k+;ck=o;if(ai= 0)p=b+j; else p=a+i; strcat(c,p); puts(C.;return 0;A.ck=ai;i+;B.ck=aj;i+;C.ck=ai;j+;D.ck=aj;j+; 23、定义如下变量和数组:int k;int a33=1,2,3,
7、4,5,6,7,8,9;则下面语句的输出结果是()。for(k=0;k3;k+)printf(%d,ak2-k); A)3 5 7B)3 6 9C)159D)14724、以下程序的运行结果是( )。#include int f(int x,int y)return(y-x)*x;int main()int a=3,b=4,c=5,d; d=f(f(a,C.,f(a,B.+f(c,B.); printf(%dn,D.;return(0);A.-48B.58C.-58D.4725、下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空()
8、。#include int main()int m=0,n=0;charc; while(c=getchar()!=n)if(c=A&c=a&.c=z)n+;printf(%dn,mn?【】); return 0;A.n:mB.m:nC)m:mD)n:n三、读程序填空26、以下程序的运行结果是 。#include int main()int m=177; printf(%on,m); return 0;27、以下程序的输出结果为 。#includeint main()short i; i=一4;printf(ni:dec=%d,oct=%o,hex=%x,unsigned=%un,i,i,i,
9、i);return 0;28、以下程序的运行结果是 。#includevoid f(inta)int i=0; while(ai=10)printf(%d,ai); i+;int main()int a=1,5,10,9,11,7; f(a+1);return(0);29、以下程序的运行结果是 。#includevoid func(); int n=1;int main()static intx=5;int y; y=n;printf(MAIN:x=%2d y=%2dn=%2dn,x,y,n); func(); printf(MAIN:x=%2dy=%2dn=%2dn,x,y,n); func
10、();return(0);void func()static int x=4;int y=10; x=x+2;n=n+10;y=y+n;printf(FUNC:x=%2dy=%2dn=%2dn,x,y,n);30、下面程序的功能是用公式:𝜋= 1 + 1 + 1 + 16 122232𝑛2求𝜋的近似值,直到最后一项的值小于 10-6为止。请填空。# include# includeint main() long i=1; pi=0; while(i*i=10e+6) pi= ;i+; pi=sqrt(6.0* pi); printf(pi=%10
11、.61fn, pi); return 0;31、下面程序用“两路合并法”把两个已按升序排列的数组合并成一个升序数组。请填空。#include int main()int a3=5,9,19;int b5=12,24,26,37,48; intc10,i=0,j=0,k=0; while(i3&.j5)if( )ck=b;k+;j+; elseck=ai;k+;i+; while( )ck=ai;i+;k+; while( )ck=b;k+ 十 ;j+; for(i=0;ik;i+)printf(%3d,ci);return 032、下面程序的功能是:根据表4-3中给定的函数关系,对输入的每个x
12、值计算出相应的y值。请填空。函数关系xx=a或x=-a-axax- ay 0sqrt(a*a-x*x)x# include# includeint main() int x,a; float y; scanf(%d%d,&x,&a); if ( ) y=0;else if ( ) y=sqrt(a *a-x*x); else y=x; printf(%f,y);33、以下程序的运行结果是 。#include void swap(int*pl,int*p2)int p; p=*p1;*pl=*p2;*p2=p;int main()int a=5,b=7,*ptrl,*ptr2; ptr1=&a;
13、ptr2=&b; swap(ptr1,ptr2);printf(*ptrl=%d,*ptr2=%dn,*ptrl,*ptr2); printf(a=%d,b=%dn,a,b);return(0);四、编程题34、设有一个数列,包含10个数,已按升序排好。现要求编写程序,把从指定位置开始的n个数按逆序重新排列并输出新的完整数列。进行逆序处理时要求使用指针方法。试编程。(例如:原数列为2、4、6、8、10、12、14、16、18、20,若要求把从第4个数开始的5个数按逆序重新排列,则得到新数列为 2、4、6、16、14、12、10、8、18、20。)35、已知head指向一个带头结点的单向链表,链
14、表中每个结点包含数据域( data) 和指针域(next)。请编写函数实现如图10-8所示链表的逆置。若原链表为:逆置后的链表应为:参考答案一、填空题1、【1】scanf(%d%f%f%c%c”,&a,&.b,8.c1,8.c2);【2】3囗6.5囗12.6aA(注:答案中的囗代表空格)2、函数3、主函数(或 main 函数)4、【1】12【2】45、【1】float【2】double【3】char 6、1,4,167、i=x8、【1】ib【2】i3【3】j-a &xa33、*ptrl=7,*ptr2=5,a=7,b=5四、编程题34、#include int main()int b10,po
15、sition,num,k,*q1,*q2,temp; printf(Input 10 sorted numbersn); for(k=0;k10;k+)scanf(%d,&.bk); printf(nlnput the position:n); scanf(%d,&position);printf(Input the number of data that be sorted again:n); scanf(%d,&num);printf(The old array b is:n); for(k=0;k10;k+)printf(%4d,bk); printf(n); q1=&bposition-1; q2=&bposition-2+num;for(;q1&bposition-1+num/2;q1+,q2-)temp=*q1;*q1=*q2;*q2=temp; printf(The new array b is:n);for(k=0;knext;if(p!=NULL)head-next=NULL;doq=p-next;p-next=head-next; head-next=p; p=q;while(p!=NULL);
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。