期末考试C语言复习题含答案沈阳工程学院.docx
《期末考试C语言复习题含答案沈阳工程学院.docx》由会员分享,可在线阅读,更多相关《期末考试C语言复习题含答案沈阳工程学院.docx(30页珍藏版)》请在冰豆网上搜索。
![期末考试C语言复习题含答案沈阳工程学院.docx](https://file1.bdocx.com/fileroot1/2023-2/9/3a85fc56-9524-4c89-8694-30cf00726700/3a85fc56-9524-4c89-8694-30cf007267001.gif)
期末考试C语言复习题含答案沈阳工程学院
2011年期末考试C语言复习题
——沈阳工程学院
一、单项选择(每题2分,共20分)
1、下列C数据类型属于C语言提供的基本数据类型。
A、数组类型B、指针类型C、整型D、结构体类型
2、C语言程序中,下列B标识符是合法。
A、scanfB、str2C、5aD、His.age
3、已知inta,b;scanf(“%d%d”,&a,&b);程序运行输入a、b的值时,不能作为输入数据分隔符的是A。
A、逗号B、空格C、回车D、[Tab]
4、C语言对嵌套IF语句的规定是:
else总是和D配对。
A、其之前最近的IFB、第一个IF
C、缩进位置相同的IFD、其前面最近且尚未配对的IF
5、下面语句A是定义一个有10个INT整型元素的数组。
A、inta[10]B、inta[2,5]C、inta[]D、int*a[10]
6、已知charch[]=”welcome”;printf(“%d”,strlen(ch));输出结果是B。
A、6B、7C、8D、9
7、Fwirte函数的一般调用形式是D。
A、fwirte(buffer,count,size,fp);
B、fwrite(fp,size,count,buffer);
C、fwrite(fp,count,size,buffer);
D、fwrite(buffer,size,count,fp);
8、设inta=2,b;则执行b=a&&1;语句后,b的结果是b。
A、0B、1C、2D、3
9、在C程序中,设一表达式中包含有int,long,unsigned和char类型的变量和数据,则表达式最后的运算结果类型是d。
A、intB、charC、unsignedD、long
10、下面程序段的运行结果是b。
main()
{inta=11,b=10,c=0;
a/=b+(b&&c);a=a/b
printf(″%d\n″a);}
A、0B、1C、1.1D、11
11、两次运行下面程序,如果从键盘上分别输入6和4,则程序的输出结果是C。
main()
{intx;
scanf(″%d″,&x);
if(x++>5)printf(″%d″,x);
elseprintf(″%d\n″,x-1);}
A、7和5B、6和3C、7和4D、6和4
12、若定义intx[10];则TurboC编译系统为该数组分配c个字节存储单元。
2*10
A、10B、11C、20D、21
13、若有如下函数定义:
add(floatx,floaty)
{……}
则下列说法正确的是c。
A.函数返回值类型不确定B.函数返回值是float型
C.函数返回值是int型D.函数返回值是void型
14、对于int*pa[5];的描述,d是正确的。
A、pa是一个指向数组的指针,所指向的数组是5个int型元素
B、pa是一个指向某数组中第5个元素的指针,该指针是int型变量
C、pa[5]表示某个数组的第5个元素的值
D、pa是一个具有5个元素的指针数组,每一个元素是一个int型指针
15、对for(表达式1;;表达式3)可理解为___b_____。
A、for(表达式1;0;表达式3;)
B、for(表达式1;1;表达式3;)
C、for(表达式1;表达式1;表达式3;)
D、for(表达式1;表达式3;表达式3;)
16、若有说明:
inta[4][4]={0}
则下面不正确的是__A______。
A、数组a的每个元素都可得到初值0
B、二维数组a的第一维大小为1
C、因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1
D、只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
17、若有说明:
intn=2,*p=&n,*q=p;,则以下非法的赋值语句是d。
A、p=q;B、*p=*q;C、n=*q;D、p=n;
18、若有以下说明和定义
typedefint*INTEGER;
INTEGERp,*q;
以下叙述正确的是D。
A、P是int型变量B、程序中可用INTEGER代替int类型名
C、q是基类型为int的指针变量D、p是基类型为int的指针变量
19、有以下程序
main()
{chara[]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,‘\0’};inti,j;
i=sizeof(a);j=strlen(a);
printf(“%d,%d\n”,i,j);
}
程序运行后的输出结果是b。
A、8,8B、8,7C、7,8D、9,8
20、在C程序中,可以把整型数以二进制形式存放到文件中的函数是A。
A、fprintf函数B、fread函数C、fwrite函数D、fputc函数
21、
22、设inta=2,b;则执行b=a&&1;语句后,b的结果是b。
A、0B、1C、2D、3
23、以下数组定义中不正确的是d。
A、inta[2][3];
B、intb[][3]={0,1,2,3};
C、intc[100][100]={0};
D、intd[3][]={{1,2},{1,2,3},{1,2,3,4}};
24、能正确表示a和b同时为正或同时为负的逻辑表达式是d。
A、(a>=0‖b>=0)&&(a<0‖b<0)
B、(a>=0&&b>=0)&&(a<0&&b<0)
C、(a+b>0)&&(a+b<=0)
D、a*b>0
25、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是b。
A、INPUTx,y,z;B、scanf("%d%d%d",&x,&y,&z);
C、scanf("%d%d%d",x,y,z);D、read("%d%d%d",&x,&y,&z);
26、在Turbo2.0中,若定义charc;.则变量c在内存中分配的字节数是a。
A、1个B、2个C、4个D、8个
27、在Turbo2.0中,若定义intc;.则变量c在内存中分配的字节数是b。
A、1个B、2个C、4个D、8个
28、在Turbo2.0中,若定义longc;.则变量c在内存中分配的字节数是c。
A、1个B、2个C、4个D、8个
29、以下运算符中优先级最高的是 c 。
A、&& B、+、-C、() D、%
31、以十六进制形式输出整数的格式说明符是 c 。
A、%uB、%ldC、%XD、%o
32、以八进制形式输出整数的格式说明符是 d 。
A、%uB、%ldC、%xD、%o
33、能正确表示逻辑关系:
“a≥10或a≤0”的C语言表达式是d。
A、a>=10ora<=0B、a>=10|a<=0
C、a>=10&&a<=0D、a>=10||a<=0
34、下列程序段的输出结果是c。
x=9;
while(x>7)
{printf("*");x--;}
A、****B、***
C、**D、*
35、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是b。
A、地址传递B、单向值传递
C、双向值传递。
即由实参传给形参,再由形参传回给实参
D、由用户指定传递方式
36、以下正确的函数形式是d。
A、doublefun1(intx,inty)
{
z=x+y;
returnz;
}
B、fun1(intx,y)
{
intz;
returnz;
}
C、intfun1(x,y)
{
intx,y;
doublez;
z=x+y;
returnz;
}
D、doublefun1(intx,inty)
{
doublez;
z=x+y;
returnz;
}
37、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是b。
A、float型B、int型C、long型D、double型
38、一个C语言程序是由b。
A、一个主程序和若干子程序组成
B、若干函数组成
C、若干过程组成
D、若干子程序组成
39、已知:
char*s="Name\Address";则s所指的字符串的长度为c。
A、18B、16C、13D、14
40、若有条件表达(exp)?
a++:
b--,则以下表达式中能完全等价于表达式(exp)的是b。
exp:
!
00
A、(exp==0)B、(exp!
=0)C、exp==1D、(exp!
=1)
41、以下程序有语法性错误,有关错误原因的正确说法是c。
voidmain(void)
{
intk;
voidprt_char();
……
k=prt_char(G);
……
}
A、语句voidprt_char();有错,它是函数调用语句,不能用void说明。
B、变量名不能使用大写字母。
C、函数原型说明和函数调用语句之间有矛盾。
D、函数名不能使用下划线。
42、若有如下定义,则下面在scanf函数调用语句中对结构体成员的引用不正确是a。
structpupil
{
charname[20];
intage;
intsex;
}pup[5],*p;
A、scanf("%d",p->age);
B、scanf("%s",pup[0].name);
C、scanf("%d",&pup[0].age);
D、scanf("%d",&(pup[1].sex));
43、若已有定义int(*p)();则指针pb。
A、代表函数的返回值
B、指向函数的入口地址
C、表示函数的类型
D、表示函数返回值的类型
44、若有语句:
inta=4,*p=&a;,下面均代表地址的一组选项是c。
A、a,p,&*aB、*&a,&a,*p
C、&a,p,&*pD、*&p,*p,&a
45、已知:
unsignedintx=65535;则执行以下语句后的x值为a。
printf("%d",x);
A、65535B、1C、无确定值D、-1
46、求字符串长度的函数是d。
A、strcatB、strcpyC、strcmpD、strlen
45.下述对C语言字符数组的描述中错误的是b。
A、字符数组可以存放字符串。
B、字符数组的字符可以整体输入、输出。
C、可以在赋值语句中通过赋值运算符"="对字符数组整体赋值。
D、可以用关系运算符对字符数组中的字符进行比较。
46、以下关于do-while循环的不正确描述是b。
A、do-while的循环体至少执行一次
B、do-while循环由do开始,用while结束,在while(表达式);后面不能写分号
C、在do-while循环体中,一定要有能使while后面表达式的值变为零("假")的操作
D、do-while的循环体可以是复合语句
47、以下选项中,与k=n++完全等价的表达式是a。
A、k=n,n=n+1B、n=n+1,k=nC、k=++nD、k+=n+1
二、填空题(每空1分,共10分)
1、字符型数据存储时占用8位,它实际存储的是字符对应的ASCII码。
2、判断闰年的条件是:
能被4整除但不能被100整除,或能被400整除,程序中逻辑表达式可以写成if((year%4==0&&year&100!
=0)||year%400==0).
3、一个C语言程序中必须存在的函数是主函数。
4、若a是int型变量,则表达式((a=4*5,a*2),a+6)的值为26。
5、C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递是实参传递给形参。
6、在一个字符数组中,表示一个字符串结束的转义符为'\0'。
7、在函数内部定义的变量统称为局部变量。
8、在函数外部定义的变量统称为全局变量。
9、若有定义:
intx=3,y=2;floata=2.5,b=3.5;则表达式(x+y)%2+(int)a/(int)b的值为1。
10、循环语句:
for(k=1;k<=5;k++)执行结束后,K的值为6。
11、a为一个整型变量,pa为指向变量a的指针,则*&a的含义是变量a,&*pa的含义是变量a的地址。
12、程序的执行总是从主函数开始,主函数执行完时,则程序执行结束。
13、控制台标准输入设备一般是指键盘。
14、do-while语句的循环体至少执行一次。
15、循环体中continue语句的作用是结束本次循环的执行。
16、执行strcmp("This","that")的结果是一个负整数。
17、C源程序的基本单位是函数。
18、若有定义:
charc=10;则变量C中包含的字符个数为一个。
19、假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为9。
20、执行下面的程序片段后,x的值是12。
i=10;i++;x=++i;
21、设a、b、c均是int型变量,则执行以下for循环后,c的值为10。
for(a=1,b=5;a<=b;a++)c=a+b;
22、若有定义:
inta[3][2]={2,4,6,8,10,12};,则*(a[1]+1)的值是8。
23、若a=1,b=2则表达式a>b?
a:
b+1的值是3。
24、当a=5,b=4,c=2时,表达式样a>b!
=c的值是1。
25、若a=2,b=4,则表达式!
(x=a)||(y=b)&&0的值是0。
26、若有定义:
inta[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是4,*(a+5)的值是12。
27、若有以下定义和语句:
inta[5]={1,3,5,7,9},*p;
p=&a[2];
则++(*p)的值是6。
程序运行结果题(每题4分,共20分)
1、(4分)
当运行以下程序时,从键盘键入right?
则下面程序的运行结果是?
(sjhiu)。
#include
voidmain(void)
{
charc;
while((c=getchar())!
=?
)putchar(++c);
}
2、(4分)
如果运行以下程序段输入字符为“t”,则程序段的运行结果是?
(T)。
voidmain(void)
{
charc1;
scanf("%c",&c1);
c1=(c1>=A&&c1<=Z)?
(c1+32):
c1;
c1=(c1>=a&&c1<=z)?
(c1-32):
c1;
printf("%c",c1);
}
3、(4分)
以下程序的运行结果是?
(9)。
#defineA4
#defineB(x)A*x/2
voidmain(void)
{
floatc,a=4.5;
c=B(a);
printf("%5.1f
",c);
}
4、假定本程序执行时输入:
1357↙(↙代表回车换行符)结果是?
113468
#include
main()
{charc;
while((c=getchar())!
='\n')
switch(c)
{case'0':
case'1':
putchar(c);
case'2':
putchar(c);break;
case'3':
putchar(c);
default:
putchar(c+1);break;
}113468
printf("\n");
}
5、以下程序的运行结果是?
L=18.849556S=28.274333(%f隐含输出六位小数)
#defineR3.0
#definePI3.1415926
#defineL2*PI*R
#defineSPI*R*R
main()
{printf(“L=%f\nS=%f\n”,L,S);
}
6.以下程序的运行结果是?
输出:
s=20
Main()
{inti,s=0;
inta[8]={1,2,3,4,5,6,7,8};
for(i=0;i<=7;i++)
if(a[i]%2==0)s=s+a[i];
printf(“s=%d”,s);
}s=20
7.以下程序的运行结果是?
输出结果是:
LANGUAGEA
main()
{chara[]="language";
inti;
while(a[i])
{printf("%c",a[i]-32);i++;}
8以下程序运行后的输出结果是?
10,0。
main()
{intx=10,y=20,t=0;
if(x==y){t=x;x=y;}y=t;
printf(“%d,%d\n”,x,y);
}
9、有以下程序:
#include
main()
{charc;
while((c=getchar())!
=’?
’)putchar(--c);
}
程序运行时,如果从键盘输入:
Z?
N?
<回车>,则输出结果为?
Y。
10、以下程序运行后的输出结果是?
3,4,4,3。
voidfun(intx,inty)
{x=x+y;y=x-y;x=x-y;
printf(“%d,%d,”,x,y);}
main()
{intx=4,y=3;
fun(x,y);
printf(“%d,%d\n”,x,y);
}
}
11、下面程序的运行结果是?
:
5,7。
voidswap(int*a,int*b)
{int*t;
t=a;a=b;b=t;
}
main()
{intx=7,y=5,*p=&x,*q=&y;
swap(p,q);
printf(“%d%d\n”,*p,*q);
}
12、下面程序的运行结果是?
:
100。
typedefunionstudent
{charname[10];
longsno;
charsex;
floatscore[5];
}STU;
main()
{STUa[5];
printf(“%d\n”,sizeof(a));
}
13有以下程序,程序运行后的输出结果是?
:
c,C,B,c
voidfun(char*c,intd)
{*c=*c+1;d=d+1;
printf(“%c,%c,”,*c,d);
}
main()
{chara=’B’,b=’b’;
fun(&b,a);printf(“%c,%c\n”,a,b);
}
14有以下程序,运行后的输出结果是?
:
6
intf(intn)
{if(n==1)return1;
elsereturnf(n-1)+1;
}
main()
{inti,j=0;
for(i=1;i<4;i++)j+=f(i);
printf(“%d\n”,j);
}
15有以下程序,运行后的输出结果是?
8,7
main()
{chara[]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,‘\0’};inti,j;
i=sizeof(a);j=strlen(a);
printf(“%d,%d\n”,i,j);
}
16以下程序中函数reverse的功能是将a所指数组中的内容进行逆置。
voidreverse(inta[],intn)
{inti,t;
for(i=0;i{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{intb[10]={1,2,3,4,5,6,7,8,9,11};inti,s=0;
reverse(b,8);
for(i=6;i<10;i++)s+=b[i];
printf(“%d\n”,s);
}
程序运行后的输出结果是?
23
17有以下程序,程序运行后的输出结果是?
:
20
main()
{intaa[4][4]={{1,2,3,4},{5,7,7,8},{3,9,10,2},{4,2,9,6}};
inti,s=0;
for(i=0;i<4;i++)s+=aa[i][1];
printf(“%d\n”,s);
}
18有以下程序,程序运行后的输出结果是?
:
7
#include
main()
{char*p=“abcdefg\0hjik\0”;
printf(“%d\n”,strlen(p));
}
19程序中头文件typel.h的内容是:
#defineN5
#defineM1N*3
19\程序如下:
#include“type1.h”
#defineM2N*2
main()
{inti;
i=M1+M2;printf(“%d\n”,i);
}
程序编译后运行的输出结果是?
:
25
20有以下程序,程序运行后的输出结果是?
:
3020
#include
main()
{FILE*fp;inti=30,j=20,k,n;
fp=fopen("d1.dat","w");
fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);
fclose(fp);
}
21有以下程序,程序运行后的输出结果是?
:
8
inta=3;
main()
{ints=0;
{inta=5;s+=a++;}
s+=a++;printf("%d\n",s);
}
22有以下程序,程序运行后的输出结果是?
:
abcDDfefDbD
voidss(char*s,chart)
{while(*s)
{if(*s==t)*s=t-'a'+'A';
s++;
}
}
main()
{charstr1[100]="abcddfefdbd",c='d';
ss(str1,c);printf("%s\n",str1);
}
23有以下程序:
程序运行后的输出结果是?
:
275.00
structstu
{charnum[10];flo