《《C语言程序设计》考试模拟练习题3【附答案】.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》考试模拟练习题3【附答案】.docx(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言程序设计考试模拟练习题3【附答案】一选择题1、(C)是不正确的。A、每条语句最后必须有一个分号;B、C源程序可由一个或多个函数组成;C、注释说明只能位于一条语句的后面;D、C源程序的基本组成单位是函数。2、(D)是正确的叙述。A、强制类型转换运算的优先级低于运算;B、表达式“m”+“M”是合法的;C、若变量X,Y为整型,则(a+b)+是合法的;D、表达式m*n是合法的;3、(C)为正确的变量名A. k.jeep B. int C. k_5 D. k154、若有定义 int m=4321, n=123, k=21; 语句printf( “%4d+%3d+%2d”,m,n,k); 执行后的输
2、出结果是(D)A、4321432143211231231232121B、432+123+021C、432112321D、4321+123+215、若定义int a= -5 , b= -8, c=21,则表达式a=b| bc 的值是(A)A、1; B、变量j的值 C、变量i的值 D、 06、设已定义float a=2 .0,b=3 .0 ; 使a 的值为5. 0 的表达式是(D)A、a-=b+2.0 B. a*=b+2.0 C. a/=b+2.0 D. a+=b 7、在循环语句的循环体中,break语句的作用是(D)A、结束本次循环B、暂停程序的运行C、继续执行break语句之后的循环体各语句D
3、、提前结束循环,接着执行该循环后续的语句9、若已定义,int x4=2,1,3;则元素x1的值为(C)A、2 B、3 C、1 D、010、以下程序执行后的输出的结果是(A)int a4=1,2,3,4,5,6,7,8,9,10,11,12;printf(%dn,a12);A、7 B、6 C、3 D、211、( )是正确的叙述.(没答案)A.+3与4等价 B.5/6与5.0/6.0等价 C a与”A”等价 D5.0/6与5/6等价12.以下叙述正确的是( D )A使用带参数的宏定义时,应该说明每个参数的数据类型,B”#DEFINE PRICE=30 “定义了与30等价的符号常量PRICE,C 一
4、个源程序只能有一个编译预处理命令行,D编译预处理命令行都必须以”#”开头.13、 以下叙述错误的是( D )A一个指针变量只能指向类型相同的变量.B存放地址的变量称为指针变量.C NULL可以赋值给任何类型的指针变量D 两个相同类型的指针变量可以作加减运算.(加没意义)14、 以下程序段运行后变量s的值是( B )int a = 1,2,3,4,5,6,7;int i,s=1,*p;p=&a 3;for (i=0; i3;i+)s*=*(p+i); (相当于4*5*6)A 210 B 120 C 60 D 615、设已定义:char s18,s28=“Science”;能将字符串“Scienc
5、e”赋给数组s1的语句是( D ) A、s1=s2; B、strcpy(s1,s2); C、S1=”Science”; D、strcpy(s1,s2);16、以下程序运行的结果是(C )#includeint a=2,b=3,c=5;int fun(int a,int b) int c;c=ab?a,b;return(c);main()int a=6;printf(%d,fun(fun(a,b),c);A、6,5 B、3,5 C、6 D、517、若有定义int a,x;则语句a=(x=8,x+8),运行后,变量a,x的值依旧为( B)A 16,16 B 16,8 C 8,8 D 8,1618、
6、 以下程序运行后输出结果是(B )#define MIN(m,n) mn?m:nmain( ) int a=3,b=5,c; c=2*MIN(a,b); /2*mn?m:n(注意)printf(“%d”,c);A 3 B 5 C 10 D 619、 语句k=(m=3,n=+m);运行后,变量k,m,n的值依次为(4,4,4 )A 5,6,5 B 6,6,6 C 5,5,6 D 6,6,520、 若以定义double y ,从键盘输入一个值赋给变量y,则正确的函数调用是(A )A scanf(“%1f”,&y); B scanf(“%7.2f”,&y);(输入不能规定精度)C scanf(“%1
7、d”,&y); D scanf(“%d”,&y);21、 已定义char c=A, 则正确的赋值表达式是( A )A c=(c+)%4) B c=0 28C c+=127- D c+1=6622、若已定义 int x= -16, y= -12,z;语句z=x=y; 运行后z的值是(D )A、f B、 .t . C、0 D、123、下面叙述正确的是( C )A每行只能写一条语句, B程序中必须包含有输入语句C变量按所定义的类型存放数据 D main函数必须位于程序开头24、( A )为非法字符串常量.(字符串必须是双引号)A egf B ” ” C ”s” D ”2662”25. 若有定义int
8、 m=6,则正确的赋值表达式是( C )A m*5=8 B m*7 C m-=m*6 D double(-m)26、 若有定义int i=1,j=9,则表达式(+j)*(i- -)的值为( D ) A8 B0 C9 D1027、关于C语言数据类型正确的是:( C )A.枚举类型不是基本类型 B.数组并不是构造类型 C.变量必须先定义生使用 D.不允许使用空类型28、若变量 m,n,t 已定义且赋予初值,则正确的表达式是 ( C,D ) A. m=int(5.6%4) B. m=m+1=t-n C. m=6+n+t,m+ D. m=m/229、设整型变量x为7,使整型变量y不为2的表达式是; (
9、 C )A. y=(+x)/3 B. y=x%3 C.y=x/3 D. y=8-(- -x)30. 已定义 int m= A; 则正确的表达式是(B )。A. 2*m=m+ B. m%3 C. m=m-m=m-5 D. m=int(-3.2)31. 以下程序运行的结果是(C)。 Void main() int x,y,z,a; x=y=z=1; a=15; if(!x) a-; else if(y) ; if(z) a=3; else a+=4; printf(“%dn”,a);A.19 B.14 C.3 D.1532正确的数组定义是(B )。A int n=10,xn; B. int x10
10、; C int N=10; int xN; D. int n; scanf(“%d”,&n); int xn;33. 若有定义:int a34;则表达式&a21-a的值为(A)。(地址相减表示有几个数)A9 B. 7 C。10 D。834有如下定义: char str10=“National”; 则分配给数组srt的存储空间是(B)个字节。A9 B。10 C。8 D。1135以下程序运行后输出结果是(D)。Void fun(int i) int m=2;m=i+;printf(“%d”,m);main()int m=7,n=5;fun(n);printf(“%d”,m);A. 6 7 B. 6
11、 6 C. 5 5 D. 5 736、 有以下语句:int a50,1,2,3,4,5,i;int *p=a;0=i5,对a数组元素不正确的引用是(B)。Api B.*(*(a=i) C.ap-a D.*(&ai)37.以下程序运行结果是(D)。int a=1,2,3,4,5,6,7,*p=a;int n,sum=0;for(n=1;n6;n+) sum+=pn+; (相当于: p1+p3+p5)printf(“%d”,sum);A.16 B.27 C.15 D.1238. 若有定义:struct student int num;char name8;char sex;float score;
12、stu1;则变量stu1所在占用的确内存字节数是(A)。A15 B19 C8 D1639、 ( )为正确的字符常量 (没有答案) A C B C M D 24m41、 判定逻辑值为真的最准确叙述是( D ) A 大于0的数 B 1 C 非0的整数 D 非0的数42、 若定义int a=1,b=2,t=3;则执行以下程序段后变量a,b,t的值分别为( )(题目有错) A a=2,b=1,t=1 B a=3,b=1,t=2 C a=2,b=1,t=3 D a=2,b=1,t=243、 若已定义int a;不会产生死循环的语句是( C ) A while(-1) a+; B for(a=10;a-)
13、; C for(;(a=getchar()!=n;) D for(;a+=2);44、 (A )是合法的数组定义 A char str=48,49,50,51,52,53; B int a5=0,1,2,3,4,5; C char srt=string; D int a=string45、( A )关于C语言数据类型正确描述 A变量必须先定义使用 B枚举类型不是基本类型 C不允许使用空类型 D 数组并不是构造类型46(C)语句符合C语言语法 Afloat z=28,int x.y=18; Bint x y=z; Cint x=25,y=25,z=25; Dint x=25;y=25;z=25;
14、47(C)能正确表示数学关系示100=s300 的表达式是 A100=s100)&(s=100)&(s=100)and(s=0?7:3printf(“%dn”,m)A 7 B 1 C-1 D353、( D )合法的数组定义A char str=string B int a=”C int a5=0,1,2.5 D char str=48,49,.5354、输出结果是()Int a4=1,211,12 printf(“%dn”,a12);A 3 B 2 C6 D7 55、 若定义int i=1 ,j=9 ;则表达式(+j)*(i- -)的值为( )A 8 B 10 C 0 D 9 56、 对于整数
15、变量a ,赋值语句a=(a%3=0?1:0);与(B )语句不等价。A if (a%3 )a=0;else a=1 ; B if( a%3) a=1 ;else a=0 C if (a%3=0 ) a=1;else a=0 D if (a%3!=0)a =0 ;else a=157、 dowhile 循环与while 循环的主要区别是()A while 循环体至少无条件执行一次,而dowhile循环体可能都不执行B dowhile循环体中可适用break语句,while循环体不允许出现C dowhile循环体至少无条件执行一次,而while循环体可能都不执行 D dowhile循环体中可使用c
16、ontinue语句,while 循环体中不允许出现continue 58、 以下程序段运行后,s的值为()(题目有错)int a33=3,2,1,3,2,1,3,2,1;int j, k, p=1;for (j=0;k2 ;i+)for( k=j ; k4 ;k+)59、 以下程序段运行后,的值是(D),60、以下程序段运行之后输出的结果是(B ) Char a=”country; Char b=”ganme”Strcpy(a,b)Printf(“%c”,a3);(输出下标为3的数组元素)A n B m C e D u61、 以下程序的运行结果是( C)int fun (int a44)int
17、 i ; for ( i=0 ;i=4 ;i+) printf(“%2d”,ai2); printf(“n”);main()Int a44=1,1,2,2,1,9,0,0,2,4,0,0,0,5,9,8;fun(a) A 2000 B 2008 C 2009 D 1905 62、 以下程序运行后sum的值是(C)Int k=0, sum=0;Int a34=1,2,3,4,5,6,7,8,9,10,11,12;for(; k3;k+);sum+=akk+1;A 18 B 19 C21 D 963、数组元素下标的数据类型为(B)、 A实型常量或实型表达式 B 整型常量,字符型常量,或整型表达式
18、C字符型常量 D 任何类型的表达式64、用数组名作为函数的实参时,错误的说法是(A)A 定义形参数组时,元素的个数必须与实参相同 B 可以使用数组名作为形参C 可以使用指针变量作为形参, D 实参传递给形参的值是数组的首地址65、 若有定义#define N 3+2, 则表达式N*2的值是(D)A 10 B 0 C 5 D 766、以下程序运行后表达式*(p+)的值为(D)Char a5=workChar *p=aA 存放0de 的地址 B 0 C 存放w的地址 D w67、以下程序运行后的变量ans的值为(A) Int a=1,2,3,b=3,2,1;Int *p=a,*q=b;Int k,
19、 ans=0;For(k=0;k3;k+)If(*(p+k)= =*(q+k) Ans=ans+*(p+k)*2;A 4 B 2 C 6 D 1268、定义结构体类型变量teach1,不正确的是()(没有答案) A struct Cstruct teacherint num; int num;teacher int age; teach1;B structint num; D struct teacher; Int age int num; teach1; int age;69若已定义int arr10,则不能引用arr数组元素的是(D ) arr10-1B arr1C arr0D arr7+
20、370自定义函数中若缺省函数值类型,则隐含的类型是(C)doubleB floatC intD long71若有以下程序段,则不能正确引用数组元素a12的是(D)Int (*p)3Int a3=1,2,3,4,5,6,7,8,9;p=a;A p12B *(*(a+1)+2)C (*(p+1)2D p1+272、C语言函数体是由(B)括起来的 A B C D ( )73、()为正确的叙述 A A+3和4等价 B G和G等价 C5/6和5.0/6.0等价 D int5.0/6和5/6等价74、 若定义int a= -5,b= -8 c= -12 则表达式a=b|bc的值为 A 变量j 的值 B 1
21、 C 0 D 变量i的值75、 若已定义int m=7则表达式k=m%2/4的值为( D) A5.75 B5.5 C 6.75 D 076、 下列叙述正确的是( ) A main函数必须位于文件的开头 B 每行只能写一条语句 C 程序必须包含输入语句 D 变量按所定义的类型存储数据77、 ( )正确的叙述是 A +3与4等价 B (int)5.06与56等价 C 56与5.06.0等价 D G与G等价 78、若已有定义的int a=1,b=2,t=3 则执行以下程序段后,变量a,b,t的值分别为( B )if(ab) t=b; b=a; a=t;A a=2,b=1,t=1 B a=2,b=1,
22、t=2 C a=2,b=1,t=3 D a=3,b=1,t=2 79、以下程序运行后,循环的次数为(D ) int i=8,a=0;for (;i8;i+)a+=i;A 8 B 1 C无限 D 080、 以下程序段运行后,xi的值为( ) int x5=5,4,3,2,1;x1=x3+x2+2-x3-1;A 6 B 1 C 0 D 5 81、 以下程序段运行后,表达式*(p+)的值为( ) char a5=work;char *p=a; A 存放w的地址 B w C存放o的地址 D o82、 下面程序的运行结果是( ) main() int a,b; int *p1=&a,*p2=&b,*t;
23、 a=10;b=20;t=p1;p1=p2;p2=t;intf(%d,%dn,a,b); A 20 10 B 10 20 C 20 20 D 10 10 83、下列什么是正确的字符常量( )A”c” B” Cm D”24m”84、能正确表达数学关系100=s=100)and (s=100)& (s300)C 100=s=100)& (s300)85、下列程序运算结果变量k为( B)Int a=3,b=2; Int k;K=(-a= =b+)?a:b+1A 0 B 2 C 1 D 386、不能对2维数组a进行初始化的是(A )A int a32=1,2,3,4,5,6B int a32=1,2,
24、3,4,5C int a32=1,2,3,4,5D int a2=1,2,3,4,5,687、以下结果为( ) char str32=a,b,c,d,e,fstr20=0printf(“%s”,str0)A ab B abcd0 C abcd0f D abcd88、下列结果( )#include F(m,n) m*nmain int x=5,y=3,a1,a2;a1=F(x+y,x-y) (相当于5+3*5-3)a2=F(x-y,x+y) (相当于5-3*5+3)printf(“%d%d”,a1,a2)A 16 ,16 B -7,17 C 17,-7 D 16,-1689、表达式xp+4的值(
25、 )(题目有错)Char a=”china”Char xp X=aA u B 存放u的地址 C a D存放a 的地址二编程题1、.打开程序4-1,完成其中fun()的函数,使其计算:(编程题) 1, (x0#include #include double fun(float x) /*/double y;if(x=0) y=1;else y=(26+fabs(x)/(3+sin(x);return y; /*/void main() float x; double y; printf(Please input a number: n); scanf(%f,&x); y = fun(x); pr
26、intf(fun(%.3f)=%.3fn,x,y); getch();2、(填空题)#include void main() /*/long p=1; /*/ int i=1; do p=p*i; i=i+1; while(/*/i=10 /*/); printf(np=%ldn, p); getch(); 3、(改错题)#include #include void main() int a,b,temp; scanf(%d,%d,&a,&b); /*/ if (ab) temp=a; a=b; b=temp; while(+ab) if(a%2 = 0) /*/ b+; /*/ contin
27、ue; printf( %d ,a); printf(n); getch();4、(填空题)#include #include void asc(int b, int n) int i, j, k, temp; for( i = 0; i n-1; i+ ) k = i; for( j=i+1; j n ; /*/j+ /*/) if( bj bk ) /*/k=j /*/; if( k != i ) temp = bk; bk= /*/bi /*/; bi = temp ; void main() int b = 12,25,8,32,23,15,37,4; int i,n = sizeof
28、(b)/sizeof(int); asc(b,n); for(i=0;in;i+) printf(%d ,bi); printf(n); getch();5、(编程题)#include #include double fun1(float x) /*/double y;if(x8) y=exp(2*x)+0.6; else if(x=8) y=x-2.5;else y=(cos(x)+3.8)/(2*x);return y;/*/void main() float x; double y; clrscr(); printf(Please input a number:n); scanf(%f,
29、&x); y = fun1(x); printf(fun1(%.2f)=%.2lfn,x,y); getch();6、(改错题)#include main() /*/ int c1,c5; /*/ int c1=1,c5; for(;c1=19;c1+) for(c5=1;c5=9;c5+) /*/ if c1*10+c5*50=200 /*/ if (c1*10+c5*50=200) printf(c1=%d,c5=%dn,c1,c5); getch();7、(填空题)#include void main() int max_val(int a4,int *row,int *col); in
30、t arr34=32,25,17,6,2,4,61,8,15,23,9,15; int i=0,j=0,max,*row,*col; row=&i; col=&j; max=max_val(/*/arr/*/,row,col); printf( Max value is %dn Row is %d,Col is %dn,max,*row,*col); getch();int max_val(int a4,int *row,int *col) int i,j,max; max=a00; *row=0; *col=0; for(i=0;i3;i+) for(j=0;jmax) /*/max=aij
31、; /*/ *row=i; *col=j; return(/*/max/*/);8、编程题#include #include char fun(float f) char code; /*/float c;c=(5.0/9)*(f-32);if(c=0&c=25&c35) code=O;else code=R; /*/ return code;void main() float f; char code; printf(nPlease input the Fahrenheit temperature: ); scanf(%f,&f); code=fun(f); printf(nTemperat
32、ure Code is %cn,code); getch();9、改错题#include #include main() int num1,num2,ans,flag; char op; clrscr(); printf(Please input an expression:); scanf(%d%c%d,&num1,&op,&num2); flag=0; /*/ switch(op) /*/ switch(op) case +: ans=num1+num2; break; case -: ans=num1-num2; break; case *: ans=num1*num2; break;
33、case /: ans=num1/num2; break; case %: ans=num1%num2; break; /*/ else: /*/ default: printf(Error!n); flag=1; if (!flag) printf(%d %c %d = %dn,num1,op,num2,ans); getch();10、填空题#include void main() int item,sa,sb; sa=0;sb=0; printf(Please input integer number, end with 0:n); scanf(%d,&item); while(/*/i
34、tem!=0/*/) if(item0) /*/sa+;/*/ else sb+; scanf(%d,&item); printf(Number of N0 or N0 integers are: %d, %dn,sa,sb); getch();11、填空题#include #include int f( float r,float x,/*/ float y /*/) int in_out; in_out =sqrt(x*x+y*y) /*/ r /*/; return in_out; void main() float r=-1,x,y; int in_out; while(r0):n); scanf(%f, &r); printf(Please input the dot(x,y):n); scanf(%f%f,&x,&y); in_out = f(r,x,y); if(in_out = 0) printf(out off the Circle!n);