南京工程学院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语言
- 南京工程学院
- 期末冲刺卷