天津理工C语言期末复习题Word格式.docx
《天津理工C语言期末复习题Word格式.docx》由会员分享,可在线阅读,更多相关《天津理工C语言期末复习题Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
![天津理工C语言期末复习题Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/5/0740c011-72f2-4ef4-9a23-3affd4518b02/0740c011-72f2-4ef4-9a23-3affd4518b021.gif)
7.在while(x)语句中的x与下面条件表达式等价的是:
A.x!
=0B.x==1C.x!
=1D.x==0
8.若有以下说明和语句:
structstu
{
intno;
char*name;
}student,*p=&
student;
则以下引用方法不正确的是()。
A.student.noB.(*p).no
C.p->
noD.student->
no
9.以下对二维数组进行正确初始化的是()。
A.inta[2][3]={{1,2},{3,4},{5,6}};
B.inta[2][3]={{1,2},{},{4,5}};
C.inta[][3]={1,2,3,4,5,6};
D.inta[2][]={{1,2},{3,4}};
10.若有定义int(*p)[4],则标识符p是一个。
A、指向整型变量的指针变量
B、指向函数的指针变量
C、指向有四个整型元素的一维数组的指针变量
D、指针数组名,有四个元素,每个元素均为一个指向整型变量的指针
11.以下不正确的C语言标识符是()。
A.ABCB.abcC.a_bcD.ab.c
12.C程序是由 构成的。
A.主程序与子程序
B.主函数与若干子函数
C.一个主函数与一个其它函数
D.主函数与子函数
13.以下说法中正确的是:
A.在C语言中,实参与其对应的形参各占独立的存储单元;
B.在C语言中,实参与其对应的形参共占同一个存储单元;
C.在C语言中,只有当实参与其对应的形参同名时,才共占同一个存储单元;
D.在C语言中,形参是虚拟的,不占存储单元。
14.设n=3;
则n++的结果是()。
A.2B.3C.4D.5
15.设整型变量n=10,i=4,则赋值运算n%=i+1执行后,n的值是()。
A.0B.1C.2D.3
16.凡是函数中未指定存储类别的局部变量其隐含的存储类别是()。
A.自动(auto)B.静态(static)C.外部(extern)D.寄存器(register)
17.在while(x)语句中的x与下面条件表达式等价的是:
A.x==0B.x==1C.x!
=1D.x!
=0
18.若有以下说明和语句:
structworker
{
intno;
}work,*p=&
work;
则以下引用方法不正确的是()。
A.work.noB.(*p).noC.p->
noD.work->
19.若二维数组a有m行n列,则下面能够正确引用元素a[i][j]的为:
A)*(a+j*n+i)B)*(a+i*n+j)
C)*(*(a+i)+j)D)*(*a+i)+j
20、若有以下定义和语句:
doubler=99,*p=&
r;
*p=r;
则以下正确的叙述是:
A)以下两处的*p含义相同,都说明给指针变量p赋值
B)在“doubler=99,*p=&
”中,把r的地址赋值给了p所指的存储单元
C)语句“*p=r;
”把变量r的地址值赋给指针变量p
D)语句“*p=r;
”取变量r的值放回r中
21、假设已定义chara[10]和char*p=a,下面的赋值语句中,正确的是:
A)a[10]=”TurboC”;
B)a=”TurboC”;
C)*p=”TurboC”;
D)p=”TurboC”;
22、下面关于运算符优先顺序的描述中正确的是:
A)关系运算符<
算术运算符<
赋值运算符<
逻辑与运算符
B)逻辑运算符<
关系运算符<
赋值运算符
C)赋值运算符<
逻辑与运算符<
算术运算符
D)算术运算符<
23、以下正确的描述是。
A)continue语句的作用是结束整个循环的执行
B)只能在循环体内和switch语句体内使用break语句
C)在循环体内使用break语句或continue语句的作用相同
D)从多层循环嵌套中退出时,只能使用goto语句
24、用8位无符号二进制数能表示的最大十进制数为
A)127B)128C)255D)256
25、下列叙述中正确的是:
C语言中既有逻辑类型也有集合类型
C语言中没有逻辑类型但有集合类型
C)C语言中有逻辑类型但没有集合类型
D)C语言中既没有逻辑类型也没有集合类型
26、以下对C语言函数的有关描述中,正确的是:
A)调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B)函数既可以嵌套定义又可以递归调用
C)函数必须有返回值,否则不能使用函数
D)程序中有调用关系的所有函数必须放在同一个源程序文件中
27、在C语言中,不正确的int类型的常数是:
A)32768B)0C)037D)0xaf
28、以下说法中正确的是:
A)#define和printf都是C语句
B)#define是C语句,而printf不是
C)printf是C语句,但#define不是
D)#define和printf都不是C语句
29.以下对一维数组的定义中,正确的是:
A)#defineMAX5B)intMAX=5;
inta[MAX];
inta[MAX];
C)intMAX;
D)#defineMAX5;
Scanf(“%d”,&
MAX);
inta[MAX];
30.以下程序运行时输入8,则程序运行后t的值是:
main()
{intt;
scanf(“%d”,&
t);
if(t-->
=8)
printf(“%d\n”,t--)
;
else
printf(“%d\n”,t++)
}
A)9B)8C)7D)6
31.有以下程序段
{inti=1,sum=0,n;
scanf(“%d”,&
n);
do
{i+=2;
sum+=i
}while(i!
=n);
printf(„%d”,sum);
若使程序的输出值为8,则应该从键盘输入的n的值是:
A)1B)3C)5D)7
二、给出下列程序的运行结果
1.#include<
stdio.h>
inti=16,j,x=6;
j=i+++1;
x*=i=j;
printf(“%d,%d\n”,j,x);
运行结果是:
2.#include<
#include<
math.h>
main()
inta=1,b=4,c=2;
floatx=10.5,y=4.0,z;
z=(a+b)/c+sqrt((double)y)*1.2/c+x;
printf(“%f\n”,z);
3.#include<
inta,b,c,d;
a=c=0;
b=1;
d=20;
if(a)d=d-10;
elseif(!
b)
if(!
c)d=25;
elsed=15;
printf(“d=%d\n”,d);
运行结果:
4.main()
inti=10;
switch(i){
case9:
i+=1;
case10:
case11:
default:
printf(“%d”,i);
运行结果:
5.#include<
inta[]={1,2,3,4},i,j,s=0;
j=1;
for(i=3;
i>
=0;
i--)
s=s+a[i]*j;
j=j*10;
printf("
s=%d\n"
s);
6.func(intx)
{x=20;
intx=10;
func(x);
printf(“%d”,x);
7.#include<
inti,j,m;
inta[2][5]={1,20,32,14,5,62,87,38,9,10};
m=a[0][0];
for(i=0;
i<
2;
i++)
for(j=0;
j<
5;
j++)
if(m<
a[i][j])m=a[i][j];
printf(“m=%d\n”,m);
运行结果是
8.#include<
intcube(inty);
intx;
for(x=1;
x<
=5;
x++)
printf(“%d”,cube(x));
intcube(inty)
return2*y;
9、main()
{
inta=7,b=2;
floatx=2.5,y=4.7,z;
z=x+a%3*(int)(x+y)%2/4;
printf(“%f\n”,z);
z=(a+b)/2+(int)x%(int)y;
printf(“%f”,z);
}
10、main()
intx[]={0,1,2,3,4,5,6,7,8,9};
ints,I,*p;
s=0;
p=&
x[0];
for(I=1;
I<
10;
I+=2)
s+=*(p+I);
printf(“sum=%d”,s);
11、main()
{intx=10,y=10,I;
for(I=0;
I>
8;
y=++I)
printf(“%d%d”,x--,y);
12、main()
{intm=37,n=13;
while(m!
=n)
{while(m>
n)
m=m-n;
while(n>
m)
n-=m;
printf(“m=%d\n”,m);
13、main()
intx=9;
for(;
x>
0;
x--)
if(x%3==0)
printf(“%d”,--x);
continue;
三、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。
1.从键盘输入10个整型数据,放入数组a中,求其最大值及其所在元素的下标位置,并输出。
inta[10],n,pos,max;
for(n=0;
n<
n++)
scanf("
%d"
&
a[n]);
max=;
pos=;
n++)
if(a[n]>
max)
max=a[n];
pos=;
printf("
max=%d,pos=%d\n"
max,pos);
2.将100至200间不能被3整除的数输出:
intn;
for(n=100;
n<
=200;
n++)
if(n%3==0);
printf(“%d”,n);
3.判断m是否是素数
#include<
intm,i,k;
m);
k=sqrt(m);
for(i=2;
i<
=k;
i++)
if(m%i==0);
if(i>
=k+1)printf(“%disaprimenumber\n”,m);
elseprintf(“%disnotaprimenumber\n”,m);
4.给定一3*4的矩阵,求出其中值最大的元素的值,及所在的行列号。
inti,j,row=0,colum=0,max;
staticinta[3][4]={{1,2,3,4}{9,8,7,6}{10,-10,-4,4}};
;
for(i=0;
=2;
for(j=0;
j<
=3;
j++)
if(a[i][j]>
max)
max=a[i][j];
printf(“max=%d,row=%d,colum=%d\n”,max,row,colum);
5.下面函数的功能是将两个字符串s和t连接起来。
char*conj(char*s,char*t)
char*p=s;
while(*s);
while(*t)
*s=;
s++;
t++;
*s=’\0’;
;
四、判断题
1.C的关键字都是小写的。
2.一个复合语句是作为一个语句处理的且在逻辑上相互关联的一组语句。
3.#definePI=3.14159
4.局部变量在进入代码块时生成,退出代码块时消失。
5.inta=123456;
6.函数可以嵌套定义,也可嵌套调用。
7.switch与if不同,switch只能测试是否相等,而if中还能测试关系和逻辑表达式。
8.break和continue语句都可用于选择结构和循环结构中。
9、C语言规定:
在一个源程序中,main函数的位置必须在最开始。
10.#definePI=3.14159;
不是C语句。
()
11.在C语言中,可以用typedef定义一种新的类型。
( )
12、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是8。
13、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为静态存储。
14、C语言中规定函数的返回值的类型是由return语句中的表达式类型所决定。
15、在C语言中对文件操作必须先关闭当前文件,然后再打开一个新文件。
16、C语言程序的基本单位是语句。
17.共用体所占的内存空间大小取决于占空间最多的那个成员变量。
()
18.指针变量和变量的指针是同一个名词不同说法。
(×
)
19.在C语言中,二维数组元素是按行存放的。
(√)
20.数组不可以整体赋值。
21.向函数传递参数时,实参和形参不可以重名。
)
22.一个数组能够存储不同类型的数据(×
)。
23.指向不同类型数组的两个指针不能进行有意义的比较。
24.unionch
inta[3];
floatm;
};
这样的一个数据类型共占用内存数为6字节。
25.设有定义:
chara[2][3]={1,2,3,4};
则数组元素a[1][1]的值为0。
26.如果在程序中定义静态变量和全局变量时,未明确指明其初始值,那么它们可以在程序编译阶段自动被初始化为0值。
27.在C语言中,可以用typedef定义一种新的数据类型。
28.在C语言中,实参与其对应的形参各占独立的存储单元。
五、在下面给出的4个程序中,共有15处错误(包括语法错误和逻辑错误),请找出其中的错误,并改正之。
1.下面程序的功能是对a数组中的元素按从大到小的顺序排序。
#defineN=10;
inta[N]={2,17,8,3,24,53,82,1,29,101};
inti,j,k,t;
for(i=0;
9;
{k=i;
for(j=i+1;
if(a[j]<
a[k])
k=j;
if(k=i)
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
2.下面程序的功能是交换变量a和b中的值。
inta,b,*p,*q,*t;
p=&
a;
q=&
b;
请输入变量a和b的值:
"
);
scanf("
%d%d"
p,&
q);
*t=*p;
*p=*q;
*q=*t
交换后a和b的值:
a=%db=%d\n"
a,b);