当前位置:文档之家› 中国石油大学《C语言程序设计》期末复习题及答案

中国石油大学《C语言程序设计》期末复习题及答案

《C语言程序设计》期末复习题一、选择题1.能将高级语言编写的源程序转换成目标程序的是()A.链接程序 B. 解释程序 C. 编译程序 D.编辑程序2.设a为整型变量,则不能正确表达数学关系10<a<15的C语言表达式是()。

A. 10<a<15B. a==11||a==12||a==13||a==14C. a>10&&a<15D.!(a<=10)&&!(a>=15)3.当调用函数时,实参是一个数组名,则向函数传送的是( )。

A. 数组的长度B. 数组的首地址C. 数组每一个元素的地址D. 数组每个元素中的值4.执行下面的程序段后,k的值是()int k=1,n=325;do { k*=n%10;n/=10;}while(n);A. 3B. 30C. 523D. 3255.若有以下数组说明,则i=6;a[a[i]]元素数值是()。

int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};A.3B.8C.6D.56.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是()A. for(i=1,p=1;i<=5;i++) p*=i;B. for(i=1;i<=5;i++){ p=1; p*=i;}C. i=1;p=1;while(i<=5){p*=i; i++;}D. i=1;p=1;do{p*=i; i++; }while(i<=5);7.若有:int a[][3]={{1,2,3},{4,5},{6,7},{8}}; 则数组a的第一维的大小为: ( ) A. 12 B. 3 C. 4 D.无确定值8.设有如下程序段,则执行p=s;语句后,以下叙述正确的是( )。

char s[20]= “Bejing”,*p;p=s;A.可以用*p表示s[0]B.s数组中元素的个数和p所指字符串长度相等C.s和p都是指针变量D.数组s中的内容和指针变量p中的内容相等9.以下正确的函数定义是( )。

A.double sum(int x, int y) B.double sum (int x,y){ z=x+y ; return z ; } { int z ; return z ;}C.sum (x,y) D.double sum (int x, int y){ int x, y ; double z ; { double z ;z=x+y ; return z ; } z=x+y ; return z ; }10.已知学生信息描述为struct student{int no;char name[20];char sex;struct{int year; int month; int day; }birth;};struct student s;设变量s中的“生日”应是“1984年11月11日”,下列对“生日”的正确赋值方式是()。

A. year=1984;month=11;day=11;B. birth.year=1984;birth.month=11;birth.day=11;C. s.year=1984;s.month=11;s.day=11;D. s.birth.year=1984;s.birth.month=11;s.birth.day=11;11. 下列数据中,为字符串常量的是()。

A. ′A′B. How do you do.C. "A"D.$abc12.以下运算符中,优先级最高的运算符是()。

A. ||B. %C. !D.==13.执行以下程序段后,输出结果和a的值是()。

