C语言期末复习练习题.docx
《C语言期末复习练习题.docx》由会员分享,可在线阅读,更多相关《C语言期末复习练习题.docx(18页珍藏版)》请在冰点文库上搜索。
C语言期末复习练习题
C语言期末复习练习题
一、选择题
1).能直接执行的程序是机器语言程序,在机器内部以形式表示。
A)条形码B)拼音码C)内码D)二进制码
2).以下叙述中不正确的是________。
A)在函数中,通过return语句传回函数值
B)在函数中,可以有多个return语句
C)在C中,函数的调用必需在一条独立的语句中完成
D)在C中,main后的一对圆括号中也可以带有形参
3).若一个外部变量的定义形式为staticintx;其中static的作用是________。
A)将变量存放在静态存储区,使x的值可以永久保留
B)使变量x可以由系统自动初始化
C)使x的值可以永久保留
D)使x只能在本文件内引用
4).已知:
intx;floaty;所用的scanf调用语句格式为:
scanf(“x=%d;y=%f”,&x,&y);
则为了将数据10和66.6分别赋给x和y,正确的输入应当是:
A)x=10;y=66.6<回车>B)x=10,y=66.6<回车>
C)10<回车>66.6<回车>D)x=10<回车>y=66.6<回车>
5).语句if(!
i)i++;中的条件表达式!
i等价于________。
A)i==0B)i!
=1C)i!
=0D)-i
6).下面程序的运行结果是:
main()
{intx=10,y=10;
printf(“%d%d\n”,x--,--y);}
A)109B)910C)1010D)99
7).执行下面的程序段后,变量k中的值为:
intk=3,s[2];
s[0]=k;k=s[1]*10;
A)不定值B)33C)30D)10
8).已知英文字母a的ASCII代码值是十六进制数61H,那么字母d的ASCII代码值是:
A)34HB)54HC)24HD)64H
9)若有以下说明:
inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};
charc='a',d,g;
则数值为4的表达式是:
A)a[g-c]B)a[4]C)a['d'-'c']D)a['d'-c]
10).给出以下定义:
charx[]="abcdefg";
chary[]={'a','b','c','d','e','f','g'};
则正确的叙述为:
A)数组X和数组Y等价B)数组x和数组Y的长度相同
C)数组X的长度大于数组Y的长度D)数组X的长度小于数组Y的长度
11).C语言中规定,if语句的嵌套结构中,else总是与________配对。
A)与最近的if配套B)与第一个if配套
C)按缩进位置相同的if配套D)与最近的且尚未配对的if配套
12).若用数组名作函数参数,则传递的是:
A)数组的首地址B)数组中第一个元素得值
C)数组中全部元素的值D)数组元素的个数
13).当执行以下程序段时________。
x=-1;
do{x=x*x;}while(!
x);
A)循环体将执行一次B)循环体将执行两次
C)循环体将执行无限次D)系统将提示有语法错误
14).一个源文件中定义的外部变量的作用域:
A)本文件的全部范围。
B)本程序的全部范围。
C)本函数的全部范围。
D)从定义该变量的位置开始至本文件结束。
15).C语言规定,调用一个函数,实参与形参间数据传递方式:
A)地址传递B)值传递C)双向传递D)由用户指定传递方式
16).若有说明:
inti,j=7,*p=&i;则与i=j;等价的语句是:
A)i=*p;B)*p=*&j;C)i=&j;D)i=**p;
17).下面程序段的运行结果是_________.
char*s="abcde";
s+=2;printf("%d",s);
A)cdeB)字符'c'C)字符'c'的地址D)无确定的输出结果
18).设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确的执行的赋值语句是________.
A)c=*p1+*p2;B)p2=cC)p1=p2D)c=*p1*(*p2);
19).若有说明语句
chara[]="Itismine";
char*p="Itismine";
则以下不正确的叙述是________.
A)a+1表示的是字符t的地址
B)p指向另外的字符串时,字符串的长度不受限制
C)p变量中存放的地址值可以改变
D)a中只能存放10个字符
20).设有如下定义:
structsk
{intn;
floatx;
}data,*p;
若要使p指向data中的n域,正确的赋值语句是_______.
A)p=&data.n;
B)*p=data.n;
C)p=(structsk*)&data.n;
D)p=(structsk*)data.n;
21).以下不是c语言规定保留字的是()。
A)floatB)integerC)signedD)unsigned
22).下述程序执行后的输出结果是( )
#include
main()
{
intx='f';
printf("%c\n",'a'+(x-'a'+1));
}
A)gB)hC)iD)j
23).设有程序
#include
main()
{
inti,j;
for(i=0,j=1;i<=j+1;i+=2,j--)
printf("%d\n",i);
}
在运行上述程序时,for语句中循环体的执行次数是()
A)3B)23)1D)0
24)、错误的说明语句是:
______
A)charword[]={‘T’,’u’,’r’,’b’,’o’,’\0’};
B)charword[]={“Turbo\0”};
C)charword[]=“Turbo\0”;
D)charword[]=‘Turbo\0’;
25)已知:
intb[5];则对b数组元素的正确引用是:
_____
A)b[5]B)b[3.5]C)b(3)D)b[10-10]
26)、在一个C源程序文件中,若要定义一个只允许在该源文件中所有函数使用的变量,则定义为:
A)AutoB)staticC)externD)register
27).假定a和b为int型变量,则执行下述语句组后,b的值为()。
a=1;
b=10;
do
{
b-=a;
a++;
}while(b--<0);
A)9B)-2C)-1D)8
28).在C语言中,以下描述正确的是:
A)函数的定义可以嵌套,但函数的调用不可以
B)函数的定义不可以嵌套,但函数的调用可以
C)函数的定义和调用都不可以嵌套
D)函数的定义和调用均可嵌套
29).下述程序代码中有语法错误的行是()。
inti,ia[10],ib[10];/*第一行*/
for(i=0;i<=9;i++)/*第2行*/
ia[i]=0;/*第3行*/
ib=ia;/第4行*/
A)第1行B)第2行C)第3行D)第4行
30).若已定义
inta[9],*p=a;
并在以后的语句中未改变p的值,则不能表示a[1]地址的表达式是()。
A)p+1B)a+1C)a++D)++p
31).若有定义:
inta[2][3],则对a数组的第i行j列元素地址的正确引用为______.
A)*(a[i]+j)B)(a+i)C)*(a+j)D)a[i]+j
32).执行下述程序后的输出结果是()。
#include
voidmain()
{intf(int);
inta=2,i;
for(i=0;i<3;i++)
printf("%d",f(a));
}
intf(inta)
{autointb=0;
staticc=3;
b=b+1;
c=c+1;
return(a+b+c);
}
A)7910B)789C)799D)788
33).执行下述程序后的输出结果是()。
已知函数scopy的定义如下
voidscopy(char*s,char*t)
{
while(*s++=*t++);
}
则该函数的功能是()。
A)串复制B)求串长度C)串比较D)串反向
34).以下对结构体变量stu1中成员age的非法引用是________.
structstudent
{intage;
intnum;
}stu1,*p;
p=&stu1;
A)stu1.ageB)student.age
C)p->ageD)(*p).age
35).以下程序for语句循环体中printf语句执行次数是()。
#include
#defineN2
#defineMN+1
#defineNUM(M+1)*m/2
main()
{
inti;
for(i=1;i<=NUM;i++)
printf("%d\n",i);
}
A)5B)6C)8D)9
36).若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是______.
A)"ab+"B)"wb+"C)"rb+"D)"ab"
二、填空题
1)下面程序的运行结果是:
____
#include“stdio.h”
main()
{intx=23;
do
{printf(“%d”,x--);}
while(!
x);
}
2)若a=1;b=2;则问号表达式a>b?
a:
(b+1)的值是:
___
3)若定义:
charch;
使指针p指向变量ch的定义语句是:
____
通过指针p给变量ch赋值字符A的语句是:
_____
通过指针p输出变量ch中字符的语句是:
_____
4)循环语句for(x=0,y=0;(y!
=123)&&(x<4);x++)执行的循环次数是:
___次。
5)fp=fopen(“file1”,”r”)实现的操作是:
____
6).若x=2,y=3,则x&&y的结果是______.
7)C语言规定标识符只能有____三种字符组成,且第一个字符必须为__
8)假设m是一个三位数,从右到左用a、b、c表示各位数字,则从左到右各个数字是bac的三位数的表达式是:
____
3)main()
{printf(“*%f,%4.3f*”,3.14,3.1415);}输出结果:
_____
5)设有数组定义:
chararray[]="China";则数组array所占的空间为:
______个字节
三、程序阅读题
1.以下程序的输出结果是___________。
main()
{inti=010,j=10,k=0x10;
printf(“%d,%d,%d\n”,i,j,k);
}
2.写出以下程序的功能。
#include
voidmain()
{inta,b,s;
scanf("%d%d",&a,&b);
s=a-b;
if(a
printf("%d\n",s);
}
3.以下程序的运行结果是。
#include
voidf(inta[])
{inti=0;
while(a[i]<=10)
{printf("%3d",a[i]);
i++;}
}
voidmain()
{inta[]={12,5,10,9,13,4};
f(a+2);
}
4.写出以下函数的功能。
#include
intf(char*s)
{char*p=s;
while(*p!
='\0')p++;
return(p-s);
}
5.下面程序的运行结果是:
_____
#include“stdio.h”
main()
{chara[]=“Program”,*p;
for(p=a;pputchar(*p);
}
6.以下程序的运行结果是________.
structn{
intx;
charc;};
main()
{structna={10,'x'};
func(a);
printf("%d,%c",a.x,a.c);}
func(structnb)
{b.x=20;
b.c='y';}
7.以下程序输出的结果是________。
#include
voidmain()
{intn;
for(n=1;n<=10;n++)
{if(n%2)continue;
printf("%d\t",n);}
}
8.阅读以下函数,写出此函数的功能。
floatfun1(floata[],intn)
{inti=1;
floatresult=a[0];
for(;iif(result>a[i])result=a[i];
returnresult;
}
9.以下程序的运行结果是。
#include
inta=8,b=5;
intmax(inta,intb)
{intc;
c=a>b?
a:
b;
return(c);
}
voidmain()
{inta=2;
printf("%d\n",max(a,b));
}
10.运行以下程序,若输入:
57<回车>时,写出程序的输出结果。
#include
voidfun(int*p1,int*p2)
{intt;
t=*p1;*p1=*p2;*p2=t;
}
voidmain()
{intx,y;
int*p1,*p2;
scanf("%d%d",&x,&y);
p1=&x;p2=&y;
if(xprintf("x=%d,y=%d",x,y);
}
11.写出以下函数的功能。
#include
main()
{inta[5]={1,5,2,4,3},i,j,t;
for(j=1;j<=4;j++)
for(i=0;i<=4-j;i++)
if(a[i]{t=a[i];a[i]=a[i+1];a[i+1]=t;}
for(i=0;i<5;i++)printf("%d",a[i]);
}
12.下面程序的运行结果是___________.
main()
{structcmplx{intx;
inty;
}cnum[2]={1,3,2,7};
printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);}
四、程序填空
1)以下函数从数组a[n]中查找最大值并把该最大值作为函数的返回值。
findmax(inta[],intn)
{int*p,*s;
for(p=a,s=a;p-a<10;p++)
if()s=p;
return(*s);
}
2)有以下程序段:
s=1.0;
for(k=1;k<=n;k++)
s=s+1.0/(k*(k+1));
printf(“%f\n”,s);
请填空,使下面程序段的功能完全与之等同。
s=0.0;;k=0;
do{s=s+d;
③;
d=1.0/(k*(k+1));
}
while(④);
printf(“%f\n”,s);
3).以下程序用来求数组全部元素的和,请填写缺少的语句。
#include
voidmain()
{inta[]={0,1,2,3,4,5,6,7,8,9};
ints=0,i,*p;
p=;
for(i=0;i<10;i++);
printf("sum=%d",s);
}
4)以下程序的功能是求出输入整数的个位数、十位数和百位数(1000以下的正整数)。
请填空。
#include
voidmain()
{intx,a,b,c;
do{printf("输入一个1000以下的正整数:
");
;
printf("\n");
}while();
if(x<0)x=-x;
a=x/100;
b=(x-a*100)/10;
c=;
printf("%d的个位数是%d,十位数是%d,千位数是%d\n",x,c,b,a);
}
5)以下函数的功能是返回b的e次幂。
例如,intPow(2,3)的值为2*2*2。
假定e是非0整数,b是整数。
请填空。
intintPow(intb,inte)
{intresult,n;
for(n=0;n;
returnresult;
}
五、编程题
1.下面的程序是用选择法对数组中10个整数按由小到大排序。
请定义该程序中的sort函数。
#include
voidmain()
{voidsort(intarray[],intn);
inta[10],i;
printf(″enterthearray\n″);
for(i=0;i<10;i++=
scanf(″%d″,&a[i]);
sort(a,10);
printf(″thesortedarray∶\n″);
for(i=0;i<10;i++=
printf(″%d″,a[i]);
printf(″\n″);
}
/*sort函数的定义*/
2.有一个一维数组,内放10个学生成绩,下面的程序是求出并显示数组的平均分、最高分和最低分的。
请定义该程序中的average函数。
#include
floatMax=0,Min=0;/*全局变量*/
voidmain()
{floataverage(floatarray[],intn);
floatave,score[10];
inti;
for(i=0;i<10;i++)
scanf(″%f″,&score[i]);
ave=average(score,10);
printf(“max=%6.2f\nmin=%6.2f\n
average=%6.2f\n“,Max,Min,ave);
}
/*average函数的定义*/
3.计算个人所得税,月收入的5000元以上部分征20%,800元以上5000元之间部分需缴纳3%的税,800元以下的部分免税。
例如,小张月收入为6000元,则她需缴税(6000-5000)×20%+(5000-800)×3%=326元。
编程,要求输入个人应发工资,计算并输出个人所得税。
4.编程实现:
13个人围成一圈,从第1个人开始顺序报号1、2、3。
凡报到“3”者退出圈子,找出最后留在圈子中的人原来的序号。
复习题所涉及的知识点大家一定要好好掌握。
还有平时作业补充的那些编程题。
考试时间:
17周星期五