南京工程学院C语言期末冲刺卷
本试卷为南京工程学院C语言期末冲刺卷,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
C语言期末冲刺卷
一、理论基础 (共20题,每题1分,共计10分)
( D )
1、设有定义:int x=2; ,以下表达式中,值不为6的是________。
( A )
2、没x为int型变量,则执行以下语句后,x的值为( )。 x=10;x=x-=x-x;
( C )
3、若有说明语句:int a; float b; ,以下输入语句正确的是________。
( C )
4、下列四组选项中,正确的c语言标识符是________。
( C )
5、以下各选项企图说明一种新的类型名,其中正确的是______。
( A )
6、下面关于形参与实参的说法,正确的是________。
( A )
7、下列关于指针运算的描述中,错误的是________。
( A )
8、C源程序中的命令 #include与#define是在______阶段被处理的。
( C )
9、对于ascii 码在机器中的表示,下列说法正确的是________。
( A )
10、若整型变量a、b、c、d中的值依次为:1、4、3、2,则条件表达式a<b a:c<d c:d的值是________。
( D )
11、三元条件运算符ex1ex2:ex3,相当于下面的( )语句。
( B )
12、在结构化程序设计中,限制使用goto语句的原因是________。
( C )
13、以下叙述中不正确的是________。
( B )
14、在c语言中以下说法不正确的是________。
( B )
15、为了避免在嵌套的条件语句if 一else 中产生二义性,c 语言规定else 子句,总是与配对。
( C )
16、若有定义:int a=1,b=2,c=3,d=4,m=2,n=2; 则执行(m=a>b)&&(n=c>d)后 n 的值是________。
( B )
17、以下叙述中正确的是________。
( C )
18、char *s1="hello",*s2; s2=s1; 则________。
( D )
19、C语言函数的隐含存储类别是________.
( D )
20、在定义构造数据类型时,不能()。
二、控制结构 (共10题,每题1分,共计10分)
( A )
1、与 y=(x>0?1:x<0?-1:0); 的功能相同的if语句是________。
( A )
2、有如下程序: main () { int x = 1, a = 0, b = 0; switch (x) { case 0: b++; case 1: a++; case 2: a++; b++; } printf ("a = %d, b = %d\n", a, b); } 该程序的输出结果是________。
( A )
3、以下程序的输出结果是 main() { int a=0,i; for(i=;i<5;i++) { switch(i) { case 0: case 3:a+=2; case 1: case 2:a+=3; default:a+=5; } } printf("%d\n",a); }
( C )
4、switch语句中表达式(expression)的值不允许用的类型是________。
( A )
5、if语句的基本形式是:if(表达式)语句,以下关于"表达式"值的叙述中正确的是______。
( B )
6、以下if语句书写正确的是________。
( D )
7、设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=3则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为______。
( B )
8、c语言中,关系表达式和逻辑表达式的值是________。
( A )
9、c语言的if语句嵌套时,if与else的配对关系是________。
( D )
10、执行下列程序段后,m 的值是________. int w=2,x=3,y=4,z=5,m; m=(w
三、循环结构 (共10题,每题1分,共计10分)
( C )
1、下列标识符不是关键字的是________。
( D )
2、以下程序的输出结果是 main( ) { int a,b; for(a=1,b=1;a<=100;a++) { if (b>=10) break; if (b%5==1) { b+=5; continue; } } printf("%d\n",a); }
( C )
3、下面程序的运行结果是________。 main( ) { int m=7,n=5,i=1; do { if (i%m==0); if (i%n==0) { printf("%d\n",i); break; } i++; } while(i!=0); }
( B )
4、以下描述错误的是_________。
( C )
5、若a和b均是整型变量并已正确赋值,正确的switch语句是________。
( B )
6、有以下程序 #include<stdio.h> main() { int a=1,b=2; while(a<6) { b+=a; a+=2; b%=10; } printf("%d,%d\n",a,b); } 程序运行后的输出结果是________。
( B )
7、执行下面程序片段的结果是______。int x=23; do { printf("%2d",x--); } while(!x);
( D )
8、以下程序的输出结果是______。 main() { int a,b; for(a=1,b=1;a<=100;a++) { if(b>=10) break; if(b%3==1) { b+=3; continue; } } printf("%d\n",a); }
( D )
9、循环语句"for(i=1;i<0;i++) i++; "的循环次数是________。
( A )
10、执行以下循环语句时,下列说法正确的是________。x = -1; do { x = x * x; } while (x == 0);
四、数组/指针数组 (共10题,每题1分,共计10分)
( A )
1、设有如下程序段 char s[20]= "bejing",*p; p=s; 则执行p=s; 语句后,以下叙述正确的是________。
( B )
2、当调用函数时,实参是一个数组名,则向函数传送的是 _______ 。
( D )
3、设有如下定义 : char aa[2][20]={ "abcd", "abcd" }; 则以下说法中错误的是 __________.
( D )
4、设有以下语句,对a数组元素的引用中(其中0<=i<10)不正确的是 int a[10]= {0,1,2,3,4,5,6,7,8,9 },*p=a;
( B )
5、下列程序段的运行结果是________。 #include<stdio.h> void main() { char str[]="abc",*p=str; printf("%d\n",* (p+3)); }
( A )
6、下列对字符数组进行初始化的语句正确的是________。
( C )
7、下面程序的运行结果是 #include<stdio.h> main() { int a=28,b; char s[10],*p; p=s; do { b=a%16; if(b<10) *p=b+48; else *p=b+55; p++; a=a/5; } while(a>0); *p='\0'; puts(s); }
( B )
8、下列关于字符串的说法中错误的是________。
( B )
9、c语言中,数组名代表________。
( D )
10、若二维数组a 有m 列,则计算任一元素a[i][j] 在数组中位臵的公式为(假设a[0][0] 位于数组的第一个位臵上) ________。
五、字符串/字符串指针 (共10题,每题1分,共计10分)
( C )
1、下列能正确进行字符串赋值的是________。
( D )
2、s1和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句s; 则以下选项中正确的是________。
( D )
3、在c语言中,以 作为字符串结束标志
( A )
4、以下选项中合法的c语言字符常量是________。
( C )
5、有以下程序: main() { char str[]="xyz", *ps=str; while(*ps) ps++; for(ps--;ps-str>=o;ps--) puts(ps); } 执行后的输出结果是________。
( C )
6、下列表达式中,类型可以作为int型的是________。
( B )
7、字符串"xyz"在内存占用的字节数是______。
( C )
8、下面正确的字符串常量是________。
( B )
9、下面选项中合法的字符常量是________。
( A )
10、以下选项中关于 c 语言常量的叙述错误的是________。
六、函数/函数指针 (共10题,每题1分,共计10分)
( B )
1、在下列语句中,其含义为"q是一个函数指针,该指针指向整型数据"的定义语句是________。
( C )
2、下列叙述中错误的是________。
( B )
3、若有函数 char*func(char *p) … return p; 则该函数的返回值是 ______。
( D )
4、有以下程序: void swap1(int c0[],int c1[]) { int t; t=c0[0]; c0[0]=c1[0]; c1[0]=t; } void swap2(int *c0,int *c1) { int t; t=*c0; *c0=*c1; *c1=t; } main() { int a[2]={3,5}, b[2]={3,5}; swap1(a,a+1); swap2(&b[0],&b[1]); printf("%d %d %d %d\n",a[0],a[1],b[0],b[1]); } 程序运行后的输出结果是______。
( C )
5、若有"double a; ",则正确的输入语句是________。
( D )
6、请阅读程序: #include<math.h> #include<stdio.h> main() { float a,b,c; scanf("%f%f",&a,&b); c=a/b; while(1) { if(fabs(c)>1.6) { a=b; b=c; c=a/b; } else break; } printf("%f\n",b); } 若运行时从键盘上输入3.6 2.4<回车>,则输出结果是______。
( C )
7、请读程序: #include <stdio.h> func(int a, int b) { int c; c=a+b; return c; } main() { int x=6,y=7,z=8,r; r=func((x--,y++,x+y),z--); printf("%d\n",r); } 上面程序的输出结果是________。
( C )
8、下面函数定义形式正确的是________。
( B )
9、C语言函数内定义的局部变量的隐含存储类别是
( A )
10、以下函数调用语句中实参的个数是()。 func((e1,e2),(e3,e4,e5));
七、指针 (共10题,每题1分,共计10分)
( C )
1、若有定义"float a=25,b,*p=&b;",则下列对赋值语句"*p=a;"和"p=&a;"的正确解释为( )。
( C )
2、若有定义语句:double x,y,*px,*py; 执行了px=&x; py=&y; 之后,正确的输入语句是________。
( D )
3、设已有定义:float x; 则以下对指针变量p进行定义且赋初值的语句中正确的是______。
( C )
4、若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是________。
( B )
5、设int x:,则经过______ 后,语句*px=0; 可将x值置为0。
( D )
6、以下叙述正确的是________。
( A )
7、下列程序的输出结果是________。 int f1(int x,int y) { return x>y?x:y; } int f2(int x,int y) { return x>y?y:x; } main() { int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b),f1(c,d)); f=f1(f2(a,b),f2(c,d)); g=a+b+c+d-e-f; printf("%d,%d,%d\n",e,f,g); }
( A )
8、有以下程序: main() { int a[]={1,2,3,4,5,6,7,8,9,0},*p; for(p=a;p<a+10,p++)printf("%d,",*p); } 程序运行后的输出结果是________。
( D )
9、下列有关格式输入函数scanf的叙述中正确的是________。
( B )
10、以下叙述中错误的是______。
八、结构体 (共10题,每题1分,共计10分)
( A )
1、有以下程序 struct stu { char name[10]; int num; }; void f(char *name, int num) { struct stu s[2]={{"sundan",20044},{"penghua",20045}}; num = s[0].num; strcpy(name, s[0].name); } main() { struct stu s[2]={{"yangsan",20041},{"lisiguo",20042}},*p; p=&s[1]; f(p->name, p->num); printf("%s %d\n", p->name, p->num); } 程序运行后的输出结果是________。
( B )
2、下面结构体的定义语句中,错误的是________。
( D )
3、设有下面的定义: struct st { int a; float b; } d; int*p; 要使p指向结构变量d中的a成员,正确的赋值语句是________。
( C )
4、设 struct data { int a; float b; } c,*p=&c; ,引用正确的是________。
( B )
5、设有如下定义: struct sk { int a; float b; } data,*p; 若有p=&data; 则对data中成员a的引用正确的是________。
( B )
6、下面赋值表达式不正确的是__________________. struct student { long num; char name[20]; } st1, st2={101, "tom"}, *p=&st1;
( C )
7、下面哪个不是关键字?
( C )
8、enum a { sum=9,mon=-1,tue } ; 定义了________。
( D )
9、c语言中,switch后的括号内表达式的值可以是________。
( D )
10、在说明一个结构体变量时系统分配给它的存储空间是________ 。
九、程序题 (共10题,每题1分,共计10分)
( A )
1、根据下面的程序及数据的输入和输出形式,程序中输入语句的正确形式应该为 main() { char ch1,ch2,ch3; 输入语句 printf("%c%c%c",ch1,ch2,ch3); } 输出形式:abc 输入形式:abc
( B )
2、设有如下程序段: int i=0, sum=1; do { sum+=i++; } while(i<6); printf("%d\n", sum); 上述程序段的输出结果是________。
( A )
3、有以下程序 main( ) { unsigned char a,b; a=4|3; b=4&3; printf("%d %d\n",a,b); } 执行后输出结果是________。
( C )
4、有以下程序段 main() { int a=5,*b,**c; c=&b; b=&a; …… } 程序在执行了c=&b; b=&a; 语句后,表达式:**c的值是________。
( B )
5、下面程序的输出是 __________. #include <stdio.h> int m=13; int fun2(int x, int y) { int m=3; return(x*y-m); } void main() { int a=7, b=5; printf("%d\n",fun2(a,b)/m); }
( A )
6、以下程序的输出结果是________。 main() { int x=0x02ff,y=0x0ff00; printf("%d\n",(x&y)>>410x005f); }
( A )
7、有以下程序 #include <stdio.h> main() { int a=2,b=3,c=4; a*=16 +(b++) - (++c); printf("%d \n",a ); } 程序运行后的输出结果是________。
( B )
8、以下程序结果为:______。 void pp( ) { static int n=5; n--; printf("%d",n); } main( ) { int m; for(m=0;m<4;m++)pp( ); }
( A )
9、下列程序段的输出结果是______。 void fun(int *x,int *y) { printf("%d %d",*x,*y); *x=3; *y=4; } main() { int x=1,y=2; fun(&y,&x); printf(" %d %d",x,y); }
( C )
10、执行如下程序段,打印输出的内容是________。 #include <stdio.h> void fun (intc, int *d) { c++; (*d)++; } int main ( ) { int a=5, b=9; fun(a, &b); printf("%d, %d",a, b); return 0; }
相关标签:
- C语言
- 南京工程学院
- 期末冲刺卷