1、1 数据类型与表达式1.1 基本概念1、一个语言程序总是从( )。A、主过程开始执行 B、主函数开始执行C、子程序开始执行 D、主程序开始执行【答案】B2、C语言程序从main()函数开始执行,所以这个函数要写在( )。A、 程序文件的开始 B、程序文件的最后C、 它所调用的函数的前面 D、程序文件的任何位置【答案】D3、下列关于C语言的叙述错误的是( )。A、大写字母和小写字母的意义相同 B、不同类型的变量可以在一个表达式中C、在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型D、同一个运算符号在不同的场合可以有不同的含义【答案】A4、在C语言中,错误的int类型的常数是( )。A、
2、32768 B、0 C、037 D、0xAF【答案】A5、在语言中,整数-8在内存中的存储形式是( )。A、1111 1111 1111 1000 B、1000 0000 0000 1000C、0000 0000 0000 1000 D、1111 1111 1111 0111【答案】A6、语言中字符型(char)数据在内存中的存储形式是( )。A、原码 B、补码 C、反码 D、ASCII码【答案】D7、已知a、b、c为int类型变量,若有输入语句:scanf(a=%db=%dc=%d,&a,&b,&c);为使a值为10,b值为20,c值为30,从键盘输入数据的正确形式应当是( )。A、1020
3、30 B、a=10b=20c=30C、102030 D、a=10b=20c=30【答案】B8、以下能正确定义整型变量x、y和z并为其赋初值5的语句是( )。A、int x=y=z=5; B、int x,y,z=5;C、int x=5,y=5,z=5; D、x=5,y=5,z=5;【答案】C9、已知ch是字符型变量,则不正确的赋值语句是( )。A、ch=5+9; B、ch=0; C、ch=7+9;D、ch=a+b;【答案】D10、设x,y是float型变量,则不正确的赋值语句是( )。A、+x; B、y=int(5); C、x*=y+1; D、x=y=0;【答案】B11、若a为int类型变量,则
4、执行以下程序段后a的值为( )。a=5;a*=a/=a+;A、2 B、1 C、40 D、3【答案】A12、若a和b均为int型变量,则执行以下程序断后x的输出是( )。x=15;y=15;printf(%dn,x%=(y%=2);A、0 B、1 C、6 D、12【答案】A13、设a、b、c、d均是int类型变量,为了使以下程序段的输出为:1234+123+12+1,正确的输入形式应当是( )。scanf(%4d+%3d+%2d+%1d,&a,&b,&c,&d);printf(%4d+%3d+%2d+%1d,a, b, c, d);A、1234123121 B、1234123412341234C
5、、1234+1234+1234+1234 D、1234+123+12+1【答案】D14、设c1、c2均是char类型变量,则以下不正确的函数调用是( )。A、scanf(c1=%cc2=%c,&c1,&c2); B、getchar( )C、putchar(c2); D、putchar(c1,c2)【答案】D15、逻辑运算符两侧运算对象的数据( )。A、只能是0或1 B、只能是0或非0正数C、只能是整型或字符型数据 D、可以是任何类型的数据【答案】D16、判断char型变量c1是否为大写字母的正确表达式是( )。A、A=c1=A)&(c1=A)&(c1=Z) D、(A=c1)【答案】C17、设i
6、、j、和k是int型变量,且i=3,j=4,k=5,则以下值为0的表达式是( )。A、i&j B、i=jC、i | j + k & j-k D、!(i=A&ch=Z)?(ch+32):ch的值是( )。A、Z B、A C、a D、z【答案】C19、若希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是( )。A、num%2=1 B、!(num%2=0)C、!(num%2) D、num%2【答案】C20、已知 long i=32768;执行语句printf(%d,i);屏幕显示( )。A、-1 B、-32768 C、1 D、32768
7、【答案】B1.2 阅读程序题21、下面程序的输出结果是( )。#include main( ) int x=10; int x=20;printf (%d,, x);printf(%dn, x);A、10,20 B、20,10 C、10,10 D、20,20【答案】B22、若a、b、c均为int型变量,则执行以下程序段后的输出结果为( )。b=(a=10,a+5,c=10);printf(a=%d,b=%d,c=%dn,a,b,c);c=(a=10,b=5,a+b);printf(a=%d,b=%d,c=%dn,a,b,c);A、a=10,b=15,c=10 B、a=10,b=10,c=10
8、a=10,b=5,c=10 a=10,b=5,c=10C、a=10,b=10,c=10 D、a=10,b=10,c=10 a=10,b=5,c=15 a=10,b=5,c=5【答案】C23、以下程序的输出结果是( ) 。 main( ) int x=10, y=10; printf(%d %dn, x, y);A、10 10B、9 9C、9 10D、10 9【答案】D24、以下程序的输出结果是( )。main() int n=1; printf(%d %d %dn,n,n+,n-);A、 1 1 1B、 1 0 1C、 1 1 0 D、 1 2 1【答案】B25、以下程序的输出结果是( )。m
9、ain() int x=0x02ff,y=0x0ff00;printf(%dn,(x&y)4|0x005f);A、 127B、 255C、 128D、 1 【答案】A26、下面程序的输出结果是( )。main() int a=111; a=a00; printf(%d,%on,a,a);A、111,157B、0,0C、20,24D、 7,7【答案】A27、以下程序的输出结果是( ) 。main( ) float a;a=1/100000000;printf(%g,a);A、0.00000e+00B、0.0C、1.00000e-07D、 0【答案】D1.3 程序填空题28、下面程序的功能是不用第
10、三个变量,实现两个数的对调操作。#include main() int a,b;scanf(%d%d,&a,&b);printf(a=%d,b=%dn,a,b);a= ; b= ; a= ;printf(a=%d,b=%dn,a,b); 【答案】 a+b a-b a-b2 控制结构2.1 基本概念1、以下正确的if语句是( )。A、if (n0) printf(%f,n) printf(%f,-n);B、if (n0) n=n+m; printf(%f,n); else printf(%f,-n); C、if (n0) n=n+m; printf(%f,n); ; else printf(%f
11、,-n);D、if (n0) n=n+m; printf(%f,n) ; else printf(%f,-n);【答案】B2、以下程序( )。main( ) int x1=3, x2=0, x3=0; if (x1=x2+x3)printf(* * * *); else printf(# # # #);A、输出:* * * * B、输出:# # # #C、存在语法错误 D、无输出结果【答案】B3、为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与( )。A、缩排位置相同的if配对 B、其之前最近且不带else的if配对C、其之前最近的if配对 D、第一个if配对
12、【答案】B4、以下关于switch语句和break语句的描述中正确的是( )。A、在switch语句中必须使用break语句B、break语句只能用于switch语句体中C、break语句只能用于循环语句中D、在switch语句中使用break语句或continue语句的作用相同【答案】D5、若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是( )。A、A%2=1 B、!(A%2=0) C、!(A%2) D、A%2【答案】C6、已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是( )。if(xy)z=x;x=y;y=
13、z; A、x=10,y=20,z=30 B、x=20,y=30,z=30 C、x=20,y=30,z=10 D、x=20,y=30,z=20【答案】B7、设有程序段( )。int x=10; while (x=0)x=x-1;A、while循环执行10次 B、循环是无限循环 C、循环体语句一次也不执行 D、循环体语句只执行一次【答案】C8、语句while (!y)中的表达式 !y 等价于( )。A、y=0 B、y!=1 C、y!=0 D、y=1【答案】A9、以下关于do-while循环不正确的描述是( )。A、d0-while的循环体至少执行一次B、do-while循环由do开始,用while
14、结束,在while (表达式)后面不能写分号C、在do-while循环体中,一定要有能使while后面表达式的值变为零(假)的操作D、do-while的循环体可以是复合语句【答案】B10、设x、y均是int类型变量,且x值为100,则关于以下for循环的正确判断是( )。for (y=100; x!=y; +x,y+)printf (*n);A、循环体只执行一次B、是无限循环C、循环体一次都不执行D、for语句中存在语法错误【答案】C11、以下程序段中的do-while循环( )。m=-1;do m=m*m;while(!m);A、是死循环 B、执行二次 C、执行一次 D、有语法错误【答案】C
15、12、以下关于for循环的正确描述是( )。A、for循环只能用于循环次数已经确定的情况B、for循环是先执行循环体语句,后判断表达式C、在for循环中,不能用break语句跳出循环体D、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来【答案】D13、语句for (表达式1; ; 表达式3)等价于( )。A、for (表达式1; 0 ; 表达式3) B、for (表达式1; 1 ; 表达式3)C、for (表达式1; 表达式1; 表达式3) D、for (表达式1; 表达式3; 表达式3)【答案】B14、若k为整型变量,则以下for循环的执行次数是( )。for (k=2; k
16、=0; ) printf(%d,k-);A、无限次 B、0次 C、1次 D、2次【答案】B15、以下程序段的执行结果是( )。int x=-3;do printf(%dn, x+);while(!x);A、-3 B、-2 C、-1 D、陷入死循环【答案】A16、以下程序段中是死循环的是( )。A、int n=1; B、int n=1;while (!n) do n-;n+; while(n);C、int n=1; D、for (n=5; n1; ) ; do n+; while(n);【答案】C17、以下能正确计算12310的程序段是( )。A、do B、do k=1; n=1; k=1; n
17、=0; n=n*k; n=n*k; k+; k+; while(k=10); while(k=10);C、k=1; n=1; D、k=1; n=0; do do n=n*k; n=n*k; k+; k+; while(k=10); while(k=10);【答案】C18、若有以下程序段:for (m=1; m=100; m+) scanf(%d, &y); if (y0) continue; printf(%3d, m); 正确的描述是( )。A、)当y=0时什么也不输出C、printf函数永远也不执行 D、)最多允许输出100个非负整数【答案】D19、以下程序段等价于( )。for (k=1
18、00; k=200; k+) if (k%3=0) continue; printf(%4d, k); A、for (k=100; (k%3)&k=200; k+) printf(%4d, k);B、for (k=100; (k%3)|k=200; k+) printf(%4d, k);C、for (k=100; k=200; k+) if (k%3!=0) printf(%4d, k);D、for (k=100; k 3); printf(%dn,a);A、 1B、2C、3D、4 【答案】B21、下面程序的输出结果是( )。main() char s12= a book;printf(%.4
19、s,s);A、 a book!B、a book!C、a boD、格式描述错误,输出不确定【答案】C22、下面程序的输出结果是( )。main() int a,b;scanf(%2d%3d,&a,&b);printf(a=%d b=%dn,a,b);A、a=12 b=34B、a=123 b=45C、a=12 b=345D、语句错误【答案】C23、以下程序的输出结果是( )。main() int a=0,b=1,c=0,d=20;if(a) d=d-10; else if(!b)if(!c) d=15;else d=25;printf(d=%dn,d);A、d=10B、d=15C、 d=20D、
20、d=25【答案】C24、下面程序的输出结果为( )。main( ) int a=1,b=0;switch(a) case 1: switch (b) case 0: printf(*0*); break;case 1: printf(*1*); break;case 2: printf(*2*); break;A、*0* B、 *0*2* C、 *0*1*2* D、 有语法错误【答案】B25、若执行下述程序时从键盘输入3 4,则输出结果是( )。#include main( ) int a,b,s;scanf(%d%d,&a,&b); s=a; if (ab) s=b; s*=s; print
21、f(%dn,s*s); A、186 B、256 C、 324 D、400【答案】B26、下面程序的输出是( )。main( ) int x=1,y=0,a=0,b=0;switch(x) case 1: switch(y) case 0: a+;break;case 1: b+;break;case 2: a+;b+;break;printf(a=%d,b=%dn,a,b);A、 a=2,b=1 B、a=1,b=1 C、a=1,b=0 D、a=2,b=2【答案】A27、下面程序的运行结果是( )。main( ) int m=0; while (m=2) m+; printf(%d, m); p
22、rintf(n); A、1 B、1 2 C、1 2 3 D、1 2 3 4【答案】C28、下面程序的输出结果是( )。main() int x,i;for(i=1;i=100;i+) x=i;if(+x%2=0)if(+x%3=0)if(+x%7=0)printf(%d ,x);A、39 81 B、42 84 C、26 68 D、28 70【答案】C29、下面程序的输出结果是( )。main( ) int k=0;char c=A;do switch(c+) case A: k+;break;case B: k-;case C: k+=2;break;case D: k=k%2;contiue
23、;case E: k=k+10;break;default: k=k/3;k+;while(cC) ;printf(k=%dn,k);A、k=1 B、k=2 C、k=3 D、k=4【答案】D30、在执行以下程序时,为了使输出结果为t=4,则给a和b输入的值应满足的条件是( )。#include main( ) int s,t,a,b;scanf(%d,d,&a,&b); s=1;t=1; if (a0) s=s+1; if (ab) t=s+t; else if (a=b) t=5; else t=2*s; printf(t=%dn,t); A、 ab B、 ab0 C、 0aab【答案】C3
24、1、从键盘上输入446755时,下面程序的输出是( )。#include main() int c; while (c=getchar()!=n) switch(c -2) case 0: case 1: putchar(c+4); case 2: putchar(c+4);break; case 3: putchar(c+3); default: putchar(c+2);break; printf(n);A、 888988 B、668966 C、88898787 D、66898787【答案】C32、假定从键盘上输入3.6,2.4,下面程序的输出是( )。#include main() fl
25、oat x,y,z; scanf (%f,%f,&x,&y); z=x/y; while (1) if (fabs (z) 1.0) x = y; y = z; z = x / y; else break; printf (%fn,y); A、1.500000 B、1.600000 C、2.000000 D、2.400000【答案】B33、下面程序的输出结果是( )。main() int i,j,k=10; for (i=0;i2;i+) k+; int k=0; for (j=0;jamax) amax=x; if( ) amin=x; scanf(%f,&x); printf(namax=
26、%fnamin=%fn,amax,amin);【答案】 x=0 xamin35、下面程序的功能是输出1到100之间每位数的乘积大于每位数的和的数。例如数字26,数位上数字的乘积12大于数字之和8。main() int n,k=1,s=0,m; for (n=1;ns) printf (%d,n); 【答案】 m = n m0 m = m/1036、下面程序的功能是统计用0至9之间的不同的数字组成的三位数的个数。main() int i,j,k,count=0; for (i=1;i=9;i+) for (j=0;j=9;j+) if ( ) continue; else for (k=0;k=
27、9;k+) if ( ) count+; printf(%d,count); 【答案】 i= =j k!=i & k!= j37、下面程序的功能是输出100以内的个位数为6、且能被3整除的所有数。main() int i , j; for (i=0; ;i+) j = i*10+6; if( ) countinue; printf(%d,j); 【答案】 i=9 j%3!=038、下面程序的功能是计算100至1000之间有多少个数其各位数字之和是5,请填空。main( ) int i, s, k, count=0; for (i=100; i=1000; i+) s=0; k=i; while
28、 ( ) s=s+k%10; k= ; if (s!=5) ;count+; printf(%d, count);【答案】 k!=0 k/10 continue39、以下程序的功能是求出下面算式中的X、Y、Z的值,请填空。算式: X Y Z + Y Z Z 5 3 2main( ) int x, y, z, k, result=532; for (x=1; x10; x+) for (y=1; y10; y+)for (z=; ; z+) k=()+(100*y+10*z+z); if (k=result) printf(X=%d, Y=%d, Z=%dn,x,y,z);【答案】 0 z10
29、100*x+10*y+z40、下面程序的功能是求1000以内的所有完全数,请填空。(说明:一个数如果恰好等于它的因子之和(除自身外),则称该数为完全数,例如:6=1+2+3,6为完全数。)main( ) int a, i, m; for (z=1; a=1000; a+) for (; i=a/2; i+)if (!(a%i) ;if (m=a) printf(%4d, a); 【答案】 i=1,m=0 m+=i3 函数3.1 基本概念1、以下正确的函数说明是( )。A、int fun(int a, b)B、float fun(int a; int b)C、double fun( )D、int
30、 fun(char a )【答案】C2、以下正确的函数形式是( )。A、double fun1(int x, int y)B、fun1(int x, y) z=x+y; return z; int z; return z; C、fun1(x, y) D、double fun1(int x, int y) int x, y; double z; double z; z=x+y; z=x+y; return z; return z; 【答案】D3、以下正确的说法是( )。A、实参和与其对应的形参各占用独立的存储单元B、实参和与其对应的形参共占用一个存储单元C、只有当实参和与其对应的形参同名时才共用
31、存储单元D、形参是虚拟的,不占用存储单元【答案】A4、以下正确的描述是( )。A、定义函数时,形参的类型说明可以放在函数体内B、return后面的值不能为表达式C、如果函数值的类型与返回值类型不一致,以函数值类型为准D、如果实参与形参的类型不一致,以实参类型为准【答案】C5、C语言规定:简单变量做实参时,它和对应形参之间的数据传递方式是( )。A、地址传递 B、单向值传递C、由实参传给形参,再由形参传回实参D、由用户指定传递方式【答案】B6、以下程序存在语法性错误,关于错误原因的正确说法是( )。main( ) int A=5, b; void p_ch( ); b=p_ch( A ); A、语句void p_ch( );有错,它是函数调用语句,不能使用void说明B、变量名不能使用大写字母C、函数说明和函数调用语句之间有矛盾D、函数名中不能使用下划线【答案】C7、C语言允许函数值类型的缺省定义,此时该函数值隐含的类型是( )。
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。