1、大学C语言程序设计考试参考题大学C语言程序设计考试参考题一 选择 10*2 1.一个C程序的执行是从(A)A. 本程序的main函数开始,到main函数结束。B. 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。C. 本程序文件的第一个函数开始,到本程序main函数结束。D. 本程序的main函数开始,到本程序文件的最后一个函数结束。2.以下叙述不正确的是(D)A. 一个C原程序必须包含一个main函数B. 一个C源程序可有一个或多个函数组成C. C程序的基本组成单位是函数D. 在C程序中,注释说明只能位于一条语句的后面3.以下选项不属于C语言的类型是(D) A. signed s
2、hort int B. unsigned long int C. unsigned int D. long short4.以下是C语言提供的合法的数据类型关键字(B) A. Float B. signed C. integer D. Char5.在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的顺序排列为(A) A. charintlong int=floatdouble B. char=intlong int=floatdouble C. charintlong int=float=double D. char=int=long int=floatdouble6.C语言中的标
3、识符只能由之母、数字和下划线三种字符组成,且第一个字符(C) A.必须为字母 B.必须为下划线 C.必须为字母和下划线 D.可以是字母、数字和下划线中任一字符7.以下不正确的叙述是(D) A.在C程序中,逗号运算符的优先级最低 B.在C程序中,APH和aph是两个不同的变量 C.若a和b类型相同,在执行了赋值表达式a=b后b中的值将放入a中,而b中的值不变 D.当从键盘输入数据时,对于整型变量只能输入整型数据,对于实型变量只能输入实型变量8.若以下变量均是整型,且num=sum=7;,则执行表达sum=num+,sum+,+num后sum的值为(A) A. 7 B. 8 C. 9 D. 109
4、.假设所有变量均为整型,则表达式(a=2,b=5,b+,a+b)的值是(B) A. 7 B. 8 C. 6 D. 210.若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是(D) A. scanf( %d%1x,%le , &x,&y,&z); B. scanf( %2d*%d%lf&x,&y,&z);C. scanf( %x%*d%o,&x,&y); D. scanf( %x%o%6.2f,&x,&y,&z);11.有输入语句scanf( a=%d,b=%d,c=%d , &a,&b,&c);,为使变量a的值为1,b为3,c为2,从键盘输入数据的正确形式应
5、当是(D) A. 132(回车) B. 1,3,2(回车) C. a=1 b=3 c=2(回车) D. a=1,b=3,c=2(回车)12.阅读以下程序,当输入数据的形式为25,13,10时,正确的输入结果为(D) main( ) int x,y,z; scanf( %d%d,%d, &x,&y,&z); printf(x+y+z=%dn,x+y+z); A. x+y+z=48 B. x+y+z=35 C. x+z=35 D. 不确定值13.一直ch是字符型变量,下面不正确的赋值语句是(A) A.ch=a+b; B.ch=0; C.ch=7+9; D.ch=5+9;14.执行下列程序片段时输出
6、结果是(C) int x=13,y=5; printf( %d,x%=(y/=2); A. 3 B. 2 C. 1 D. 015.若运行时输入:12345678,则下列程序运行结果为(A) main () int a,b; scanf( %2d%2d%3d,&a,&b); printf(%dn ,a+b); A. 46 B. 579 C. 5690 D. 出错16.能正确表示“当x的取值在1,10和200,210范围内为真,否则为假”的表达式是(C) A. (x=1)&(x=200)&(x=1) (x=200)(x=1)&(x=200)&(x=1) (x=200) (x=210)17.若希望当
7、A的值为奇数时,表达式的值为“真”;A的值为偶数时,表达的值为“假”,则以下不能满足的表达式是(C) A.A%2=1 B.!(A%2= =0) C.!(A%2) D.A%218.判断char型变量c1是否为小写字母,正确的表达式为(D) A. a=c1=a)&(c1=c1) (z=a)&(c1b)&(n=cd)后n的值为(B) A.1 B.2 C.3 D.420.执行以下语句后a的值为(C) int a,b,c; a=b=c=1; +a+b&+c; A.错误 B.0 C.2 D.121.下面有关for循环的正确描述是(D) A. for循环只能用于循环次数已经确定的情况 B. for循环是限制
8、性循环体语句,后判断表达式 C.在for循环中,不能用break语句跳出循环体 D. for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来22.对for(表达式1;表达式3)可理解为(B) A . for(表达式1;0;表达式3) B. for(表达式1;1;表达式3)C. for(表达式1;表达式1;表达式3) D. for(表达式1;表达式3;表达式3)23.以下正确的描述是(B) A. continue语句的作用是结束整个循环的执行 B.只能再循环体内和switch与具体内使用break语句 C.再循环体内使用break语句或continue语句的作用相同 D.从多层循环嵌套
9、中退出时,只能使用goto语句24.以下程序的循环次数是(B) for(i=2;i= =0;) printf(%d, i- -) A.无限次 B.0次 C.1次 D.2次25.若有如下语句 int x=3; do printf(%dn,x= =2);while(!(- -x); 则上面程序段(B) A.输出的是1 B.输出的是1和2 C.输出的是3和0 D.是死循环26.以下说法中正确的是(B) A. 一个函数在它的函数体内调用它自身称为嵌套调用 B. 一个函数在它的函数体内调用它自身称为递归调用,这种函数称为递归函数 C. 一个函数在它的函数体内调用其它函数称为递归调用,这种函数称为递归函数
10、 D. 一个函数在它的函数体内不能调用自身27.在一个源文件中定义的全局变量的作用域为(D) A.本文件的全部范围 B.本程序的全部范围 C.本函数的全部范围 D.从定义该变量的位置开始至本文件结束28.一下不正确的描述为(D) A.在函数之外定义的变量为外部变量,外部变量是全局变量 B.在函数中既可以使用本函数中的局部变量,又可以使用全局变量 C.若在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变了不起作用 D.以上都不正确29.以下叙述中不正确的是(D) A.在不同的函数中可以使用相同名字的变量 B.函数中的形式参数是局部变量 C.在一个函数内定义的变量只在本函数
11、内有效 D.在一个函数内的复合语句中定义的变量在本函数范围内有效30.下列叙述错误的是(B) A.对于用户自己定义的函数,在使用前有时可以加以说明 B.说明函数时必须明确其返回值类型,不需要确定其参数的类型 C.函数可以返回一个值,也可以什么字也不返回 D.空函数不能完成任何操作,所以在程序设计中没有用处31.下列叙述中正确的是(A) A.局部变量说明static存储数,其生存期间得到延长 B.全局变量说明static存储类,其作用域将被扩大 C.人和存储类的变量再未付初值时,其值都是不确定的 D.形参可以使用的存储类说明符与局部变量完全相同32.下列说法中正确的是(C) A. 形参是全局变量
12、,其作用范围仅限于函数内部 B. 形参是全局变量,其作用范围从定义只出到文件结束 C. 形参是局部变量,其作用范围仅限于函数内部 D. 形参是局部变量,其作用范围从定义只出到文件结束33.当全局变量与函数内部的局部变量同名时,则在函数内部(B) A.全局变量有效 B.局部变量有效 C.全局变量和局部变量都有效 D.全局变量和局部变量都无效34.一下能对二维数组a进行正确初始化的语句是(B) A. int a2=1,0,1,5,2,3; B. int a3=1,2,3,4,5,6; C. int a24=1,2,3,4,5,6; D. int a3=1,0,1,1,1;35.若说明int a34
13、=0;,则下面正确的叙述是(D) A.只有元素a00可得到初值0 B.此说明与语句不正确 C.数组a中个元素都可得到初值,但气质不一定为0 D.数组a中各元素都可以得到初值036. 若说明int a4=0,0;,则下面不正确的叙述是(D) A.数组a的每个元素都可得到初值0 B.二维数组a中第一位大小为1 C.因为二维数组a中第二位的值除以初值个数的商为1,故数组a的行数为1 D.只有元素a00和a01可得到初值0,其余元素均得不到初值37.若二维数组a有m列,则计算任意元素aij在数组中位置的公式为(D)(设a00位于数组的第一个位置上) A. i*m+j B. j*m+I C. i*m+j
14、-1 D. i*m+j+138.若有说明int a3=1,2,3,4,5,6,7;,则数组a第一位大小是(A) A.2 B.3 C.4 D.无确定值39.设有数组定义char array = China ;,则数组array所占的空间为(C) A.4个字节 B.5个字节 C.6个字节 D.7个字节40.下面是对s的初始化,其中不正确的是(D) A. char s5= abc B. char s5= a , b , c ; C. char s5= D. char s5= abcdef 41.对两个数组a和b进行如下初始化: char a=ABCDEF ; char b=A , B, C , D
15、, E , F ; 则以下叙述正确的是(D) A. a与b数组完全相同 B. a与b长度相同 C. a和b中都存放字符串 D. a数组比b数组长度长42.变量的指针,其含义是指该变量的(B) A.值 B.地址 C.名 D.一个标志43.若有语句int a=4,*point=&a;,下面军代表表地址的一组选项是(D) A. a,point,*&a B.&*a,&a,*point C. *point,point,&a D.&a,&*point,point44.若已定义char s10;,则在下面表达式中不表示s1的地址的是(B) A.s+1 B.s+ C.&s0+1 D.&s145.下列程序的运行
16、结果是(B) #include main( ) int a,b;for(a=1,b=1;a=20)break; if(b%3= =1) b+=3;continue; b-=5 printf(%dn ,a); A.7 B.8 C.9 D.1046.下列程序的运行结果是(A) #include stdio.h main( ) int i; for(i=1;i=5;i+) if(i%2)printf(*); else continue; printf(#); Printf($n ); A.*#*#*#$ B.#*#*#*$ C.*#*#$ D.#*#*$47.下列程序的运行结果是(A) main(
17、) int i,j,a=0; for (i=0;i2;i+) for(j=0;j0)s=a+b; if(a0) if(c0)w=a-b; else t=c; printf(%d,%d,%d ,s,w,t); 2.下列程序的运行结果是 #8 void main( ) int a=2,b=7,c=5; switch(a0) case 1:switch(b0) case 1: printf();break; case 2: printf(!);break; case 0:switch(c=5) case 0: printf(*);break; case 1: printf(#);break; def
18、ault: printf(#);break; default: printf(&); 3.下列程序的运行结果是 -850,2,0 #include main( ) int i,j,row,column,m;int array33=100,200,300,28,72,-30-850,2,6;m=array00;for(i=o;i3;i+) for(j=0;j3;j+) if(arrayijm) m=arrayij;row=I;column=j; printf(%d,%d,%dn ,m,row,column); 3.下列程序的运行结果是 sum=6 #include main( ) int a33
19、=1,3,5,7,9,11,13,15,17; int i,j,sum=0;for(i=0;i3;i+) for(j=0;j3;j+) aij=i+j; If(i= =j)sum=sum+aij; printf(nsum=%d,sum); 1 0 0 0 00 1 0 0 04.下列程序的运行结果是 0 0 1 0 00 0 0 1 00 0 0 0 1 #include main( ) int a66,i,j;for(i=1;i6;i+) for(j=1;j6;j+) aij=(i/j)*(j/i);for(i=1;i6;i+) for(j=1;j6;j+) printf( %2d ,aij
20、); 5.下列程序的运行结果是 5,6 #includeint t(int x,int y,int cp,int dp ) cp=x*x+y*y; dp=x*x-y*y; main( ) int a=4,b=3,c=5,d=6; t(a,b,c,d); printf(%d, %dn,c,d); i=7,j=6,x=7;6.下列程序的运行结果是 i=2,j=7,x=5; void main( ) int i=2,x=5,j=7; fun(j,6); printf(i=%d;j=%d;x=%dn,I,j,x); fun(int i,int y) int x=7; printf(i=%d;j=%d;
21、x=%d;x=%dn,I,j,x); 7.下列程序的运行结果是 gcd=12 gcd(int m,int n) if(m= =n)return m;else if(mn)return gcd(m-n,n);else return gcd(m,n-m); main( ) Printf(gcd=%dn,gcd(24,36) 8.下列程序的运行结果是 14 #include long fun(int n) long s; if (n= =1n= =2) s=2; else s=n+fun(n-1); return s;void main( ) printf(%dn,fun(5);三程序填空5*21.
22、下列程序用来对从键盘上输入的两个字符串进行比较,然后输入两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdef和abceef,则输出为-1。请填空。#includemain( )char str100,str2100,c;int i,s;printf(n input string 1:n);gets(str1);printf(n input string 2:n);gets(str2);i=0;while(str1i= =str2i&(str1i!= 0 i+s= str1i-str2i printf(%dn ,s); 2.以下程序的功能是:从键盘上输入若干个
23、学生的成绩,统计计算出平均成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。 #include main( ) float x1000,sum=0.0,ave,a;int n=0,Iprintf(Enter mark:n);scanf(%f,&a);while(a=0.0&n1000) sum+ =a xn= a n+; scanf(%f,&a); ave= sum/n printf(Output:n);printf(ave=%fn,ave);for(I=0;In;I+)if( xIave )printf(%fn,xI); 3.下列程序的功能是求3个变量的最小公
24、倍数,请填空。 long sp(int i) static long k=1; k= k*i return k; main( ) int n,I,scanf(%d,&n);for(i=1; iy&xz)return x; else if(y=x&yz) return y ; else return z;main( ) int x,y,z,s,i=1,j; scanf(%d%d%d,&x,&y,&z); s= max(x,y,z) while(1) j=i*s; if( j%x= =0&j%y= =0&j%z= =0)break; i+; printf(%dn,j);四程序代码2*1513.编一
25、程序,将两个字符串连接起来,不要strcat函数。编写程序如下:#include stdio.hmain() int i,j;char str1100,str2100,str3201; gets(str1); gets(str2); for(i=0;str1i!=0;i+)str3i=str1i; for(j=0;str2j!=0;j+)str3j+i=str2j; printf(n);printf(%snn%snn%snn,str1,str2,str3);getch();14.编一个程序,将两个字符串S1和S2比较,如果S1S2,输出一个正数;S1=S2,输出0;S1S2,输出一个负数。不要
26、用strcpy函数。两个字符串用gets函数读入。输出的正数或负数的绝对值应是相比较的两个字符串相对应字符的ASCII码的差值。例如,A与C相比,由于AC,应输出负数,由于A与C的码差值为2,因此应输出-2。同理:And和Aid比较,根据第2个字符比较结果,n比i大5,因此应输出5。编写程序如下:#include #include main() int i,resu; char s1100,s2100; printf(n input string1:);gets(s1); printf(n Input string2:);gets(s2); i=0; while(s1i=s2i&s1i!=0) i+;if(s1i=0&s2i=0) resu=0;else resu=s1i-s2i; printf(n result:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1