C语言第一章习题带答案(共42页).doc
精选优质文档-倾情为你奉上练习1-1答案选择题1下列4组字符串中都可以用作C语言程序中的标识符的是( D )。Aprint 3d oodbBIm one_half start$itCPxq my>book line#Dstr_1 Cpp into2下面的说法正确的是( C )。AC程序由符号构成BC程序由标识符构成CC程序由函数构成DC程序由C语句构成3与十进制数35相等的二进制数是( A )。AB01001CD4与47值相等的十六进制数是( A )。A2FB215C32FD1155(01101)2 + ()2的值是( B )。A()2B(3A)16C(2A)16D576将15向左移动2位后的值是( D )。A(3C)16B()2C(60)10D都正确7将250与5进行按位与的结果是( A )。A0B1C(FF)16D(F0)168将(AF)16与(78)16进行按位异或的结果是( A )。A(D7)16B(28)16C(D8)16D(27)169将(717)8按位取反的结果是( B )。A()2B(060)8C(60)10D都不正确练习2-1答案选择题1C语言中的简单数据类型包括( B )。A整型、实型、逻辑型B整型、实型、字符型C整型、字符型、逻辑型D整型、实型、逻辑型、字符型2在C语言中,错误的int类型的常数是( A )。A32768B0C037D0Xaf3下列常数中不能作为C的常量的是( D )。A0x45B2.5e-2C3e2D05824设int类型的数据长度为2个字节,则unsigned int类型数据的取值范围是( B )。A0至255B065535C-3276832767D-2562555下面4个选项中,均是合法转义字符的选项是( A )。A''','','n'B'','017',''C'018','f','xab'D'0,'101','x1f6在C语言中,数字029是一个( D )。A八进制数B十六进制数C.十进制数D非法数7下列可以正确表示字符型常数的是( B )。A"a"B't'C"n"D2978以下( C )是错误的转义字符。A''B'''C'81'D'0'9C语言中整数-8在内存中的存储形式是( A )。A1111 1111 1111 1000B0 1000C0 1000D1111 1111 1111 011110将字符g赋给字符变量c,正确的表达式是( C )。Ac="g"Bc=101Cc='147'Dc='0147'11字符串"22a,0n"的长度是( C )。A8B7C6D512为求出s=10!的值,则变量s的类型应当为( D )。AintBunsignedClongD以上三种类型均可13已知:unsigned int x=65535;,则执行以下语句输出是( D )。printf("%dn", x);A65535B1C无定值D-114下面4个选项中,均是合法整型常量的选项是( A )。A160,-0xffff,011B-0xcdf,01ª,0xeC-01,986,012,0668D-0x48a,2e5,0x15下面4个选项中,均是不合法的整型常量的选项是( D )。A-0f1,-0xffff,0011B-0Xcdf,01a,0xeC-018,999,5e2D-0x48eg,-068,03f16下面4个选项中,均是合法浮点数的选项是( B )。A+1e+1,5e-9.4,03e2B-.60,12e-4,-8e5C123e,1.2e-.4,+2e-1D-e3,.8e-4,5.e-0 练习2-2答案选择题1已知:char a; int b; float c; double d;,执行语句c=a+b+c+d;后,变量c的数据类型是( C )。AintBcharCfloatDdouble2已知int j, i=1;,执行语句j=-i+;后,j的值是( C )。A1B2C-1D-23已知int i, a;,执行语句i=(a=2*3, a*5), a+6;后,变量i的值是( C )。A6B12C30D364已知int i=5;,执行语句i+=+i;,i的值是( C )。A10B11C12DA、B、C答案都不对5已知:float x=1, y;,则表达式y=+x*+x的结果为( B )。A9B6C1D表达式是错误的6已知:int y; float x=-3;,执行语句:y=x%2;,则变量y的结果是( D )。A. 1B-1C0D语句本身是错误的7已知:char w; int x; float y; double z;,则表达式w*x+z-y结果的类型是( D )。AfloatBcharCintDdouble8已知:int x=10, y=3, z;,则下列语句的输出结果是( D )。printf("%dn", z=(x%y, x/y);A1B0C4D39已知:int i=6, j;,则执行语句j=(+i)+(i+);后的j的值是( B )。A4B14C13D1510已知:int x=1, y=-1;,则语句printf("%dn", (x-&+y);的输出结果是( B )。A1B0C-1D211设a=2,b=3,计算表达式c=b*=a-1后,变量c的值是( B )。A5B3C2D412若定义了int x;,则将x强制转化成双精度类型应该写成( A )。A(double)x Bx(double)Cdouble(x)D(x)double13下述程序的输出是( A )。main()int x=023;printf("%f", 2.5+1*7%2/4); A2.B2.C3.D3.14若有定义:int a=7; float x=2.5, y=4.7;,则表达式x+a%3*(int)(x+y)%2/4的值是( A )。A2.B2.C3.D0.15设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第3位进行四舍五入运算的表达式是( B )。An=(n*100+0.5)/100.0Bm=n*100+0.5, n=m/100.0Cn=n*100+0.5/100.0Dn=(n/100+0.5)*100.016已知ch是字符型变量,下面不正确的赋值语句是( A )。Ach='a+b'Bch='0'Cch='7'+'9'Dch=5+9;练习3-1答案一、选择题1在C语言库函数中,可以输出double型变量x值的函数是( D )。AgetcharBscanfCputcharDprintf2执行语句:printf("The program's name is c:toolsbook.txt");后输出是( D )。AThe program's name is c:tools book.txtBThe program's name is c:tools book.txtCThe program's name is c:tools book.txtDThe program's name is c:toolook.txt3以下程序的输出结果是( D )。(注:表示空格)main()printf("n*s1=%15s*", "chinabeijing");printf("n*s2=%-5s*", "chi");A*s1=chinabeijing*B*s1=chinabeijing *s2=*chi* *s2=chi*C*s1=*chinabeijing*D*s1=*chinabeijing* *s2=chi* *s2=chi*4选择程序的运行结果,是( B )、是( B )、是( D )、是( C )。#include<stdio.h>main()int a=-10, b=-3;printf("%dn", a%b);/*输出*/printf("%dn", a/b*b);/*输出*/printf("%dn", -a%b);/*输出*/printf("%dn", a-=b+1);/*输出*/ A-2B-1C0D1 A-10B-9C-8D0 A-2B-1C0D1 A-10B-9C-8D-75以下C程序正确的运行结果是( D )。(注:表示空格)main()int y=2456;printf("y=%3on", y);printf("y=%8on", y);printf("y=%#8on", y);Ay=2456By=4630 y=2456 y=4630 y=#2456 y=#4630Cy=2456Dy=4630 y=2456 y=4630 y=02456 y=04630二、填空题6以下程序的输出结果为( i:dec=-4, otc=, hex=fffc, unsigned=65532 )。main()short i;i=-4;printf("ni:dec=%d, otc=%o, hex=%x, unsigned=%un", i, i, i, i);7以下程序的输出结果为( c:dec=120, oct=170, hex=78, ASCII=x )。main()char c='x'printf("c:dec=%d, oct=%o, hex=%x, ASCII=%cn", c, c, c, c);8已有定义int d=-2;,执行以下语句后的输出结果是:( *d(1)=-2*d(2)=-2*d(3)=-2* *d(4)=*d(5)=*d(6)=* *d(4)=fffe*d(5)=fffe*d(6)=ffffe* )。(注:表示空格)printf("*d(1)=%d*d(2)=%3d*d(3)=%-3d*n", d, d, d, d);printf("*d(4)=%o*d(5)=%7o*d(6)=%-7o*n", d, d, d, d);printf("*d(4)=%x*d(5)=%6x*d(6)=%-6x*n", d, d, d, d);9以下程序的输出结果是: ( a=374 a=0374 a=fc a=0xfc )。#include<stdio.h>main()int a=252;printf("a=%o a=%#on", a, a);printf("a=%x a=%#xn", a, a);练习3-2答案选择题1已知:int x, y, z, w;,为使以下语句的输出为:1234+123+12+1,正确的输入形式应当为( C )。scanf("%4d-%3d-%2d-%1d", &x, &y, &z, &w);printf("%4d+%3d+%2d+%1dn", x, y, z, w);AB1234 123 12 1C1234-123-12-1D1234+123+12+12已知:int x; float y;,所用的scanf调用语句格式为:scanf("x=%d, y=%f", &x, &y);为了将数据10和66.6分别赋给x和y,正确的输入应当使( A )。Ax=10, y=66.6<回车>B10,66.6<回车>C10<回车>66.6<回车>Dx=10<回车>y=66.6<回车>3已知:int x, y; double z;,以下语句中错误的函数调用是( D )。Ascanf("%d,%x,%1e", &x, &y, &z);Bscanf("%2d*%d%1f", &x, &y, &z);Cscanf("%x%*d%o", &x, &y);Dscanf("%x%o%6.2f", &x, &y, &z);4已有如下定义和输入语句,若要求a1、a2、c1、c2的值分别为10、20、A和B,当从第一列开始输入数据时,正确的数据输入方式是( AC )。(注:表示空格,<CR>表示回车)int a1, a2; char c1, c2;scanf("%d%c%d%c", &a1, &c1, &a2, &c2);A10A20B<CR>B10A20B<CR>C10A20B<CR>D10A20B<CR>5已有定义int x; float y;,且执行scanf("%3d%f", &x, &y);语句时,输入数据12345678<CR>,则x的值为( B ),y的值为( B )。(注:表示空格) A12345B123C45D345 A无定义B45.C678.D123.6阅读以下程序,当输入数据的形式为:25,13,10<CR>,正确的输出结果为( D )。main()int x, y, z;scanf("%d%d%d", &x, &y, &z);printf("x+y+z=%dn", x+y+z);Ax+y+z=48Bx+y+z=35Cx+z=35D不确定值7根据题目中已经给出的数据的输入和输出形式,程序中输入输出语句的正确内容是( B )。main()int x;float y;printf("enter x, y: ");输入语句输出语句输入形式:enter x, y: 2<CR>3.4输出形式:x+y=5.40Ascanf("%d,%f", &x, &y);Bscanf("%d%f", &x, &y); printf("nx+y=%4.2f", x+y); printf("nx+y=%4.2f", x+y);Cscanf("%d%f", &x, &y);Dscanf("%d%3.1f", &x, &y); printf("nx+y=%6.1f", x+y); printf("nx+y=%4.2f", x+y);练习4-1答案一、选择题1已知:char c='A' int i=1, j;,执行语句j=!c&&i+;,则i和j的值是( B )。A1,1B1,0C2,1D2,02已知:int x=1, y=2, z;,则执行z=x>y?+x:+y;,则z的值为( C )。A1B2C3D43已知:int a=4, b=5, c;,则执行表达式c=a=a>b后变量a的值为( A )。A0B1C4D54已知:char ch='A',则表达式ch=(ch>='A'&&ch<='Z')?(ch+32):ch;的值是( B )。A'A'B'a'C'Z'D'z'5若w=1, x=2, y=3, z=4;,则条件表达式w>x?w:y<z?y:z的结果为( B )。A4B3C2D16已知:int w=3, x=10, z=7;,则执行下面语句后的结果为( C )。printf("%d",x>10?x+100:x-10);printf("%d",w+|z+);printf("%d",!w>z);printf("%d",w&&z);A0111B1111C0101D01007已知:a=b=c=1且a、b、c均为int型变量,执行以下语句:+a|+b&&+c;则变量a值为( C ),b值为( A )。 A不正确B0C2D1 A1B2C不正确D08执行下面语句后x的值为( D )。int a=14, b=15, x;char c='A'x=(a&b)&&(c<'a');ATRUEBFALSEC0D19要判断char型变量m是否是数字,可以使用下列表达式( B )。A0<=m&&m<=9B'0'<=m&&m<='9'C"0"<=m&&m<="9"D前面三个答案均是错误的10能正确表示“当x取值在1.10和200.210范围内为真,否则为假”的表达式是( C )。A(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)B(x>=1)|(x<=10)|(x>=200)|(x<=210)C(x>=1)&&(x<=10)|(x>=200)&&(x<=210)D(x>=1)|(x<=10)&&(x>=200)|(x<=210)11设x、y和z是int型变量,且x=3, y=4, z=5,则下面表达式中值为0的是( D )。A'x'&&'y'Bx<=yCx|y+z&&y-zD!(x<y)&&!z|1)12已知x=43, ch='A', y=0;,则表达式x>=y&&ch<'B'&&!y的值是( C )。A0B语法错C1D“假”13判断char型变量c1是否为小写字母的正确表达式为( D )。A'a'<=c1<='z'B(c1>=a)&&(c1<=z)C('a'>=c1)|('z'<=c1)D(c1>='a')&&(c1<='z')二、读程序、写结果14下面程序的运行结果:( 17 )、( 102 )、( 9 )、( 127 )、( 00-1 )。#include <stdio.h>main()int i=16, j, x=6, y, z;j=i+1; printf("%dn", j);/*输出*/x*=i=j; printf("%dn", x);/*输出*/x=1; y=2; z=3;x+=y+=z;printf("%dn", z+=x>y?x+:y+);/*输出*/x=0x02ff; y=0xff00;printf("%dn", (x&y)>>4|0x005f);/*输出*/x=y=z=-1;+x|+y&&+z;printf("%d%d%dn", x, y, z);/* */专心-专注-专业练习4-2答案一、选择题1下面程序的输出是( A )。#include <stdio.h>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);Aa=2, b=1Ba=1, b=1Ca=1, b=0Da=2, b=22若有说明:int x ,y;,不能实现以下函数关系的程序段是( B )。Aif (x<0) y=-1;By=-1;Cy=0;Dif (x>=0) else if (x=0) y=0; if (x!=0) if (x>=0) if (x>0) y=1; else y=1; if (x>0) y=1; if (x>0) y=1; else y=0; else y=0; else y=-1; else y=-1;3已知:int x, a, b;,下列选项中错误的if语句是( B )。Aif (a=b) x+;Bif (a=<b) x+;Cif (a-b) x+;Dif (x) x+;4若int i=10;,执行下列程序后,变量i的正确结果是( D )。switch (i)case 9: i+=1;case 10:i+=1;case 11:i+=1;default:i+=1;A10B11C12D135设有说明语句:int a=1, b=0;,则执行以下语句后输出为( B )。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有语法错误6阅读下列程序,其运行结果是( A )。#include <stdio.h>main()char c='A'if ('0'<=c<='39') printf("YES");else printf("NO");AYESBNOCYESNOD语句错误7下列程序的运行结果为( C )。#include <stdio.h>main()int a=2, b=-1, c=2;if (a<b)if (b<0) c=0;else c+=1;printf("%dn", c);A0B1C2D38阅读程序,其运行结果是( C )。#include <stdio.h>main()int a=-1, b=1, k;if (+a<0)&&(b-<=0) printf("%d %dn", a, b);else printf("%d %dn", b, a);A-1 1B0 1C1 0D0 09选择运行结果。#include <stdio.h>main()char ch;ch=getch();switch (ch)case 65: printf("%c", 'A');case 66: printf("%c", 'B');default:printf("%sn", "other");如程序可以正常运行,当从键盘输入字母A时,输出结果为( B )。AABABotherCAotherD编译错误,无法运行10当a=1, b=3, c=5, d=4时,执行完成下面一段程序后x的值是( B )。if (a<b)if (c<d) x=1;elseif (a<c)if (b<d) x=2;else x=3;else x=6;else x=7;A1B2C3D6二、填空题11以下程序的输出结果是( -1 )。main()int a=100, x=10, y=20, ok1=5, ok2=0;if (x<y)if (y!=10)if (!ok1) a=1;else if (ok2) a=10;a=-1;printf("%dn",a);12阅读以下程序:main()int t, h, m;scanf("%d", &t);h=(t/100)%12;if (h=0) h=12;printf("%d:", h);m=t%100;if (m<10) printf("0");printf("%d",m);if (t<1200|t=2400) printf("AM");else printf("PM");若运行时输入:1605<CR>,程序的运行结果是( 4:05PM )。13若运行时输入:3 5/<CR>,则以下程序的运行结果是( 0. )。main()float x, y; char o; double r;scanf("%f%f%c", &x, &y, &o);switch (o)case '+': r=x+y; break;case '-': r=x-y; break;case '*': r=x*y; break;case '/': r=x/y; break;printf("%f", r);练习4-3答案一、选择题1 以下不是死循环的语句为( D )。Afor ( ; ; x+=i)Bwhile (1) x+; Cfor (i=10; ; i-) sum+=i;Dfor (; (c=getchar()!='n' ) printf("%c", c);2执行语句for (i=0; i+<3; );后,变量i的值为( C )。A2B3C4D53下面的for语句( C )。for (x=0, y=0; (y!=123)&&(x<4); x+);A是无限循环B循环次数不定C循环执行4次D循环执行3次4与语句while (!x)等价的语句是( A )。Awhile (x=0)Bwhile (x!=0)Cwhile (x!=1)Dwhile (x)5定义int i=1;,执行语句while (i+<5);后,i的值为( D )。A3B4C5D66若a=1, b=10为int型变量,则执行以下语句后b的值为( D ),a的值为( B )。dob-=a;a+; while(b-<0); A9B2C1D8 A4B2C1D37若int a=5;,则执行以下语句后打印的结果为( A )。doprintf("%2dn",a-); while(!a);A5B不打印任何内容C4D陷入死循环8若 int x;,且有下面的程序片段,则输出结果为( D )。for (x=3; x<6; x+) printf(x%2)?"*%d":"#%dn", x);A*3B#3C#3D*3#4 #4 *3 *4#5 *5 *5 #59等比数列的第一项a=1,公比q=2,下面程序的功能是求满足前n项和小于100的最大n,请选择填空。( B ),( D )。#include <stdio.h>main()int a, q, n, sum;a=1; q=2; n=sum=0;do;+n;a*=q; while (sum<100);printf("%dn",n);Asum+Bsum+=aCsum*=aDa+=sumAn=n-2Bn=nCn+Dn-=1二、读程序,写结果10下列程序的运行结果为:i=( 5 ),j=( 4 ),k=( 6 )。#include <stdio.h>main()int a=10, b=5, c=5, d=5;int i=0, j=0, k=0;for (; a>b; +b) i+;while (a>+c) j+;do k+;while (a>d+);printf("%d,%d,%dn",i,j,k);11下面过程的运行结果:是( 8 ),是( 6 )。#include <stdio.h>main()int i, j;for (i=0, j=10; i<j; i+=2, j-);printf("%dn", i );/*输出*/printf("%dn", j);/*输出*/12下面程序的运行结果是( 15 )。#include <stdio.h>main()int k, j, m;for (k=5; k>=1; k-)m=0;for (j=k; j<=5; j+) m=m+k*j;printf("%dn",m);练习4-4答案读程序,写结果1下面程序的运行结果是( 0,1,2,5 )。#include <stdio.h>main()int i=0, j=0, k=0, m;for (m=0; m<4; m+)switch (m)case 0: i=m+;case 1: j=m+;case 2: k=m+;case 3: m+;printf("n%d,%d,%d,%d", i, j, k, m);2下面程序的运行结果是( 2 5 8 11 14 )。#include <stdio.h>main()int i=1;while (i<=15)if (+i%3!=2) continue;else printf("%d ",i);printf("n");3若运行以下程序时,从键盘输入Adescriptor<CR>(<CR>表示回车),则下面程序的运行结果是( v0=12,v1=4,v2=12 )。#include <stdio.h>main()char c;int v0=0, v1=0, v2=0;doswitch (c=getchar()case 'a': case'A':case 'e': case'E':case 'i': case'I':case 'o': case'O':case 'u': case'U': v1+=1;default: v0+=1; v2+=1; while (c!='n');printf("v0=%d,v1=%d,v2=%dn", v0, v1, v2);4下面程序段的输出结果是( 死循环 )。x=3;doy=x-;if (!y)printf("*");continue;printf("#"); while (1<=x<=2);5下面程序的运行结果是( x=8 )。#include <stdio.h>main()int i, j, x=0;for (i=0; i<2; i+)x+;for (j=0; j<=3; j+)if (j%2) continue;x+;x+;printf("x=%dn", x);练习5-1答案一、选择题1合法的数组说明语句是( B )。Aint a="string"Bint a=0,1,2,3,4,5;Cchar a="string"Dchar a5='0', '1', '2', '3', '4', '5'2以下对一维整型数组a的说明正确的是( D )。Aint a(10);Bint n=10, an;Cint n;D#define SIZE 10 scanf("%d", &n); in