1、资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。一、 选择题( 每题1.5分, 共计45分) 1、 以下叙述正确的是【 】AC语言程序是由过程和函数组成的BC语言函数能够嵌套调用, 例如: fun(fun(x)CC语言函数不能够单独编译DC语言中除了main函数, 其它函数不可作为单独文件形式存在2、 以下关于C语言的叙述中正确的是【 】AC语言中的注释不能够夹在变量名或关键字的中间BC语言中的变量能够在使用之前的任何位置进行定义C在C语言算术表示式的书写中, 运算符两侧的运算数类型必须一致DC语言的数据常量中夹带空格不影响常量的正常使用3、 以下C语言用户标识符中, 不合法的是
2、【 】A_1BAaBcCa_bDab4、 若有定义: double a=22;int i=0,k=18;, 则不符合C语言规定的赋值语句是【 】Aa=a+,i+;Bi=( a+k) =( i+k) ;Ci=a%11;Di!a;5、 有以下程序includemain( ) char a,b,c,d;scanf( ”%c%c”,&a,&b) ;c=getchar( ) ; d=getchar( ) ;printf( ”%c%c%c%cn”,a,b,c,d) ;当执行程序时, 按下列方式输入数据( 从第1列开始, 代表回车, 注意: 回车也是一个字符) 1234则输出结果是【 】A1234B12C1
3、2 3D12 346、 以下关于C语言数据类型使用的叙述中错误的是【 】A若要准确无误差的表示自然数, 应使用整数类型B若要保存带有多位小数的数据, 应使用双精度类型C若要处理如”人员信息”等含有不同类型的相关数据, 应自定义结构体类型D若只处理”真”和”假”两种逻辑值, 应使用逻辑类型7、 若a是数值类型, 则逻辑表示式( a= =1) |( a!=1) 的值是【 】A1B0C2D不知道a的值, 不能确定8、 以下选项中与if( a= =1) a=b; else a+; 语句功能不同的switch语句是【 】Aswitch( a) case:a=b;break;default:a+;Bswi
4、tch( a= =1) case 0:a=b;break;case 1:a+;Cswitch( a) default:a+;break;case 1:a=b;Dswitch( a= =1) case 1 : a=b;break;case 0 : a+;9、 有如下嵌套的if语句if ( ab) if( ac) k=a;else k=c;elseif( bc) k=b;else k=c;以下选项中与上述if语句等价的语句是【 】 Ak( ab)? a:b; k( bc) ? b:c;Bk( ab)? ( ( bc) ? a:b:( ( bc) ? b:c) ;Ck( ab) ? ( ( ac)
5、? a:c) :( ( be) ? b:c) ;Dk( ab) ? a:b; k=( ac) ? a:c;10、 有以下程序includestdio.hmain( ) in i,j,m=1;for( i=1;i3;i+) for( j=3;jO;j-) if( i*j) 3) break;m=i*j;printf( m=%dn,m) ;程序运行后的输出结果是【 】Am=6Bm=2Cm=4Dm=511、 有以下程序include( stdio.hmain( ) int al;b2;for( ;a8;a+) b+=a;a+=2;printf( %d, %dn, a, b) ;程序运行后的输出结果是
6、【 】A9, 18B8, 11C7, 11D10, 1412、 有以下程序, 其中k的初值为八进制数#include main( ) int k011; printf( %dn, k+) ;程序运行后的输出结果是【 】A12B11C10D913、 下列语句组中, 正确的是【 】Achar *s;s=Olympic;Bchar s7;s=Olympic;Cchar *s;s=Olympic;Dchar s7;s=Olympic;14、 以下关于return语句的叙述中正确的是【 】A一个自定义函数中必须有一条return语句B一个自定义函数中能够根据不同情况设置多条return语句C定义成voi
7、d类型的函数中能够有带返回值的return语句D没有return语句的自定义函数在执行结束时不能返回到调用处15、 下列选项中, 能正确定义数组的语句是【 】Aint num0. ;Bint num;Cint N= ; int numN;D#define N int numN;16、 有以下程序#include void fun( char *c,int d) *c=*c+1;d=d+1;printf( %c,%c,*c,d) ;main( ) char b=a,a=A; fun( &b,a) ;printf( %c,%cn,b, a) ;程序运行后的输出结果是【 】Ab, B, b, ABb
8、, B, B, ACa, B, B, aDa, B, a, B17、 若有定义int(*Pt)3; , 则下列说法正确的是【 】A定义了基类型为int的三个指针变量B定义了基类型为int的具有三个元素的指针数组ptC定义了一个名为*pt、 具有三个元素的整型数组D定义了一个名为pt的指针变量, 它能够指向每行有三个整数元素的二维数组18、 设有定义double a10,*s=a;, 以下能够代表数组元素a3的是【 】A(*s)3B*(s+3)C*s3D*s+319、 有以下程序include( stdio.h) main( ) int a5=1,2,3,4,5,b5O,2,1,3,0,i,s0
9、;for( i0;i5;i+) ss+abi) ;printf( %dn, s) ;程序运行后的输出结果是【 】A6B10C11D1520、 有以下程序include main( ) int b 33=O,1,2,0,1,2,O,1,2,i,j,t=1;for( i=0;i3;i+) for( j=ij=1;j+) t+=bibji;printf( %dn,t) ;程序运行后的输出结果是【 】A1B3C4D921、 若有以下定义和语句char s110=abcd!,*s2=n123;printf( %d %dn, strlen( s1) ,strlen( s2) ) ;则输出结果是【 】A5
10、5B10 5C10 7D5 822、 有以下程序#include #define N 8void fun( int *x,int i) *x=*( xi) ;main( ) int aN=1,2,3,4,5,6,7,8,i;fun( a,2) ;for( i=O;iN2;i+) printf( %d,ai) ;printf( n) ;程序运行后的输出结果是【 】A1313B2234C3234D123423、 有以下程序#include int f( int t ,int n) ;main int a4=1,2,3,4,s;s=f( a,4) ; printf( %dn,s) ;int f( i
11、nt t ,int n) if( n0) return tn-1+f( t,n-1) ;else return 0; 程序运行后的输出结果是【 】A4B1OC14D624、 有以下程序#include int fun( ) static int x=1;x*2; return x;main( ) int i,s=1, for( i=1;i=2;i+) s=fun( ) ;printf( %dn,s) ;程序运行后的输出结果是【 】AOB1C4D825、 有以下程序#include #define SUB( a) ( a) -( a) main( ) int a=2,b=3,c=5,d;d=SU
12、B( a+b) *c;printf( %dn,d) ;程序运行后的输出结果是【 】A0B-12C-20D1026、 设有定义:struct complex int real,unreal; data1=1,8,data2;则以下赋值语句中错误的是【 】Adata2=data1;Bdata2=( 2,6) ;Cdata2.real=data1.real;Ddata2.real=data1.unreal;27、 有以下程序#include #include struct A int a; char b10; double c;void f( struct A t) ;main( ) struct
13、A a=1001,ZhangDa,1098.0;f( a) ; printf( %d,%s,%6.1fn,a.a,a.b,a.c) ;void f( struct A t) t.a=1002; strcpy( t.b,ChangRong) ;t.c=1202.0;程序运行后的输出结果是【 】A1001,zhangDa,1098.0B1002,changRong,1202.0C1001,ehangRong,1098.OD1002,ZhangDa,1202.0 28、 有以下定义和语句struct workers int num;char name20;char c;structint day;
14、int month; int year; s;struct workers w,*pw;pw&w;能给w中year成员赋1980的语句是【 】A*pw.year198O;Bw.year=1980;Cpw-year=1980;Dw.s.year=1980;29、 有以下程序#include main( ) int a=2,b=2,c=2;printf( %dn,a/b&C;程序运行后的输出结果是【 】AOB1C2D330、 有以下程序#include main( ) FILE *fp;char str10;fp=fopen( myfile.dat,w) ;fputs( abc,fp) ;fclo
15、se( fp) ;fpfopen( myfile.data,a+) ;fprintf( fp,%d,28) ;rewind( fp) ;fscanf( fp,%s,str) ; puts( str) ;fclose( fp) ;程序运行后的输出结果是【 】AabcB 28cC abc28D因类型不一致而出错二、 填空题( 每空2分, 共30分) 1、 设x为int型变量, 请写出一个关系表示式_, 用以判断x同时为3和7的倍数时, 关系表示式的值为真。 2、 有以下程序#include main( ) int a=1,b=2,c=3,d=0;if( a=1) if( b!=2) if( c=3
16、) d=1;else d=2;else if( c!=3) d=3;else d=4;else d=5;printf( ”%dn”,d) ;程序运行后的输出结果是_。3、 有以下程序#include main( ) int m,n;scanf( %d%d,&m,&n) ;while( m!=n) while( mn) m=m-n;while( mn) n=n-m;printf( ”%dn”,m) ;程序运行后, 当输入14 63 时, 输出结果是_。4、 有以下程序#include main( ) int i,j,a3=1,2,3,4,5,6,7,8,9;for( i=0;i3;i+) for
17、( j=i;j3;j+) printf( ”%d%,aij) ;printf( n) ;程序运行后的输出结果是_。 5、 有以下程序#include main( ) int a=1,2,3,4,5,6,*k3,i=0;while( i3) ki=&a2*i;printf( %d,*ki) ;i+;程序运行后的输出结果是_。6、 有以下程序#include main( ) int a33=1,2,3,4,5,6,7,8,9;int b3=0,i;for( i=0;i3;i+) bi=ai2+a2i;for( i=0;i3;i+) printf( %d,bi) ;printf( n) ;程序运行后
18、的输出结果是_。7、 有以下程序#include #include void fun( char *str) char temp;int n,i;n=strlen( str) ;temp=strn-1;for( i=n-1;i0;i-) stri=stri-1;str0=temp;main( ) char s50;scanf( %s,s) ; fun( s) ; printf( %sn,s) ;程序运行后输入: abcdef, 则输出结果是_。 8、 以下程序的功能是: 将值为三位正整数的变量x中的数值按照个位、 十位、 百位的顺序拆分并输出。请填空。 #include main( ) int
19、 x=256;printf( %d-%d-%dn,_ ,x/10%10,x/100) ; 9、 以下程序用以删除字符串所有的空格, 请填空。#include main( ) char s100=Our teacher teach C language!;int i,j;for( i=j=0;si!=0;i+) if( si!= ) sj=si;j+;sj= _printf( ”%sn”,s) ; 10以下程序的功能是: 借助指针变量找出数组元素中的最大值及其元素的下标值。请填空。#include main( ) int a10,*p,*s;for( p=a;p-a10;p+) scanf( %
20、d,p) ;for( p=a,s=a;p-a*s) s=_; printf( ”index=%dn”,s-a) ; 三、 程序改错题( 10分) 下列给定程序中, 函数proc的功能是:先从键盘输入一个3行3列的矩阵各个元素的值, 然后输出主对角线元素之积,请修函数proc中的错误使其能得出正确的结果。注意不要修改主函数, 不要增删程序行或更改程序的结构。#include void proc() int arr33,mul; int i,j; mul=1; printf( please input an 3*3 array:n); for (i=0;i3;i+) /*第一处错误区*/ for
21、(i=0;j3;j+) scanf(%d,&arrii); for(i=0;i3;i+)/*第二处错误区*/ mul=mul*arrij; printf(Mul=%dn,mul);void main() proc();四、 程序编写(15分)请补充main函数, 该函数实现的功能是把一个二维字符数组中最大的字符拷贝到新的数组str中。例如: arr3=”hoih”,”yufui”,”xgf”,则str=”oyx”。void main() int i=0; char *arr3= hoih,yufui,xgf; char *p; char str8;/*请开始编写*/ stri= 0; prin
22、tf( new string n); puts(str);C语言程序设计( A卷) 答案一、 选择题 1-10: BBDCC DABCA11-20: DDABDADBCC21-30: ACBCCBADAC二、 填空题( 1) ( X%3=0) &( X%7=0)( 2) 4( 3) 7( 4) 123569( 5) 135( 6) 101418( 7) fabcde( 8) x%100%10( 9) si+1( 10) s+1三、 程序改错题for (i=0;j3;j+)改为for (j=0;j3;j+)mul=mul*arrij; 改为 mul=mul*arrii;四、 程序编写#include #include void main() int i=0; char *arr3= hoih,yufui,xgf; char *p; char str8; p=arr; for(i=0;i3;i+) stri=*pi;while(*pi)if(stri*pi)stri=*pi;pi+; stri= 0; printf( new string n); puts(str);