当前位置:文档之家› 青岛科技大学c语言期末考试题(第四套)

青岛科技大学c语言期末考试题(第四套)

第四套试题一、选择题(20个小题,每小题2分,共40分):1、以下不正确的C语言标识符是____。

A.ABC B.abc C.a_bc D.ab.c2、设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,值为0的表达式是____。

A.‘a’&&‘b’ B.a<=b C.a||b+c&&b-c D.!((a<b)&&!c||1) 3、若有以下定义和语句:char c1=‘b’,c2=‘e’;printf(“%d,%c\n”,c2-c1,c2-‘a’+‘A’);则输出结果是____。

A.2,M B.3,EC.2,e D.输入项与对应的格式控制不一致,输出结果不确定4、当运行以下程序时,在键盘上从第一列开始输入9876543210<CR>(此处<CR>代表Enter),则程序的输出结果是____。

main( ){ int a;float b,c;scanf(“%2d%3f%4f”,&a,&b,&c);printf(“\na=%d,b=%f,c=%f\n”,a,b,c);}A.a=98,b=765,c=4321 B.a=10,b=432,c=8765C.a=98,b=765.000000,c=4321.000000D.a=98,b=765.0,c=4321.05、设有如下函数定义:int f(char *s){ char *p=s;while(*p!=‘\0’) p++;return (p-s);}如果在主程序中用下面的语句调用上述函数,则输出结果为____。

printf(“%d\n”,f(“goodbye!”));A.3 B.6 C.8 D.06、以下程序的输出结果是____。

main( ){ int w=4,x=3,y=2,z=1;pr intf(“%d\n”,(w<x?w:z<y?z:x));}A.1 B.2 C.3 D.47、以下程序段的输出结果是____。

int k,j,s;for(k=2;k<6;k++,k++){ s=1;for(j=k;j<6;j++) s+=j;}printf(“%d\n”,s);A.9 B.1 C.11 D.108、以下叙述正确的是____。

A.do_while语句构成的循环不能用其它语句构成的循环来代替B.do_while语句构成的循环只能用break语句退出C.用do_while语句构成循环时,只有在while后的表达式为非零时结束循环D.用do_while语句构成循环时,只有在while后的表达式为零时结束循环9、以下函数调用语句中,含有的实参个数是____。

func((exp1,exp2),(exp3,exp4,exp5));A.1 B.2 C.4 D.510、以下程序的输出结果是____。

double f(int n){ int i;double s=1.0;for(i=1;i<=n;i++) s+=1.0/i;return s;}main( ){ int i,m=3;float a=0.0;for(i=0;i<m;i++) a+=f(i);printf(“%f\n”,a);}A.5.500000 B.3.000000 C.4.000000 D.8.2511、以下程序段的输出结果是____。

int i,j,m=0;for(i=1;i<=15;i+=4)for(j=3;j<=19;j+=4) m++;printf(“%d\n”,m);A.12 B.15 C.20 D.2512、以下程序中若第一个printf语句输出的是194,则第二个printf语句输出结果是____。

main( ){ int a[ ]={1,2,3,4,5,6,7,8,9,10},*p;p=a;printf(“%x\n”,p);printf(“%x\n”,p+9);}A.212 B.204 C.1a4 D.1a613、若有定义:int a[ ]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素的引用不正确的是____。

A. a[p-a]B. *(&a[i])C. p[i]D. *(*(a+i))14、以下程序的输出结果是____。

main( ){ int aa[3][3]={{2},{4},{6}},i,*p=&aa[0][0];for(i=0;i<2;i++){ if(i==0) aa[i][i+1]=*p+1;else ++p;printf(“%d”,*p);}printf(“\n”);}A.23 B.26 C.33 D.3615、执行下列程序后,y的值是____。

main( ){ int a[ ]={2,4,6,8,10};int y=1,*p,x;p=&a[1];for(x=0;x<3;x++)y+=*(p+x);printf(“%d\n”,y);}A.17 B.18 C.19 D.2016、以下程序的输出结果是____。

