2022年兰州交通大学公共课《C语言》科目期末试卷A(有答案)一、填空题1、若x=0123,则表达式(5+(int)(x))&(~2)的值是_______。
2、在C语言源程序中,一个变量代表【】。
3、一个C语言源程序由若干函数组成,其中至少应含有一个________4、在C语言中,用“\”开头的字符序列称为转义字符。
转义字符“\n”的功能是_______;转义字符“\r”的功能是_______。
5、若x和a均是int型变量,则执行表达式(1)后的x值为_______,执行表达式(2)后的x值为_______。
(1)x=(a=4,6*2)(2)x=a=4,6*26、已有一维数组a,n为元素的个数,且各元素均有值;函数void process(float*p,int n,float(*fun)(float*,int))为一个可完成下面各种计算的通用函数。
请分别写出用于以下计算的各函数中的调用语句_______、_______和_______。
(1)float arr_add(float*arr,int n)计算数组元素值之和。
(2)float odd_add(float*p,int n)计算下标为奇数的元素之和。
(3)float arr_ave(float*p,int n)计算各元素的平均值。
7、执行下面程序段后,k的值是_______。
k=1;n=263;do{k*=n%10;n/=10;} while(n);8、设有以下定义和语句,请在printf语句的_______中填上能够正确输出的变量及相应的格式说明。
union{int n;doublex;}num;num.n=10;num.x=10.5;printf("_______",_______);9、已有定义int a;float b,x;char cl,c2;为使a=3、b=6.5、x=12.6、cl='a'、c2='A',正确的scanf函数调用语句是_______,数据输入的形式应为_______。
10、设有以下宏定义:#define WIDTH80#define LENGTH(WIDTH+40)则执行赋值语句:k=LENGTH*20;(k为int型变量)后,k的值是_______。
二、选择题11、下面4个选项中,是不合法的整型常量的选项是 ( )。
A.--0f1B.-0XcdfC.-018D.-0x48eg0xfff 017 999 -0680011 12.456 5e2 03f12、设有说明语句:int k=7,x=12;则以下能使值为3的表达式是( )。
A..x%=(k%=5)B..x%=(k-k%5)C..x%=k-k%5D..(x%=k)-(k%=5)13、以下程序的运行结果是()。
#include <stdio.h>int main(){int xl=0xabc,x2=0xdef;x2-=xl;printf("%X\n",x2);return 0}A.ABCB.0XabcC.0X333D.33314、设有以下程序:#include<stdio.h>int main(){int a=201,b=012;printf("%2d,%2d\n",a,B.;return 0;.}程序执行后的输出结果是()。
A.01,12B.201,10C.01,10D.20,0115、下面程序段的运行结果是()。
charc[]=\t\\\\owil\n";printf("%d",strlen(C.);A.14B.3C.9D.字符串中有非法字符,输出值不确定16、以下叙述不正确的是( )A.一个C源程序可由一个或多个函数组成B.一个C源程序必须包含一个main函数C.C程序的基本组成单位是函数D.在C程序中,注释说明只能位于一条语句的后面17、设有程序段:int k=10;while(k=0)k=k-1;则下面描述中正确的是()。
A.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次18、C语言规定,简单变量作为实参时,它和对应形参之间的数据传递方式是()A.地址传递B.单向值传递C.由实参传给形参,再由形参传回给实参D.由用户指定传递方式19、下面能正确进行字符串赋值操作的是()。
A.char s[5]={"ABCDE');B.char s[5]={'A','B','C','D','E'};C.char*s;s="ABCDE";D.char*s;scanf("%s",s);20、下面程序段的运行结果是()。
char*s="abcde";s+=2;printf("%d',s);A.cdeB.字符cC.字符c的地址D.无确定的输出结果21、折半查找法的思路是:先确定待查元素的范围,将其分成两半,然后测试位于中间点元素的值。
如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中点之后的元素;反之,测试中点之前的元素,测试方法同前。
函数binary的作用是应用折半查找法从存有10个有序整数的a数组中对关键字m进行查找,若找到,返回其下标值;反之,返回-1。
请选择填空。
int binary(int a[10],int m){int low=0,high=9,mid;while(low<=high){mid=(low+high)/2;if(m<a[mid])high=mid-1;else if(m>a[mid])【】;else return(miD.;return(一1);}A.high=mid-1B.low=mid+1C.high=mid+1D.low=mid-122、当运行以下程序时,从键盘输入:aa bb<回车>ccdd<回车>则下面程序的运行结果是()。
#include<stdio.h>int main(){char al[5],a2[5],a3[5],a4[5];scanf("%s%s",al,a2);gets(a3);gets(a4);puts(a1);puts(a2);puts(a3);puts(a4);return 0;}A)aa B)aa C)aa D)aa bbbb bb bb cccc cc dd ddcc dd dd ee23、当运行以下程序时,从键盘输入:AhaMA Aha<回车>,则下面程序的运行结果是()#include<stdio.h>int main(){char s[80],c='a';int i=0;scanf("%s",s);while(s[i]!= '\0'){if(s[i]==c) s[i]=s[i]-32;else if(s[i]==c-32) s[i]=s[i]+32:i++;}puts(s);return 0;}A)ahAMa B)AhAMa C)AhAMa ahA D)ahAMa ahA24、以下程序的输出是()。
#include <stdio.h>int main(){int x=1;if(x=2)printf("OK");else if(x<2)printf("%d\n",x);else printf("Quit");return 0;}A.OKB.QuitC.1D.无输出结果25、下面程序段的运行结果是()。
for(y=1;y<10;)y=((x=3*y,x+1),x-1);printf("x=%d,y=%d",x,y);A.x=27,y=27B.x=12,y=13C.x=15,y=14D.x=y=27三、读程序填空26、以下程序的输出结果为_______。
#include<stdio.h>int main(){short i;i=一4;printf("\ni:dec=%d,oct=%o,hex=%x,unsigned=%u\n",i,i,i,i);return 0;}27、以下程序的运行结果是_______。
#include<stdio.h>int main(){int n=100;char c;float f=10.0;double x;x=f*=n/=(c=48);printf("%d%d%3.1f%3.1f\n",n,c,f,x);return 0;}28、以下程序的功能是:输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其他字符不变。
请填空。
#include <stdio.h>int main(){char ch;scanf("%c",8&.ch);if(_______)ch=ch+32;else if(ch>='a′8.&ch<='z′)_______;printf("%c",ch);return 0;}29、以下程序的功能是:某邮局对邮寄包裹有如下规定,若包裹的长、宽、高任一尺寸超过1m或重量超过30kg,不予邮寄;对可以邮寄的包裹每件收手续费0.2元,再加上根据表4-5按不同重量weigh计算的邮资。
请填空。
重量与邮资# include<stdio.h>int main(){ float len, weigh, hei, wid, mon,r;scanf("%f %f %f %f",&len,&wid,&hei,&weigh);if(len>1|| wid>1|| hei>1 || weigh>30)___________;else if (weigh<10) r=0.8;else if (weigh<=20) r=0.75;else if (weigh<=30) ___________;if (r==-1) printf("error\n");else{___________;printf("%f",mon);}return 0;}30、下面程序的运行结果是_______。