您的当前位置:首页正文

2022年青岛职业技术学院公共课《C语言》科目期末试卷B(有答案)

来源:华拓网
2022年青岛职业技术学院公共课《C语言》科目期末试卷B(有答案)

一、填空题

1、C语言源程序的基本单位是________

2、下面程序段是找出整数的所有因子。请填空。

scanf(\"%d\",&x); i=1;for(;_______;)

{if(x%i==0)printf(\"%3d\",i); i++; }

3、下面程序段中循环体的执行次数是_______。 a=10;b=0;

do{b+=2;a-=2+b;}while(a>=0); 4、请读程序段: int x=1;

printf(\"%d\\n\",~x); 上面程序段的输出结果是_______。 5、请读程序段: unsigned a=16;

printf(\"%d,%d,%d\\n\",a>>2,a=a>>2,a);以上程序段的输出结果是_______。

6、在C语言中,用关键字_______定义单精度实型变量,用关键字_______定义双精度实型变量,用关键字_______定义字符型变量。

7、假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。请填空。

a+=_______;b=a-_______;a-=_______; 8、下面程序段的运行结果是_______。 int i=5;char c[6]=\"abcd\"; do{c[i]=c[i-1];}while(--i>0); puts(c);

9、下面程序段的运行结果是_______。

char ch[]=\"600\";int a,s=0;

for(a=0;ch[a]>= '0'&&ch[a]<='9';a++) s=10*s+ch[a]-'o'; printf(\"%d\",s);

10、下面程序可求出图中方括号内的元素之积,请填空。 # include int main()

{ int x[3][3]={7,2,1,3,4,8,9,2,6}; int s,*p; p=_______; s=*p*_______;

printf(\"product=%d\ return(0); }

二、选择题

11、sizeof(float)是( )。

A.一个双精度型表达式 B.一个整型表达式 C.一种函数调用 D.一个不合法的表达式 12、下面4个选项中,是非法常量的选项是( )。

13、以下C程序的运行结果是。(注:口表示空格)

#include int main() {int y=2456;

printf(\"y=%3o\\n\",y); printf(\"y=%8o\\n\",y); printf(\"y=%#8o\\n\",y); return 0; }

A.y=口口口2456 B.y=囗口□4630

y=口口口口口口口口2456 y=口口口口口口口04630

y= ########2456 y= ########4630 C.y=2456 D.y=4630

y=口口口口2456 y=口口口口4630 y=口口口02456 y=口口口04630 14、若有以下定义,则正确的赋值语句是( )。 int a,b;float x;

A.a=1,b=2, B.b++; C.a=b=5 D.b=int(x); 15、一个C语言程序由( )。

A.一个主程序和若干子程序组成 B.函数组成 C.若干过程组成 D.若干子程序组成

16、在C语言中,一维数组的定义方式为:类型说明符数组名( )。 A.[常量表达式] B.[整型表达式] C.[整型常量]或[整型表达式] D.[整型变量] 17、以下描述中正确的是( )

A.while、do-while、for循环中的循环体语句都至少被执行一次 B.do-while循环中,while(表达式)后面的分号可以省略

C.while循环体中,一定要有能使while后面表达式的值变为“假”的操作 D.do-while 循环中,根据情况可以省略 while

18、C语言规定,简单变量作为实参时,它和对应形参之间的数据传递方式是( ) A.地址传递 B.单向值传递

C.由实参传给形参,再由形参传回给实参 D.由用户指定传递方式

19、设有以下定义:

char*cc[2]={\"1234\",\"5678\");则正确的叙述是( )。

A.cc数组的两个元素中各自存放了字符串”1234”和\"5678”的首地址 B.cc数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 C.cc是指针变量,它指向含有两个数组元素的字符型一维数组 D.cc数组元素的值分别是1234和5678

20、以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是( )

int main() {int*p,*q,a,b; p=&a;

printf(\"input a:\"); scanf(\"%d\",*p); }

A.*p表示的是指针变量p的地址

B.*p表示的是变量a的值,而不是变量a的地址 C.*p表示的是指针变量p的值 D.*p只能用来说明p是一个指针变量

21、若w、x、y、z、m均为int型变量,则执行下面语句后的m值是( )。

w=1;x=2;y=3;z=4: m=(wm=(mA.1 B.2 C.3 D.4

22、若运行以下程序时,从键盘输入Total<回车>,则下面程序的运行结果是( )。

#include int main()

{charc;int vl=0,v2=0; do

{switch(c=getchar()) {case'a':v1+=1; case't':case'T':v2+=1; default:v1+=1;v2+=1; }

while(c!='\\n');

printf(\"v1=%d,v2=%d\\n\",v1,v2); return 0; }

A.v1=3,v2=4 B.v1=4,v2=4 C.v1=6,v2=8 D.v1=7,v2=9

23、若运行以下程序时,从键盘输入3.62.4<回车>,则下面程序的运行结果是( )

# include

# include int main() { float x,y,z;

scanf(\"%f%f\ z=x/y; while(1)

if(fabs(z)>1.0){x=y;y=z;z=x/y;} else break; printf(\"%f\\n\ return 0; }

A)1.500000 B)1.600000 C)2.000000 D)2.40000024、以下程序的运行结果是( )。

#include int fun(int n) {int m=0,f=-1,i; for(i=1;i<=n;i++) {m=m+i*f; f=-f; }

return m;

int main()

{printf(\"m=%d\\n\",fun(10)); return(0);

A.m=5 B.m=-6 C.m=6 D.m=-5 25、对两个数组a和b进行如下初始化:

char a[]=\"ABCDEF\";charb[]={'A','B','C','D','E','F'};则以下叙述正确的是( )。

A.a与b数组完全相同 B.a与b长度相同 C.a和b中都存放字符串 D.a的长度比b长

三、读程序填空

26、若要求下列程序的输出结果为8.00,则[]中应填入的是_______。

#include int main() {int k=2,m=5; float s,x=1.2,y=[]; s=2/3+k*y/x+m/2; printf(\"%4.2f\\n\",s); return 0; }

27、以下程序的输出结果为_______。 #include int main()

{short i; i=一4;

printf(\"\\ni:dec=%d,oct=%o,hex=%x,unsigned=%u\\n\",i,i,i,i); return 0;

}

28、下面函数func的功能是_______。

#include #include #include long func(long num) {long k=1;

num=labs(num); do

{k*=num%10; num/=10; }while(num); return(k); }

int main() {long n;

printf(\"\\nPlease enter a number:\");

scanf(\"%ld\",&.n);

printf(\"\\nThe product of its digits is%ld.\",func(n)); return(0); }

29、以下程序可计算1门课程中10名学生成绩的平均分。请填空。

#include

float average(float array[10]) {int i;float aver, sum=array[o];

for(i=1;_______;i++) sum+=_______; aver=sum/10; return(aver); }

int main()

{float score[10],aver;int i; printf(\"\\ninput 10 scores:\");

for(i=0;i<10;i++)scanf(\"%f\",&.score[i]); aver=_______;

printf(\"\\naverage score is%5.2f\\n\",aver); return(0);

}

30、数组a包括10个整型元素。下面程序的功能是求出a中各相邻两个元素的和,并将这些和存在数组b中,按每行3个元素的形式输出。请填空。

# include int main() { int a[10],b[10],i; for(i=0;i<10;i++) scanf(\"%d\ for(________;i<10;i++) _________ for(i=1;i<10;i++) {printf(\"%3d\ if(_____==0) printf(\"\\n\"); return 0; }

31、以下程序的功能是判断输入的某个年份是否是闰年。请填空。

#include int main() {int y,f;

scanf(\"%d\",&y); if(y%400==0)f=1;

else if(_______)f=1; else_______;

if(f)printf(\"%d is\",y); else printf(\"%d is not\",y); printf(\"a leap year\\n\"); return 0;

}

32、下面程序的运行结果是_______。

#include int main() {int i,j=4;

for(i=j;i<=2*j;i++) switch(i/j) {case 0:

case 1:printf(\"*\");break; case 2:printf(\"#\"); } return 0; }

33、以下程序把一个十进制整数转换成二进制数,并把此二进制数的每一位放在一维数组b中,然后输出b数组。(注意:二进制数的最低位放在数组的第一个元素中。)请填空。

#include int main()

{int b[16],x,k,r,i; printf(\"Enter a integer:\\n\"); scanf(\"%d”,&x);

printf(\"%6d's binary number is:\",x); k=-1; do {r=x%2; k++;

*(_______)=r; x/=2;

}while(_______); for(i=k;i>=0;i--)

printf(\"%1d\",*(_______)); printf(\"\\n\"); return(0); }

四、编程题

34、编写程序实现功能:输入整数a和b,若a2+b2>100,则输出a2+b2百位以上数字,否则直接输出a2+b2的和

35、试利用结构体类型编制一个程序,实现输入一个学生的数学期中和期末成绩,然后计算并输出其平均成绩。

参考答案

一、填空题

1、函数 2、i<=x 3、3 4、-2 5、1,4,16

6、【1】float【2】double【3】char 7、【1】b【2】b【3】b 8、aabcd 9、600

10、【1】&x[0][0]【2】(*(p+4))*(*(p+8))

二、选择题

11、B 12、A 13、D 14、B

15、B

16、A 17、C

18、B 19、A 20、B 21、A 22、D 23、B 24、A 25、D

三、读程序填空

26、3.6

27、i:dec=-4,oct=177774,hex=fffc,unsigned=65532 28、计算整数num的各位数字之积。

29、【1】i<10【2】array[i]【3】average(score) 30、【1】i=1【2】b[i]=a[i]+a[i-1];【3】(i%3) 31、【1】y%4==0&&y%100!=0【2】f=0 32、****#

33、【1】b+k【2】x!=0【3】b+i

四、编程题

34、#include int main()

{int a,b,x,y;

scanf(\"%d%d\",&a,&.b); x=a*a+b*b; if(x>100)

{y=x/100;printf(\"%d\",y);} else printf(\"%d\",a+b); return 0 }

35、#include int main()

{struct study int mid; int end; int average;

}math;

scanf(\"%d%d\",&math.mid,&.math.end); math.average=(math.mid+math.end)/2; printf(\"average=%d\\n\",math.average); return 0; }

因篇幅问题不能全部显示,请点此查看更多更全内容