void sub(float x,float *y,float *z){ *y=*y-1.0;*z=*z+x;}main( ){ float a=2.5,b=9.0,*pa,*pb;pa=&a; pb=&b;sub(b-a,pa,pa);printf(“%f\n”,a);}A.9.000000 B.1.500000 C.8.000000 D.10.500000 17、下面程序的输出结果是____。

#include “stdio.h”main( ){ static char b[ ]= “Goodbye”;char *chp=&b[7];while(--chp>=&b[0]) putchar(*chp);putchar(‘\n’);}A.Goodbye B.gOODBYE C.无任何输出 D.eybdooG18、若有如下说明,则____的叙述是正确的。

struct st{ int a;int b[2];}a;A.结构体变量a与结构体成员a同名,定义是非法的B.程序只有在执行到该定义时才为结构体st分配存储单元C.程序运行时为结构体变量a分配6个字节存储单元D.不能将结构体类型说明与变量定义紧凑写在一起19、设有如下定义:struct std{ int a;float b;}data ,*p;若有p=&data;则对data中的成员变量a的正确引用是____。

A.(*p).data.a B.(*p).a C.p->data.a D.p.data.a 20、以下程序的输出结果是____。

main( ){ char x=040;printf(“%d\n”,x=x<<1);}A.100 B.160 C.120 D.64二、填空题(10个小题,每小题2分,共20分):1、若a是int型变量,则执行表达式 a=25/3%3 后,a的值为____。

2、C语言中用____表示逻辑值“真”。

3、用在循环结构中,可以结束本次循环的语句是____。

4、用数组名作为函数参数是地址传递方式。

地址传递是____(单向/双向)传递。

5、在二维数组初始化时,可以省略数组的____(行下标/列下标),系统会根据初值的个数,算出该下标的大小。

6、若输入字符‘A’,在以下while语句执行后ch的值为____。

while(ch=getchar( )==‘A’);7、所谓“指针”,就是____。

8、设有宏定义:#define MUL(z) (z)*(z),则执行以下语句后,输出结果为____。

printf(“%d\n”,MUL(1+2)+3);9、若有定义和语句:char str[ ]=“ABCD”,*p=str;printf(“%d\n”,*(p+4));则输出结果是____。

10、能够实现局部翻转(0变1,1变0)的位运算是____。

三、读下面程序,写出执行结果(4个小题,每小题5分,共20分):1、若运行以下程序时,从第一列开始输入数据:2473<CR>(<CR>代表Enter),写出程序的执行结果。

#include “stdio.h”main( ){ char c;while((c=getchar( ))!=‘\n’)switch(c-‘2’){ case 0:case 1 :putchar(c+4);case 2 :putchar(c+4);break;case 3 :putchar(c+3);default:putchar(c+2);break;}printf(“\n”);}2、main( ){ int x=2,y=3,z=0;try(x,y,z);printf(“(2)x=%d,y=%d,z=%d\n”,x,y,z);}try(int x,int y,int z){ z=x+y; x=x*x; y=y*y;printf(“(1)x=%d,y=%d,z=%d\n”,x,y,z);}3、#includ e “stdio.h”#include “string.h”main( ){ char *p1=“abc”,*p2=“ABC”,str[50]=“xyz”;strcpy(str+2,strcat(p1,p2));printf(“%s\n”,str);}4、#include “stdio.h”#define NUM 8void invert(int *a,int n);main( ){ int a[NUM]={10,20,30,40,50,60,70,80},i;invert(a,NUM);for(i=0;i<NUM;i++)printf(“%4d”,a[i]);printf(“\n”);}void invert(int *a,int n){ int i,j,t;i=0;j=n-1;while(i<j){ t=a[i];a[i]=a[j];a[j]=t;i++;j--;}}四、编程题(2个小题,每小题10分,共20分):1、编写程序,计算如下公式的值:t=1-1/(2*2)-1/(3*3)-…-1/(m*m)。

例如,若m=5,则应输出0.536389。

要求:利用scanf函数输入m的值。

利用子函数形式,m充当参数,不能只利用main函数形式实现。

2、编写程序,从输入的10个字符串中通过比较,找出最小和最大的字符串进行输出。

要求:利用二维字符数组。

利用gets函数进行输入,puts函数进行输出。

相关主题