C程序设计复习题(2014-1).doc_第1页
C程序设计复习题(2014-1).doc_第2页
C程序设计复习题(2014-1).doc_第3页
C程序设计复习题(2014-1).doc_第4页
C程序设计复习题(2014-1).doc_第5页
免费预览已结束,剩余14页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计基础复习题一、 选择题1下列选项中,合法的C语言变量名是( A )。P49A、_123abcB、123fC、defaultD、cabc2设有定义:char str20;能将“C program”输入给str的语句是( A )。A. gets(str);B. getchar(str);C. puts(str);D. scanf(“%c”, str);3在C语言中,合法的字符常量是:( A )A. x43B. 084C. abD. “0”4C程序从( A )开始执行。A、main函数 B、printf函数C、第1条语句D、scanf函数5按照C语言规定,可以作为函数名的是( A )。A、defineB、O*K C、fun. cD)、ab$c6执行语句printf(“%cn”,getchar();当键盘输入student时,结果为( A )。AsBstudentCstudent0Dt7、设u=56, v=37,则语句printf(“%dn”,uv?u:v); 的输出结果是( A )。A37 B. 56 C. u D. uv?u: v8以下程序的输出结果是(A) P149(strlen字符数组,不包括0)main() char st20= hello0t;printf(%d%dn,strlen(st),sizeof(st); A. 5 20 B. 9 9 C. 13 20 D.20 209以下关于C语言的叙述正确的是:(A)A. 从main()函数开始执行B. 从#includ开始执行C. 从程序中的第一条语句开始执行D. 从scanf()开始执行10执行语句scanf(“ddd”,&x,&y,&z);后,能将整数5,6,7分别赋给变量x,y,z的是:( A )P83A 567B 5;6;7 C 5,6,7 D x=5 ,y=6,z=711已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1&y+z/2的值是(A ).P94A、1B、2C、0D、6、12叙述正确的是: (A)A. 指针就是地址;B. 形参不是局部变量C. switch语句中必须有break语句;D. 在一个函数内部的复合语句中定义的变量可以在本函数中有效;13以下程序段( ).int m=0,n=0;while(!m !=0) n+=+m;printf(%dn,n);A运行后输出1 B控制表达式非法 C运行后输出0 D执行无限多次;14为了避免if else语句的二义性,C规定else与( )配对。 A. 其之前最近未配对的ifB. 缩排位置相同的if C.其之后最近未配对的ifD.同一行上的if15设变量x为float型且已赋值,则以下语句中能把x的值保留到小数点后两位,并将第3位四舍五入的是( )A、printf(%7.2d,x);B、printf(%8.2f,x);C、printf(%6.3f,x);D、printf(%.3d,x); 16以下程序的输出结果是:( )A. 2 0B. 3 1C. 3 2 1D. 2 1 0#includevoid main() int n=4; while(n-)printf(%d ,-n);17以下程序的输出结果是:( )A. 21 14 7 B. 21C. 14D. 7#includevoid main() int n=21; do if(n%7)break; printf(%d ,n); while(-n);18 在与switch语句配套的case后的表达式:( )A. 只能是常量或常量表达式B. 可以是变量或常量C. 只能是常量 D. 无论是常量还是变量,只要在执行时已经有值就行19设有定义:float a=2,b=4,h=3;其中a,b,h分别表示梯形的底和高,以下C语言表达式不能再去计算出梯形面积的是( ).A、(1/2)*(a+b)*hB、h/2*(a+b)C、(a+b)*h/2 D、(a+b)*h*1/220复合语句:t=a; a=b; b=t; 的功能是( )A. 交换a,b的值B. 求a,b,t的最小值C. 求a,b的最大值D. 求a,b,t的最大值21、else应该和( )配对使用。A. 其前最后一个没有配过对的ifB. 其前第一个ifC.其后最近的没有配过对ifD. 其前最后一个if22下列叙述正确的是: ()A. 外循环中的break语句将结束所有循环B. 外循环中的continue语句将结束所有循环C. 内循环中的break语句将结束所有循环D. 内循环中的continue语句将结束所有循环23设j为int型变量,则以下循环语句的执行结果是( ).for(j=10;j3;j-) if(j%3)j-; -j;-j; printf(%d ,j);A、7 4B、6 3C、7 3D、6 224下列描述中不正确的是()A. 可以对整型数组进行整体输入、输出B可以对字符型数组进行整体输入、输出C. 字符型数组中可以存放字符串D不能在赋值语句中通过赋值运算符=对字符型数组进行整体赋值25语句strlen(strcat(“very”,” good!”)的值为()A.9B.10C.11D.不确定26数组名作为实参时实际上被处理成()。A. 该数组首地址B.该数组各元素的值C. 该数组的长度D.该数组的元素个数27字符串“I am a student。”占用( )个字节。A、15B、16C、14D、 1328下列对数组a的定义及初始化中,不正确的的是( )A、int a2=0,1,2,3,4,5;B、int a43,5,6,9,2,1,7,4;C、int a24=3,4,5,2,5,8;D、int a23=3,5,6;29下列选项中,对数组的不正确的定义是( )A、int n=6, an=0,1,2;B、int a0,1,2,3,4,5;C、int a6 ;D、int a6=0,1,3 ;30下列选项中能够把5,6,7赋给数组a的是( )。A. int a35,6,7;B. int a3;a=5,6,7;C. int a;a3=5,6,7;D. int a35,6,7;31若有以下说明:int a12=1,2,3,4,5,6,7,8,9,10,11,12;char c=a,d,g;则数值为4的表达式是( ).A、ad-cB、a4C、ad-cD、ag-c 32设有定义:char s130“good”,s2=“ bye”;下列选项中能够输出good bye的是( )。A. puts( strcat(s1,s2); B. puts(strcmp(s1,s2); C. puts(strcpy(s1,s2); D. puts(strcat(s2,s1);33函数strlen(“Iamastudent。”)的值等于( )。A、15B、16C、12D 1334以下数组定义中不正确的是()。A. int d3=1,2,1,2,3,1,2,3,4;B.int b3=0,1,2,3;C.int c100100=0; D. int a23;35设有数组定义: char a =China; 则数组 a所占的空间为()。A. 6个字节 B.5个字节 C. 7个字节 D. 4个字节36以下程序的输出结果是()。A. 3,5,7 B.1,4,7 C. 1,5,9 D.3,6,9void main() int i, x33=1,2,3,4,5,6,7,8,9; for(i=0;i3;i+) printf(%d,xi2-i); 37以下程序的输出结果是()A.EFGH B. ABCD C. EFG D. ABCD EFGH IJKL EFG JK FGH IJ O KLmain()char w10= ABCD,EFGH,IJKL,MNOP,k; for(k=1;k3;k+) printf(%sn,wk); 38设有以下定义,则所列叙述正确的是( ).。char x=abcdefg;char y=a,b,c,d,e,f,g;A数组x的长度大于数组y的长度B数组x和数组y的长度相同C数组x和y完全相同D数组x的长度小于数组y的长度40C语言中函数返回值的类型是由()决定的。A. 定义函数时所指定的函数类型B.该函数的实参类型C.调用语句D. return语句中表达式的类型42在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。A. 单向值传递 B. 地址传递C.由实参传给形参,再由形参传回实参 D.传递方式由用户指定43关于函数定义,下列说法正确的是:()A. C语言规定,函数不可以嵌套定义,可以嵌套调用B. C语言规定,函数可以嵌套定义,不可以嵌套调用 C. C语言规定,函数既可以嵌套定义,也可以嵌套调用D. C语言规定,函数既不可以嵌套定义,也不可以嵌套调用44设有函数定义:void f(int x) 下列函数声明语句正确的是()。A. void f(int);B. void f()C. f(int x);D. f(int)45设有函数定义:void f(int x); 下列说法正确的是:()。A. f的形参是整型,没有返回值B. f的形式参数是整型,返回值也是整型C. 因为f返回值的类型是void,所以f一定是空函数D. 因为函数的返回值类型和形参类型不一致,所以函数定义有错误46关于函数调用,下列说法正确的是:()A. 函数可以调用除main函数以外的任意函数B. 标准函数(即库函数)可以调用其它函数,其它函数不能调用标准函数C. 所有的函数都是平等的,所以可以互相调用D. 只有main函数才能调用其它函数,其它函数之间不能互相调用47一个C程序可以由多个函数组成,但只能有一个( )函数。A、main函数 B、printf函数C、自定义函数D、scanf函数48设有函数定义:int fun(int n ,float x)下列选项中,能正确调用该函数的语句是( ) 。A、fun(5,2.0);B、fun(5.0,2.0);C、int fun(5,2);D、int fun(5,2.0);49以下不正确的说法是( )。A. 在函数内的复合语句中定义的变量在本函数范围内有效B. 形式参数是局部变量C. 在函数内定义的变量只在本函数范围内有效D. 在不同函数中可以使用相同名字的变量50关于函数,下列说法正确的是( )。A. 主函数可以调用其它函数,其它函数不能调用主函数B. 所有的函数都可以互相调用C. 只有系统定义的函数才能调用用户自定义的函数D. 函数不能嵌套调用51设有函数声明void function(float x);则函数function是( )。A、不返回值的函数B、空函数 C、返回值为实型数据的函数D、无参函数52下列函数定义正确的是( )。A. int add(int x,int y) B. int add(int x,int y); return x+y;return x+y; C. void add(int x,int y); D. int add(int x,y) return x+y;return x+y; 53下列关于C函数的叙述中正确的是( )。A. 函数不能嵌套定义,可以嵌套调用B. 函数必须有return C. 函数必须有输入变量的语句D. 函数必须有形参54调用函数时,以下叙述不正确的描述是()A. 实参与形参可以共占内存单元B.形参不分配存储单元C. 实参可以是地址 D.通常要求实参与形参的类型应一致55当调用函数时,实参是一个数组名,则向函数传送的是( )。A. 数组的首地址 B. 数组的长度 C. 数组每一个元素的地址 D.数组每个元素中的值56关于函数,下列说法正确的是:()A. 函数的返回值类型就是函数中return语句带回值的类型B. 函数的返回值类型必须和形参的类型一致C. 所有的函数必须有返回值D. 所有的函数必须有scanf和printf语句57函数f1()在运行中调用了函数f2(),而f2()有调用了f1(),这种调用称为:()A. 递归调用 B. 地址调用C. 直接调用D. 值调用 58设函数f()的原型为void f(int array,int m);主调函数中有声明:int a10;则下列语句正确的是:()。A. f(a,10);B. f(&ai,i); C. void f(a,10);D.f(int a10,int 10);59若有char *str5; 则其中的str是: ()A. 指针数组名B.指针变量名C.字符型数组名D. 字符型变量名60假设有定义:int *p,n;char *q,*g,ch;下列语句不正确的是:()A. p=&n;g=p=&ch;B. p=&n;q=&ch;C. p=&n;g=&ch;D. p=&n;q=&ch;g=q;61如果变量已被正确定义,指针p指向x,则*&x等价于()。A. *pB. &*xC. pD. *p62设有定义:int a,*p;下列选项正确的是( )。Ap=&a,*p=23B pa23 Cp&a23D*p&a2363设有定义:int *p4;下列说法正确的是( )。A. p是由4个指针组成的指针数组,每个指针都可以指向一个整型变量B. p是指向数组的指针,应该指向由4个整型元素组成的数组C. *p是由4个指针组成的指针数组,每个指针都可以指向一个整型变量D. *p是指向数组的指针,应该指向由4个整型元素组成的数组64若有说明和语句: int c45,(*p)5; p=c; 能正确引用数组元素的是( ).A、*(p0+2)B、*(p+1)+3C、*(p+3)D、p+165以下函数的功能是( ).fun(char *p2,char *p1) while(*p2=*p1)!=0) p1+;p2+;A、 将p1所指字符串复制到p2所指内存空间B、 将p1所指字符串的地址赋给指针p2C、 对p1和p2两个指针所指字符串进行比较D、检查p1和p2两个指针所指字符串中是否有066设有定义:float a,*p;下列选项能使a的值为2.7的是( )。Ap&a, *p=2.7;B*pa,*p52.7; C. p&a, p2.7;D. pa,*p2.7;67设:char str=”computer”;char *pstr;能够输出computer的语句是( )。A、printf(“%s”,p);B、printf(“%c”,*p);C、printf(“%s”,*p);D、printf(“%c”,p);68设有定义:float *ft3;下列说法正确的是( )。A. ft是指针数组,它由3个指向实型数据的指针组成B. *ft是指针数组,它由3个指向实型数据的指针组成C. ft是指向含有3个实型数据的指针变量D、 D. *ft是指向含有3个实型数据的指针变量69设函数f()的原型为void f(int *x,int m);主调函数中有声明:int a10;则下列语句正确的是:( )A. void f(a,10);B. f(&a0,10); C. f(*a,10); D. f(int a10,int 10);70设有定义:(int *p)3;int a,c3;则下列语句正确的是:( )A. p=c;B. *p=&a;C. p=&c3;D. p&a; 71假设变量已正确定义,指针p指向变量x,则*&x等价于:( )A. *pB. &*xC. pD. *p72设有定义:int i,a10,*p;则下列语句合法的是:( )A. p=a+5;B. p=a2;C. p=20; D. p=&(i+5);73语句:char s3=abc;则执行语句char *p=s;之后,*(p+2)的值是( )A. c B.0 C. b D.b的地址74设有以下说明语句:struct stu int a;float b;stutype;则下面的叙述不正确的是:()A. stutype是用户定义的结构体类型B. struct stu是用户定义的结构体类型C. struct是定义结构体类型的关键字D. a和b都是结构体成员名75设有结构体定义:struct studentint num;char name20;float score;stu1;则下列语句正确的是: ( )A. strcpy(,”Lilin”);B. =”Lilin”;C. =”Lilin”;D.strcpy(,”Lilin”);76设有定义:struct childchar name20; char xb;int age; child_1,child_2;能将“Liliang”赋给child_1的变量name的正确语句是( )A. strcpy(child_1.name,”Liliang”); B. strcpy(,”Liliang”) ;C. child. Name“Liliang”; D.child_1.name=”Liliang”;77设有定义:struct ps int num; char name20;psA;下列语句正确的是( )。A. psA.num=12,strcpy(psA.name, Xiaoli ); B. ps.num=12,= Xiaoli ;C. num=12,name= Xiaoli ; D. psA.num=12,psA.name=Xiaoli 78设有定义:struct workerchar name20;char sex;int age;work1;则下列语句正确的是:( )A. work1.age=34;B. age34; C. worker.work1.age=34;D. struct.worker.work1.age=34;79定义同上题,下列语句正确的是:( )A. strcpy(,”Liugang”);B. strcpy(name,”Liugang”);C.=”Liugang”;D. strcpy(,”Liugang”);二、 填空题:1用printf函数在屏幕上显示D:testnext的字样,应使用 语句。2设有定义 float x56.632256;要在屏幕上显示x56.63,应使用语句 。3已知整型变量n的初值为3,h的初值为1,则执行语句 do hh*n-; while(n);后h的值为 。4设有语句:char s=”Hello,2014.”;在屏幕上输出数组s,可使用C语句 (可用你所熟悉的任何一条语句)。5设已定义字符型变量c1,c2,c3,则执行语句:scanf(“%c%c%c”,&c1,&c2,&c3);后,输入a,b,c回车后,c1,c2,c3的值分别为 。6条件表达式语句 yx=1&x10?2*x-1:3*x-11;的if 语句为 。7能够正确表示y=|a-b|的C语言表达式为 。8判别字符型变量ch的值是小写字母为真的C语言表达式为 。9已知整型变量n的初值为3,h的初值为1,则执行语句 do hh*n-; while(n);后h的值为 。10用PI表示常数3.14159的宏定义为 . 11使字符常量G的值等于9.8的宏定义命令是 。12、当键盘输入为ABCD【回车】时,语句chgetchar();的值为 。13设有以下变量定义,并已赋确定的值char w; int x; float y; double z;则表达式:w*x+z-y所求得的数据类型为 。14表示“整数x的绝对值大于6”时值为真的C语言表达式是 。15已知整型变量a的初值为6,b的初始值为1,则执行语句 do ba-; while(a);后b的值为 。16数学函数asin的原型为:double asin(double x);功能是计算arcsin(x)的值。使用该函数时,应该加上 文件包含指令。17如果在C程序中要用到库函数中字符串比较函数strcmp,那么在程序前面应该加文件包含命令:( )。18设有定义 char s120=“very ”,s2=”good”;则执行语句strcpy(s1,s2);puts(s1);puts(s2);后,显示结果为 。19设有定义:int a6=1,2,3,4,5,6;引用数组元素6的C语句为 。20函数体中声明部分的二大作用是 。21C中一个函数的类型若未加说明,则隐含类型为( ) 。22设有定义 char str20=“China,”;则语句printf(“%d,%dn”, strlen(str),sizeof(str);的输出结果是 。23C语言规定:不带回值的函数应该声明为 类型24设有定义语句:int i1,a4, *p;则语句for(p=a;pa+4;p+) *p=i2;数组a中各元素的值为 。25设有定义int a5;定义一个能够指向数组a指针pa并使pa指向a的语句为: 。26在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的 调用。27设有定义:int i,a4, *p;语句:for(p=a,i=1;i5;i+) *p+=2*i; 执行后数组a各元素的值为 。28设有定义:int a4=1,2,3,4,*pa;则*(p+3)的值为 。29、设已声明结构体类型struct object,将book定义为该类型的变量应该使用语句 。30设已声明结构体类型struct child,将boy定义为该类型的变量应该使用语句 。三、程序阅读:1、以下程序运行后的输出结果是:#includemain() int c,a; a=(float)(7/2)3.5?(c=2,c+2):3;printf(%dn,a);2以下程序运行后的输出结果是:#includevoid main ( ) int a=10, b=4, c=3; if(ab) a=b ; if(ac) a=c ; printf(“%d, %d, %dn”, a, b, c) ; 3当键盘输入为N时,下列程序的运行结果是 。main() char agetchar();switch(a) caseY:printf(“Yesn”); caseN:printf(“Non”); caseT:printf(“Try”); default:printf(“?”); 4下列程序的运行结果是 。#includevoid main() int a=4,b=3,c=5,t=0; if(ab) t=3;a=b;b=t; if(ac)t=a;a=c;c=t; printf(%d, %d, %dn,a,b,c);5以下程序的运行结果是 。#includevoid 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(%d %dn,a,b);6下述程序的输出结果为: #includevoid main() int k=1; long sum=0; do k=k*(k+1)/2;sum+=k; while(sum%7); printf(%ldn,sum);7 以下程序运行后的输出结果是:#includevoid main() int n; for(n=1;n=30;n+) if(n%5!=0)continue; printf(%d,n); 8下列程序的运行结果是 。main() int n;for(n=10;n=20;n+) if(n%4)continue; printf(“%d,n”,n); 9当键盘输入字符y时,下列程序的运行结果是 。#includevoid main() int i; char x,s1=”every”, s210;scanf(“%c”,&x);for(i=0;s1i!=0;i+) if(s1i=x)continue; s2i=s1i; s2i=0; printf(“s”,s2); 10两次运行下列程序时,分别输入54和82时,程序的运行结果分别为:#include#includevoid main() int mark; char msg20; scanf(%d,&mark); if(mark=60) strcpy(msg,You are success!); else strcpy(msg,You are fail!); puts(msg);11. 以下程序运行后的输出结果是:#includevoid fun(char *c,intd) *c=*c+1;d=d+1; printf(%c,%c,*c,d); main() char a=A,b=a; fun(&b,a); printf(%c,%cn,a,b); 12以下程序运行后的输出结果是:#includef(int *b , int m, int n) int i,s=0;for(i=m;in;i=i+2) s=s+*(b+i);return s;main() int x,a=1,2,3,4,5,6,7,8,9;x=f(a,3,7);printf(%dn,x);13下列程序的运行结果是 。main() int a4,i,*pa; for(i=0;i4;i+,p+)*pi2; pa; for(i=0;i4;i+,p)printf(“%3d,”,*p); 四、程序填空:1下面程序在a数组中查找与x值相同的元素所在位置。数据从a1元素开始存放,请填空。#includevoid main() int a11,i,x; printf(请输入10个整数:); for( ; ;i+) scanf(%d,&ai); printf(输入要找的数x:); scanf(%d, ); a0=x; i=10; while(x!= ) i-; if( ) printf(与x值相同的元素位置是:%dn,i); elseprintf(找不到与x相同的元素!n);2 以下程序中,函数fmin计算并返回两个实数的最小值,程序功能是求出 a,b,c 3个数中的最小值,请填空:#includevoid main() float fmin(float, float); float int a,b,c,d,min; scanf( );/键盘输入a,b,c的值 d=fmin(a,b); min= ; /再次调用fmin函数 printf( );/输出3个数的最小值float fmin(float x, float y) /定义函数fmin() float z; if( )zx; else zy; ;/返回运算结果3以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指的内存空间中,形成一个新的字符串s.请填空.#includevoid sstrcpy(char *s,char *t) while (*s+= );void main() char str180,str2=abcdefgh; sstrcpy( ); printf( );4. 以下程序功能是输入两个实数,求其中的较大的数。请在下划线处填入表达式。#includevoid main() ;/声明被调函数fun float a,b,c; ;/键盘输入变量a,b的值 c=fun(a,b); ; /输出c的值float fun(float x, float y)/定义函数fun float z=x;if( )z=y;return z; 5以下程序的功能是求数组的平均值。数组的值从键盘输入。请填空。#includefloat average(float array10) int i; float aver,sum=array0; for( ) sum= ; aver= ; return(aver);void main() int i; float av,a10; printf(请输入10个实数:n); for( ) scanf(%f,&ai); av= ; printf(%5.2fn,av);五、操作题:(一)改错题:1以下程序的功能是输入a,b,c三个整数,输出其中最小的数。但程序有语法错误,请上机修改并运行程序,使完成功能。main() ; float a,b,c; printf(请输入3个实数:n); scanf(%f,%f,%fn,a,b,c);/found t=min(a,b); u=min(t,c); printf(%7.2fn,u;float min(float x,floa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论