int a=10;printf("%d",++a);A.10和10B.10和11C.11和10D.11和1114. 有定义语句:int x,y;若要通过scanf("%d%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,正确的是()。

A. 11 12<回车>B. 11,<空格>12<回车>C. 11,12<回车>D. 11,<回车> 12<回车>15. 下列定义数组的语句中,正确的是( )。

A. int x[0..10];B. int x[ ];C. #define N 10D. int N=10;int x[N]; int x[N];16. 若已定义x为int类型变量,下列语句中说明指针变量p的正确语句是()。

A. int p=&x;B.int *p=x;C. *p=*x;D. int *p=&x;17. 以下不是无限循环的语句为()。

A. for(y=0,x=1;x>++y;x=i++) i=x;B. for(;;x++=i);C. while(1){x++;}D. for(i=10;;i--) sum+=i;18. 有以下函数,函数的功能是( )。

int fun(char *x, char *y){ int n=0;while ( (*x==*y) && *x!='\0' ) {x++; y++; n++;}return n ;}A.将y所指字符串赋给x所指存储空间B.查找x和y所指字符串中是否有'\0'C.统计x和y所指字符串中最前面连续相同的字符个数D.统计x和y所指字符串中相同的字符个数19. 语言中,定义结构体的保留字是()。

A.unionB.structC.enumD.typedef20. 应用缓冲文件系统对文件进行读写操作,关闭文件的函数名为()。

A.openB.fopenC.closeD.fclose21. 在C语言中,if语句后的一对原括号中,用以决定分支的流程的表达式()。

A.只能用逻辑表达式B.只能用关系表达式C.只能用逻辑表达式或关系表达式D.可用任意表达式22. 假设所有变量均为整型,表达式:a=2,b=5,a>b?a++:b++,a+b的值是()。

A.7B.8C.9D.223. 若有如下代码,则a的值为()。

int a=1,b=2,c=3;if(a>b)a=b;if(a>c)a=c;A.1B.2C.3D.不一定24.假定所有变量均已正确定义,下列程序段运行后x的值是()。

k1=1;k2=2;k3=3;x=15;if(!k1) x--;else if(k2) x=4;else x=3;A.14B.4C.15D.325. 以下for循环的执行次数是 for(x=0,y=0;(y=123)&&(x<4);x++);()。

A.是无限循环B.循环次数不定C.4次D.3次26. 以下运算符中,优先级最高的运算符是()。

A. ||B. %C. !D.==27. 有定义语句:int x,y;若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是()。

A. 11 12<回车>B. 11,<空格>12<回车>C. 11,12<回车>D. 11,<回车> 12<回车>28. char a[10];不能将字符串"abc"存储在数组中的是()。

A.strcpy(a,"abc");B.a[0]=0;strcat(a,"abc");C.a="abc";D.int i;for(i=0;i<3;i++)a[i]=i+97;a[i]=0;29. 以下程序段 char *alp[]={"ABC","DEF","GHI"}; int j; puts(alp[1]);的输出结果是()。

A.AB.BC.DD.DEF30. 若执行fopen函数时发生错误,则函数的返回值是()。

A.地址值B.0C.1D.EOF二、读程序,写出程序的运行结果1.以下程序的输出结果是()。

#include <stdio.h>void main(){ int x=0,y=1,a=0,b=0;switch(x){case 0:switch(y){case 0: a++;case 1: b++;}case 1:switch(y){case 0: a=a+5;case 1: b=b+5;}}printf(“a=%d,b=%d\n”,a,b);}2.以下程序的输出结果是()#include <stdio.h>void main(){ int x=-5,y=2,z=1;if(x<y)if(y<0) z=0;else z=z+1;printf(“%d\n”,z);}3.以下程序的输出结果是:()#include"stdio.h"void main( ){int j,k, x[4][4],y[4][4];for(j=0;j<4;j++)for(k=0;k<4;k++)x[j][k]=j+k;for(j=0;j<4;j++)for(k=0;k<4;k++)y[k][j]=x[j][k];for(j=0;j<4;j++){ for(k=0;k<4;k++)printf("%d ",y[j][k]);printf("\n");}}4.以下程序的输出结果是:()#include <stdio.h>void main(){ int i,j;for(i=j=1;j<10;j++,i++){if(j==5)break;if(i%2)continue;printf("i=%d,j=%d\n",i,j);}}5.若有以下程序段,则输出结果是( )。

#include <stdio.h>void main(){char s2[]="\"c:\\abc.dat\"";printf(“%s\n”,s2); }6.以下程序的输出结果是:()#include <stdio.h>int fun( int n){ int s;if(n==1||n==0) s=5;else s=n+fun(n-1);return s;}void main(){printf("%ld\n", fun(3));}7.以下程序的输出结果是:()void main(){ int a[]={2,4,6,8,10};int y=120,x,*p;p=&a[1];for(x=0;x<3;x++) y+=*(p+x);printf("y=%d\n",y);}8.以下程序的输出结果是:()#include<stdio.h>void sub(int s[],int y){static int t=3;y=s[t];t--;}void main(){int a[]={1,2,3,4},i,x=0;for(i=0; i<4; i++){sub(a,x);printf(“%d”,x);}printf(“\n”);}9. 以下程序段运行后x的值是:()k1=1;k2=0;k3=3;x=15;if(!k1) x--;else if(k2) x=4;else x=3;10. 以下程序的输出结果是:()#include <stdio.h>main(){ int s=0, n;for (n=0; n<4; n++){ switch(n){ default: s+=5;case 1: s+=1;case 2: s+=2;case 3: s+=3;}}printf("%d\n", s);}11. 以下程序段运行后sum的值是:()int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;for(i=0;i<3;i++) sum+=a[i][2-i];12. 以下程序的输出结果是:()#include <stdio.h>int main(){int i=10,n=0,m=0;do{if(i%2!=0)n=n+i;elsem=m+i;i--;}while(i>=0);printf("n=%d,m=%d\n",n,m);return 0;}13. 以下程序的输出结果是:()#include <stdio.h>void main(){int a,b;for(a=1,b=1;a<=100;a++){if(b>20) break;if(b%4==1){b=b+4;continue;}b=b-5;}printf("b=%d\n",b);}14. 以下程序的输出结果是:()#include <stdio.h>funa(int a){ int b=0;static int c=4;a=c++,b++;return(a);}main(){ int a=2,i,k;for(i=0;i<2;i++)k=funa(a++);printf("%d\n",k);}15. 以下程序的输出结果是:()#include <stdio.h>void main(void){char a[]="ABCDEFGH",b[]="abcDefGh";char *p1,*p2;int k;p1=a; p2=b;for(k=0;k<=7;k++)if (*(p1+k)==*(p2+k))printf("%c",*(p1+k));printf("\n");16. 以下程序的输出结果是:()#include <stdio.h>#include <string.h>int main(){int i;char str1[30]="abc",str2[3][5]={"defg","hij\0","klm"};for(i=1;i<3;i++)strcat(str1,str2[i]);puts(str1);return 0;}17. 以下程序的输出结果是:()void main(){int m=7,n=4;float a=38.4,b=6.4,x;x=m/2+n*a/b+1/2;printf("%.4f\n",x);}18. 以下程序段的输出结果是:()int a=3,b=2,c=1;if(a>b>c)a=b;else a=c;printf("%d\n",a);19. 以下程序的输出结果是:()int func(int x,int y){ return(x+y);}void main()int a=1,b=2,c=3,d=4,e=5;printf("%d\n",func((a+b,b+c,c+a),(d+e))); }20.下列程序执行后的输出结果是()。

相关主题