1、C语言复习题整理第2部分C语言程序设计习题与解答题解1绪论习题一、选择题1一个完整的可运行的C源程序中(B)。A可以有一个或多个主函数B必须有且仅有一个主函数C可以没有主函数D必须有主函数和其他函数2构成C语言源程序的基本单位是(D)。A子程序B过程C文本D函数3某C程序由一个主函数main()和一个自定义函数max()组成,则该程序(D)。A总是从max()函数开始执行B写在前面的函数先开始执行C写在后面的函数先开始执行D总是从main()函数开始执行4C语言规定,一个C源程序的主函数名必须为(C)。AprogramBincludeCmainDfunction5下列说法正确的是(C)。A在书
2、写C语言源程序时,每个语句以逗号结束B注释时,/和*号间可以有空格C无论注释内容的多少,在对程序编译时都被忽略DC程序每行只能写一个语句6C语言源程序文件的后缀是(C),经过Compile后,生成文件的后缀是(A),经过Build后,生成文件的后缀是(B)。A.objB.exeC.cD.doc7Visual C+ IDE的编辑窗口的主要功能是(A),输出窗口的主要功能是(D),调试器(Debug)的主要功能是(C)。A建立并修改程序B将C源程序编译成目标程序C跟踪分析程序的执行D显示编译结果信息(如语法错误等)8在Visual C+ 开发环境下,C程序按工程(project)进行组织,每个工程
3、可包括(D)C/CPP源文件,但只能有(A)main函数。A1个B2个C3个D1个以上(含1个)9调试程序时,如果某个语句后少了一个分号,调试时会提示错误,这种情况一般称之为(A)。而某个“计算2的平方”的程序在调试时没有提示出错,而且成功执行并计算出了结果,只是结果等于5,这种情况一般称之为(D)。A语法错误B正常情况C编译器出错D逻辑设计错误二、简答题1如何使用注释语句使用注释有何好处2C程序对书写格式有何要求规定书写格式有何好处符号名包括模块名、常量名、标号名、子程序名等。这些名字应该能反映它所代表的实际东西,具有一定的意义,使其能够见名知义,有助于对程序功能的理解3简述C程序上机调试的
4、一般步骤编辑,编译,连接,运行4简述C程序从.c源文件到.exe可执行文件的生成过程题解2基本数据类型与运算符习题一、选择题1C语言中最基本的非空数据类型包括(D)。A整型、浮点型、无值型B整型、字符型、无值型C整型、浮点型、字符型D整型、浮点型、双精度型、字符型2C语言中运算对象必须是整型的运算符是(A)。A%B/C=D=3若已定义x和y为int类型,则执行了语句x=1;y=x+3/2;后y的值是(B)。A1B2CD4若有以下程序段:int a=1,b=2,c;c=b*a;则执行后,c中的值是(A)。A0BC1D25能正确表示逻辑关系:a10或a0的C语言表达式是(D)。Aa=10 or a
5、=0|a=10 & a=10a=06下列字符序列中,不可用作C语言标识符的是(B)。Axds426BC_okDzwd7在printf()函数中,反斜杠字符表示为(D)。AB0CnD8设先有定义:int a=10;则表达式a+=a *=a的值为(D)。A10B100C1000D2009设先有定义:int a=10;则表达式(+a)+(a -)的值为(C)。A20B21C22D1910有如下程序:#include main()int y=3,x=3,z=1;printf(%d%dn,(+x,y+),z+2);运行该程序的输出结果是(D)。A34B42C43D3311假定x、y、z、m均为int型变
6、量,有如下程序段:x=2; y=3; z=1;m=(yx)y: x;m=(zz)&(y=z)&x|y+z&y+z的值为( B )A0B1C2D3(x+y)z)&(y=z)&x|(y+z)&(y+z)=1&0&3|9&9=0|1=114如果a=1,b=2,c=3,d=4,则条件表达式aba:(cdc:d的值为(A)。A1B2C3D415设int m=1,n=2;则m+=n的结果是(A)。A0B1C2D3二、填空题1表达式10/3的结果是3;10%3的结果是1。2执行语句:int a=12;a+=a-=a*a;后的值是-264。3以下语句的输出结果是-1。short b=65535;printf(
7、%d,b);4以下程序的执行结果是X=3,a=2,b=2。#includemain()int a,b,x;x=(a=3,b=a-);printf(x=%d,a=%d,b=%dn,x,a,b);5以下程序的执行结果是0。#includemain()float f1,f2,f3,f4;int m1,m2;f1=f2=f3=f4=2;m1=m2=1;printf(%dn,(m1=f1=f2)&(m2=f3f4);6以下程序的执行结果是n=1。#includemain()float f=;int n;n=(int)f%3;printf(n=%dn,n);三、简答题2简述转义字符的用途并举实例加以说明。
8、题解3控制结构习题一、选择题1结构化程序模块不具有的特征是(B)。A只有一个入口和一个出口B要尽量多使用goto语句C一般有顺序、选择和循环3种基本结构D程序中不能有死循环2C语言中,逻辑“真”等价于(C)。A整数1B整数0C非0数DTRUE3以下4条语句中,有语法错误的是(D)。Aif(ab)m=a;Bif(a=0)m=a;Dif(a=b;)=0)m=a;4若i,j均为整型变量,则以下循环*(C)。for (i=0,j=2; j=1; i+,j-)printf(%5d, %dn, i, j);A循环体只执行一次B循环体执行二次C是无限循环D循环条件不合法5以下程序段,执行结果为(A)。a=1
9、;doa=a*a; while(!a);A循环体只执行一次B循环体执行二次C是无限循环D循环条件不合法6C语言中while与do-while语句的主要区别是(A)。Ado-while的循环体至少无条件执行一次Bdo-while允许从外部跳到循环体内Cwhile的循环体至少无条件执行一次Dwhile的循环控制条件比do-while的严格7语句while (!a);中条件等价于(D)。Aa!=0BaCa=1Da=08以下程序的运行结果为(D)。#include main()int i=1,sum=0;while(i=100)sum+=i;i+;printf(1+2+3+.+99+100=%d, s
10、um);A5050B1C0D程序陷入死循环9以下程序的运行结果为(A)。#include main()int sum,pad;sum=pad=5;pad=sum+;pad+;+pad;printf(%dn, pad);A7B6C5D410以下程序的运行结果为(D)。#include main()int a=2,b=10;printf(a=%d,b=%dn, a,b);Aa=%2,b=%10Ba=2,b=10Ca=%d,b=%dDa=%d,b=%d11为了避免嵌套的if-else语句的二义性,C语言规定else总是(C)。A与缩排位置相同的if组成配对关系B与在其之前未配对的if组成配对关系C与
11、在其之前未配对的最近的if组成配对关系D与同一行上的if组成配对关系12对于for (表达式1; ;表达式3)可理解为(B)。Afor (表达式1; 0 ;表达式3)Bfor (表达式1; 1 ;表达式3)Cfor (表达式1;表达式1;表达式3)Dfor (表达式1;表达式3;表达式3)二、程序填空1下面程序的功能是计算n!。#include main ()inti, n;longp;printf ( Please input a number:n );scanf (%d, &n);p=1;for (i=2; i=n; i+)p*=i或p=p*i;printf(n!=%ld, p);2下面程
12、序的功能是:从键盘上输入若干学生的成绩,统计并输出最高和最低成绩,当输入负数时结束输入。#include main ()floatscore, max, min;printf ( Please input one score:n );scanf (%f, &score);max=min=score;while (score=0)if (scoremax)max=score;if (scoremin)min=score;printf ( Please input another score:n );scanf (%f, &score);printf(nThe max score is %fnTh
13、e min score is %f, max, min);3下面程序的功能是:计算y=的值。要求从键盘上输入x的值,精度控制在内。#include #include main ()floatx , y=0, fz=-1, fm=-1, temp=1;printf ( Please input the value of x:n );scanf (%f, &x);while ( abs(temp)fz=【6】-fz*x;fm=fm+2;temp=fz/fm;y+=temp;printf(ny= %f, y);4下面的程序完成两个数的四则运算。用户输入一个实现两个数的四则运算的表达式,程序采用swi
14、tch语句对其运算进行判定后执行相应的运算并给出结果。#include main()float x,y;char op;printf(Please input Expression:);scanf(%f%c%f,&x,&op,&y);【7】switch (op)case +:printf(%g%c%g=%gn,【8】);【9】break;case -:printf(%g%c%g=%gn,x,op,y,x-y);break;case *:printf(%g%c%g=%gn,x,op,y,x*y);break;case /:if (【10】(y=-1e-6)&(y=1e-6)printf(Divi
15、sion Error!n);elseprintf(%g%c%g=%gn,x,op,y,x/y);break;default:printf(Expression Error!n);题解4函数习题一、选择题1C语言中函数形参的缺省存储类型是(B)。A静态(static)B自动(auto)C寄存器(register)D外部(extern)2函数调用语句function(exp1,exp2), 18)中含有的实参个数为(C)。A0B1C2D33下面函数返回值的类型是(D)。square(float x)return x*x;A与参数x的类型相同B是void型C无法确定D是int型4C语言规定,程序中各
16、函数之间(D)。A不允许直接递归调用,也不允许间接递归调用B允许直接递归调用,但不允许间接递归调用C不允许直接递归调用,但允许间接递归调用D既允许直接递归调用,也允许间接递归调用5一个函数返回值的类型取决于(C)。Areturn语句中表达式的类型B调用函数时临时指定C定义函数时指定或缺省的函数类型D调用该函数的主调函数的类型6下面叙述中,错误的是(C)。A函数的定义不能嵌套,但函数调用可以嵌套B为了提高可读性,编写程序时应该适当使用注释C变量定义时若省去了存储类型,系统将默认其为静态型变量D函数中定义的局部变量的作用域在函数内部7在一个源程序文件中定义的全局变量的有效范围为(C)。A一个C程序
17、的所有源程序文件B该源程序文件的全部范围C从定义处开始到该源程序文件结束D函数内全部范围8某函数在定义时未指明函数返回值类型,且函数中没有return语句,现若调用该函数,则正确的说法是(D)。A没有返回值B返回一个用户所希望的值C返回一个系统默认值D返回一个不确定的值9函数swap(int x, int y)可实现对x和y值的交换。在执行如下定义及调用语句后,a和b的值分别为(B)。int a=10, b=20;swap (a,b );A10和10B10和20C20和10D20和2010下面错误的叙述是(D)。A在某源程序不同函数中可以使用相同名字的变量B函数中的形式参数是局部变量C在函数内
18、定义的变量只在本函数范围内有效D在函数内的复合语句中定义的变量在本函数范围内有效二、程序填空1求s=1!+2!+3!+10!之和。程序如下:#include long int factorial(int n)int k=1;long int p=1;for(k=1; k=n; k+)【1】p=p*k;returnp;main()int n;float sum=0;for(n=1;n=10;n+)【2】sum=sum+factorial(n);printf(%n,sum);2以下函数用以求x的y次方。doublefun (double x, int y)inti;doublem=1;for (
19、i=1; i【3】=y或y+1; i+ )m=【4】m*x;returnm;三、阅读程序并写出运行结果1下面程序运行的结果是_2,4,6,8_:#include #defineMAX_COUNT4void fun();main()int n;for(n=1; n=MAX_COUNT; n+)fun();void fun()static int k;k=k+2;printf (%d, k);4下面程序运行的结果是_8,17_:#include int fun(int x, int y)static int m=0, n=2;n+=m+1;m=n+x+y;return m;main()int j=4, m=1, k;k=fun(j, m);printf (%d, k);k=fun(j,m);printf(%dn, k);题解5数组习题一、选择题1在下列数组定义、初始化或赋值语句中,正确的是(C)。Aint a8; a8=100;
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2