C语言期末复习题Word下载.docx
《C语言期末复习题Word下载.docx》由会员分享,可在线阅读,更多相关《C语言期末复习题Word下载.docx(20页珍藏版)》请在冰豆网上搜索。
![C语言期末复习题Word下载.docx](https://file1.bdocx.com/fileroot1/2022-10/27/89f02773-de93-4b07-9d04-2d2bad470af0/89f02773-de93-4b07-9d04-2d2bad470af01.gif)
5.在C语言中,要求运算数必须是整型的运算符是
A)/B)++C)!
=D)%
6.若有定义:
doublea[]={2.1,3.6,9.5};
doubleb=6.0;
则下列错误的赋值语句是:
A)b=a[2];
B)b=a+a[2];
C)a[1]=b;
D)b=a[0]+7;
7.若定义x为双精度型变量,则能正确输入x值的语句是。
A)scanf(“%f”,x);
B)scanf(“%f”,&
x);
C)scanf(“%lf”,&
D)scanf(“%lf”,x);
8.以下不正确的说法是。
A)实参可以是常量,变量或表达式B)形参可以是常量,变量或表达式
C)实参可以为任意类型D)如果形参和实参的类型不一致,以形参类型为准
9.下面程序段的运行结果是。
char*s=”Nanjing”;
s+=3;
printf(“%s”,s);
A)jingB)字符j
C)字符j的地址D)不确定
10.下面程序段
intk=2;
while(k!
=0){printf(“%d”,k);
k--;
}
则下面描述中正确的是。
A)while循环执行2次B)循环是无限循环
C)循环题语句一次也不执行D)循环体语句执行一次
11.若有说明:
int*p,m=5,n;
以下程序段正确的是。
A)p=&
n;
B)p=&
scanf(“%d”,&
p);
scanf(“%d”,*p);
C)scanf(“%d”,&
n);
D)p=&
*p=n;
*p=m;
12.若要对a进行自增运算,则a应具有下面说明。
A)inta[3][2];
B)char*a[]={“12”,”ab”};
C)char(*a)[3]D)intb[10],*a=b;
13.若以下定义和赋值语句:
ints[2][3]={0},(*p)[3];
p=s;
则对数组s的第i行第j列(假设i、j已经正确说明并赋值)元素的合法引用为:
A)*(*(p+i)+j)B)*(p[i])+j
C)(p+i)+jD)(*p+i)[j]
14.下面程序的运行结果是。
#iunclude<
stdio.h>
voidmain(){
structcomplx{
intx;
inty;
}cnum[2]={1,3,2,7};
printf(“%d\n”,cnum[0].y/cnum[0].x*cnum[1].x);
A)0B)1
C)2D)6
15.函数rewind的作用是。
A)使位置指针重新返回文件的开头B)将位置指针指向文件中所要求的特定位置
C)使位置指针指向文件的末尾D)使位置指针自动移至下一个字符位置
16.
二、基础知识填空
1.在C语言中,没有专门的输入输出的语句,其输入输出都是用函数来完成的,格式化输入操作是由库函数[1]完成的。
2.三种基本程序结构是循环结构、选择结构和[2]。
3.数学表达式的C语言表达式是[3]
4.设有数组定义:
chararray[]="
Nuist"
;
则数组array所占的内存空间为[4]
5.x,y,z是整型变量,写出x,y,z三个变量中至少有两个为正数的逻辑表达式是:
[5]。
6.用continue语句只能用在循环语句的循环体内,其作用是:
[6]。
7.若有定义语句:
inta[4]={1,2,3,4},*p;
p=a;
则++(*p)的值是[7]。
8.若有#defineADD(x)x+x
intm=1,n=2,k=3,sum;
sum=ADD(m+n)*k;
则sum的值为[8]
9.若有定义:
structnum{
inta;
intb;
floatf;
}n={1,3,5.0};
structnum*pn=&
则表达式(*pn).a+pn->
f的值是[9]。
10.若执行fopen函数时发生错误,则函数的返回值是[10]。
三、程序阅读题
1.输入100,200回车后,下面程序执行结果是
#include<
voidswap(int*,int*);
intmain()
{
inta,b,*pa=&
a,*pb=&
b;
scanf(“%d,%d”,&
a,&
b);
swap(pa,pb);
printf(“a=%d,b=%d\n”,a,b);
return0;
voidswap(int*p1,int*p2)
{
int*p;
p=p1;
p1=p2;
p2=p;
2.若运行以下程序时,输入2473↙,则程序的运行结果是。
intmain()
intc;
while((c=getchar())!
=’\n’)
switch(c-‘2’)
case0:
case1:
putchar(c+4);
case2:
break;
case3:
putchar(c+3);
default:
putchar(c+2);
}
printf(“\n”);
return0;
3.输入6,下面程序的执行结果是:
unsignedlongintfact(unsignedint);
{unsignedintn,fac;
scanf("
%u"
&
fac=fact(n);
printf("
%u\n"
fac);
return0;
unsignedlongintfact(unsignedintn)
unsignedintresult;
if(n==0||n==1)
result=1;
else
result=n*fact(n-1);
returnresult;
4.下面程序的输出结果是。
#include<
intfun(int);
{inti,a=5,sum;
for(i=0;
i<
3;
i++)
sum=fun(a);
%d%d\n"
i,sum);
intfun(inta)
intb=0;
staticintc=3;
b++;
c++;
return(a+b+c);
5.下面程序运行的结果是
voidcopy_string(char*,char*);
chara[]="
Iamateacher."
charb[]="
Youareastudent."
copy_string(a,b);
%s\n%s\n"
a,b);
return0
voidcopy_string(char*from,char*to)
for(;
*from!
='
\0'
from++,to++)
*to=*from;
*to='
6.下面程序执行的结果是
voidinv(int[],int);
{inti,a[10]={3,7,9,11,0,6,7,5,4,2};
inv(a,10);
10;
i++)
%d"
a[i]);
printf("
\n"
);
voidinv(intx[],intn)
{intt,i,j,m=(n-1)/2;
i=0;
j=n-1;
=m;
i++,j--)
{t=x[i];
x[i]=x[j];
x[j]=t;
7.写出下面程序的运行结果。
structman
charname[20];
intage;
}person[]={“liming”,22,“wanghua”,21,”zhangping”,20};
{intold=0;
structman*p=person,*q;
for(;
p<
=&
person[2];
p++)
if(old<
p->
age){q=p;
old=p->
age;
}
printf(“%s%d\n”,q->
name,q->
age);
8.输入9,5回车后,下面程序执行结果是
intp;
p=*p1;
*p1=*p2;
*p2=p;
printf(“*p1=%d,*p2=%d\n”,*p1,*p2);
9.以下程序输出结果是。
intx=1,y=0,a=0,b=0;
switch(x)
case1:
switch(y)
case0:
a++;
case1:
b++;
case2:
a++;
break;
case3:
printf(“a=%d,b=%d”,a,b);
10.输入6,下面程序的执行结果是:
unsigned