C语言程序设计习题_第1页
C语言程序设计习题_第2页
C语言程序设计习题_第3页
C语言程序设计习题_第4页
C语言程序设计习题_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计习题第一章C语言基础知识一、选择题1.C语言规定,必须用作为主函数名。 A)FunctionB)include C)main D)stdio2.是C程序的基本构成单位。 A)函数 B)函数和过程 C)超文本过程 D)子程序3.下列说法正确的是。A)一个函数的函数体必须要有变量定义和执行部分,二者缺一不可B)一个函数的函数体必须要有执行部分,可以没有变量定义C)一个函数的函数体可以没有变量定义和执行部分,函数可以是空函数D)以上都不对4.下列说法正确的是。A)main函数必须放在C程序的开头B)main函数必须放在C程序的最后C)main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头执行的D)main函数可以放在C程序的中间部分,但在执行C程序时是从main函数开始的5.下列说法正确的是。A)在执行C程序时不是从mian函数开始的B)C程序书写格式严格限制,一行内必须写一个语句C)C程序书写格式自由,一个语句可以分写在多行上D)C程序书写格式严格限制,一行内必须写一个语句,并要有行号6.在C语言中,每个语句和数据定义是用结束。 A)句号 B)逗号 C)分号 D)括号7.下列字符串是标识符的是。 A)_HJ B)9_student C)long D)LINE18.以下说法正确的是。A)C语言程序总是从第一个定义的函数开始执行B)在C语言程序中,要调用的函数必须在main()函数中定义C)C语言程序总是从main()函数开始执行D)C语言程序中的main()函数必须放在程序的开始部分9.不是C语言提供的合法关键字。 A)switch B)print C)case D)default10.C语言提供的合法关键字是。 A)breack B)print C)funiton D)end11.一个C语言程序是由。A)一个主程序和若干个子程序组成;B)函数组成,并且每一个C程序必须且只能由一个主函数;C)若干过程组成;D)若干子程序组成.12.以下叙述中错误的是()A.C语言是一种结构化程序设计语言。B.结构化程序有顺序、分支、循环三种基本结构组成。C.使用三种基本结构构成的程序只能解决简单问题。D.结构化程序设计提倡模块化的设计方法。13.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定,这属于算法的()A.正当性B.可行性C.确定性D.有穷性14.下列叙述中错误的是()A.计算机不能直接执行用C语言编写的源程序。B.C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件。C.后缀为.obj的文件,经链接程序生成后缀为.exe的文件是一个二进制文件。D.后缀为.obj和.exe的二进制文件都可以直接运行。15.以下叙述中错误的是()A.C语言是一种结构化程序设计语言。B.结构化程序有顺序、分支、循环三种基本结构组成。C.使用三种基本结构构成的程序只能解决简单问题。D.结构化程序设计提倡模块化的设计方法。16.对于一个正常运行的C程序,以下叙述中正确的是()A.程序的执行总是从main函数开始,在main函数结束。B.程序的执行总是从程序的第一个函数开始,在main函数结束。C.程序的执行总是从main函数开始,在程序的最后一个函数中结束。D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束。17.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定,这属于算法的()A.正当性B.可行性C.确定性D.有穷性二、填空题1.一个C程序至少包含一个,即。2.一个函数由两部分组成,它们是和。3.函数体的范围是。4.函数体一般包括和。5.C语言是通过来进行输入输出的。6.在C语言中,凡在一个标识符后面紧跟着一对圆括弧,就表明它是一个。7.主函数名后面的一对圆括号中间可以为空,但一对圆括号不能。第二章C语言程序设计的初步知识一、选择题1.在C语言中,下列类型属于构造类型的是。 A)整型 B)字符型 C)实型 D)数组类型2.在C语言中,下列类型属于基本类型的是。 A)整型、实型、字符型 B)空类型、枚举型 C)结构体类型、实型 D)数组类型、实型3.下列字符串属于标识符的是。 A)INT B)5_student C)2ong D)!DF4.C语言中不能用来表示整常数的进制是。 A)十进制 B)十六进制 C)八进制 D)二进制5.C语言中能用来表示整常数的进制是。 A)十进制、八进制、十六进制 B)十二进制、十进制 C)六进制、八进制 D)二进制、十进制6.在C语言中,回车换行符是。 A)\n B)\t C)\v D)\b7.设d为字符变量,下列表达式不正确的是。 A)d=97 B)d=’a’ C)d=”a” D)d=’g’8.设d为字符变量,下列表达式正确的是。 A)d=678 B)d=’a’ C)d=”d” D)d=’gjkl’9.10+’a’+1.5-567.345/’b’的结果是型数据。 A)long B)double C)int D)unsignedfloat10.语句inti=3;k=(i++)+(i++)+(i++);执行过后k的值为A,i的值为。 A)9,6 B)12,5 C)18,6 D)15,511.如果inti=3,intj=4,则k=i+++j执行之后k,i和j的值分别为。A)7,3,4 B)8,3,5 C)7,4,4 D)8,4,512.已知在ASCII字符集中,数字0的序号为48,下面程序的输出结果为。main(){charx,y;x=’0’;y=’9’;printf(“%d,%d\n”,x,y);}A)因输出格式不合法,输出错误信息 B)48,57 C)0,9 D)48,5813.已知在ASCII字符集中,字母A的序号为65,下面程序的输出结果为。main(){charc=’A’;inti=10;c=c+10;i=c%i;printf(“%c,%d\n”,c,i);}A)75,7B)75,5 C)K,5 D)因存在非图形字符,无法直接显示出来14.C语言中,运算对象必须是整型数的运算符是。 A)% B)\ C)%和\ D)**15.下列常数中,不合法的C常量是。 A)-0x3bl B)123e+2.3 C)’}’ D)6e+716.下列符号中,可以作为变量名的是。 A)+a B)12345e C)a3B D)5e+017.下面程序的输出结果是。 main() {intx=4,y=0,z; x*=3+2;printf(“%d”,x); x*=y==(z=4);printf(“%d”,x); } A)1440 B)200 C)204 D)14418.下面程序的输出结果是。 main() {inti,j; i=16;j=(i++)+i;printf(“%d”,j); i=15;printf(“%d%d”,++i,i); } A)321615 B)331515 C)341516 D)34161519..下列程序的执行结果是。#include<stdio.h>#definesum(10+20)mian(){inta=0,b=0,c=0;a=sum;b=5;c=sum*b;printf("%d",c);}A)100 B)110 C)70 D)15020.以下说法正确的是。A)在C程序中,每行只能写一条语句.B)在C程序中,无论是整数还是实数,其存放形式都一致.C)在C程序中,%是只能用于整数运算的运算符.D)在C程序中,变量可以不必先定义就可使用.二、填空题1.C语言基本数据类型包括、、、。2.在C语言中,常量有不同的类型,包括、、和等。3.符号常量是指。4.在C语言中,变量是。5.变量也有不同类型,如、和等。6.在C语言中,用来标识变量名,符号常量名,函数名,数组名,类型名,文件名的有效字符序列称为。7.可以用来表示C的整常数的进制是、、。8.在C语言中,实数有两种表现形式,是和。9.实型变量分为和,即float和double型。10.在一个变量定义语句中可以同时定义多个变量,变量之间用隔开。11.x=2.5,a=7,y=4.7,则x+a%3*(int)(x+y)%2/4的值为___。12.设a=2,b=3,x=3.5,y=2.5,则(float)(a+b)/2+(int)x%(int)y的值为____。13.设a=12,n=5,则计算了表达式a%=(n%=2)后,a的值为___,计算了表达式a+=a-=a*=a后,a的值为_。第三章顺序结构程序设计一、选择题1.C语言中调用printf进行输出时需要注意,在格式控制串中,格式说明与输出项的个数必须相同。如果格式说明的个数小于输出项的个数,多余的输出项将;如果格式说明的个数多于输出项的个数,则对于多余的格式将输出不定值(或0)。A)不予输出B)输出空格C)照样输出D)输出不定值或02.在scanf函数的格式控制中,格式说明的类型与输入的类型应该一一对应匹配。如果类型不匹配,系统。A)不予接收B)并不给出出错信息,但不可能得出正确信息数据C)能接受正确输入D)给出出错信息,不予接收输入3.下列说法正确的是。A)输入项可以是一个实型常量,如scanf("%f",4.8);B)只有格式控制,没有输入项也能进行正确输入,如scanf("a=%d,b=%d");C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%5.3f",&f);D)当输入数据时,必须指明变量的地址,如scanf("%f",&f);4.以下程序的输出结果是。main(){intx=10,y=10;printf("%d%d\n",x--,--y);}A)1010B)99C)910D)109A)2,03,0B)2,13,0C)2,02,1D)2,10,15.设有如下定义intx=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y));的输出结果是。A)3B)0C)4D)16.若已知a=10,b=20,则表达式!a<b的值为。A)10B)20C)1D)07.printf函数中用到格式符"%4s",其中数字4表示输出的字符串站用4列。如果字符串长度大于4,则按原字符长从左向右全部输出;如果字符串长度小于4,则输出方式为。A)从左起输出该字符串,右补空格B)按原字符长从左向右全部输出C)右对齐输出该字符,左补空格D)输出错误信息8.C程序的基本编译单位是。A)函数B)文件C)源文件D)子程序9.设有如下定义和执行语句,其输出结果为:。inta=3,b=3;a=--b+1;printf(“%d%d”,a,b);A)32B)42C)22D)23二.填空题1.C语言中的语句可分为5类,即、、、、。2.由一次函数调用加一个分号构成一个语句。3.putchar函数的作用是。4.printf函数的“格式控制”包括两部分,他们是和。5.对不同类型的语句有不同的格式字符。例如:格式字符是用来输出十进制整数,格式字符是用来输出一个字符,格式字符是用来输出一个字符串。6.%-ms表示如果串长m,则在m列范围内,字符串向靠,补空格。7.如果要输出字符“&”,则应该在“格式控制”字符串中用表示。8.getchar函数的作用是。9.符号“&”是运算符,&a是指。10.scanf函数中的“格式控制”后面应当是,而不是。11.复合语句是由一对括起来的若干语句组成。12.假设变量a和b为整形,以下语句可以不借助任何变量把a,b中的值进行交换。请填空a+=____;b=a-____;a-=____;13.已有定义inta;floatb,x;charc1,c2;为使a=3,b=6.5,x=12.6,c1=’a’,c2=’A’正确的函数调用语句是______________,输入数据的方式是_________________。14若有以下定义的语句,为使变量c1得到字符’A’,变量c2得到字符’B’,正确的格式输入形式是__________。charc1,c2;scanf("%4c%4c",&c1,&c2);三、完善程序题:1.输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321)。#include<stdio.h>voidmain(){intx,a,b,c;printf("请输入一个三位数:");scanf("%d",&x);a=x/100;;;printf("反序为:%d%d%d",a,b,c);}2.编程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf函数输出这两个字符。#include<stdio.h>voidmain(){charc1,c2;printf("请输入两个字符给c1和c2:\n");;;printf("用putchar函数输出结果为:\n");;;printf("\n用printf函数输出结果为:\n");;}四、程序阅读与分析题:25.以下程序的执行结果是____。#include<stdio.h>voidmain(){charc='A'+10;printf("c=%c\n",c);}[解答]:c=K。19.以下程序的输出结果为:____________。main(){floata=3.14,b=3.14159;printf(“%f,%5.3f\n”,a,b);}五、编程题1.从键盘上输入一个大写字母,要求改用小写字母输出。2.请编写一个程序,能显示出以下两行文字。Iamastudent.IloveChina.第四章选择结构程序设计一、选择题1.下列运算符中优先级最高的是。A)>B)+C)&&D)!=2.以下关于运算符优先级的描述中,正确的是。A)!(逻辑非)>算术运算>关系运算>&&(逻辑与)>||(逻辑或)>赋值运算B)&&(逻辑与)>算术运算>关系运算>赋值运算C)关系运算>算术运算>&&(逻辑与)>||(逻辑或)>赋值运算D)赋值运算>算术运算>关系运算>&&(逻辑与)>||(逻辑或)3.逻辑运算符的运算对象的数据类型。A)只能是0或1B)只能是.T.或.F.C)只能是整型或字符型D)任何类型的数据4.能正确表示x的取值范围在[0,100]和[-10,-5]内的表达式是。A)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)B)(x>=-10)&&(x<=-5)||(x>=0)&&(x<=100)C)(x>=-10)&&(x<=-5)&&(x>=0)&&(x<=100)D)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)5.判断字符型变量ch为大写字母的表达式是。A)’A’<=ch<=’Z’B)(ch>=’A’)&(ch<=’Z’)C)(ch>=’A’)&&(ch<=’Z’)D)(ch>=’A’)AND(ch<=’Z’)6.以下if语句书写正确的是。A)if(x=0;)B)if(x>0)printf(”%f”,x);{x=x+1;printf(”%f”,x);}elseprintf(”%f”,-x);elseprintf(”%f”,-x);C)if(x>0);D)if(x>0){x=x+1;printf(”%f”,x);}{x=x+1;printf(”%f”,x)}elseprintf(”%f”,-x);elseprintf(”%f”,-x);7.分析以下程序:main(){intx=5,a=0,b=0;if(x=a+b)printf(“****\n”);elseprintf(“####\n”);以上程序。A)有语法错,不能通过编译B)通过编译,但不能连接C)输出****D)输出####8.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是。main(){intx;scanf(“%d”,&x);if(x++>5)printf(“%d”,x);elseprintf(“%d\n”,x--);}A)7和5B)6和3C)7和4D)6和49.假定所有变量均已正确说明,下列程序段运行后x的值是。a=b=c=0;x=35;if(!a)x=-1;elseif(b);if(c)x=3;elsex=4;A)34B)4C)35D)310.以下关于运算符优先顺序的描述正确的是。A)关系运算符<算术运算符<赋值运算符<逻辑运算符B)逻辑运算符<关系运算符<算术运算符<赋值运算符C)赋值运算符<逻辑运算符<关系运算符<算术运算符D)算术运算符<关系运算符<赋值运算符<逻辑运算符11.能正确表示a>=10或a<=0的关系表达式是。A)a>=10ora<=0B)a>=10|a<=0C)a>=10&&a<=0D)a>=10||a<=012.以下不正确的if语句形式是。A)if(x>y&&x!=y);B)if(x==y)x+=y;C)if(x!=y)scanf(“%d”,&x)elsescanf(“%d”,&y);D)if(x<y){x++;y++;}13.以下if语句中语法错误的是。A)if(a>b)printf(“%f”,a);B)if(a>b)printf(“%f”,a);elseprintf(“%f”,b);C)if(a>b)printf(“%f”,a)D)if(a>b)printf(“%f”,b);elseprintf(“%f”,b);elseprintf(“%f”,a);二、填空题1.在C语言中,对于if语句,else子句与if子句的配对约定是。3.以下两条if语句可合并成一条if语句为。if(a<=b)x=1;elsey=2;if(a>b)printf("****y=%d\n",y);elseprintf("####x=%d\n",x);三、完善程序题:1.以下程序对输入的一个小写字母,将字母循环后移5个位置后输出。如‘a’变成‘f’,‘w’变成‘b’。请在内填入正确的内容。#include<stdio.h>voidmain(){charc;c=getchar();if(c>=’a’&&c<=’u’);elseif(c>=’v’&&c<=’z’);putchar(c);}2.以下程序对输入两个整数,按从大到小的顺序输出。请在____内填入正确的内容。#include<stdio.h>voidmain(){intx,y,z;scanf(“%d,%d”,&x,&y);if(){z=x;}printf(“%d,%d”,x,y);}四、程序阅读与分析:1.分析下面的程序,写出程序实现的功能:main(){floata,b,c,t;scanf(“%f,%f,%f”,&a,&b,&c);if(a<b) {t=a;a=b;b=t;}if(a<c){t=a;a=c;c=t;}if(b<c){t=c;b=c;c=t;}printf(“%f,%f,%f”,a,b,c);}2.分析下面的程序,写出程序的运行结果:main(){inta=2,b=3,c;c=a;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;printf(“%d\n”,c);}五、编程题4.有一函数,其函数关系如下,试编程求对应于每一自变量的函数值。x2(x<0)y=-0.5x+10(0x<10)x-(x10)5.编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩。设:90分以上为‘A’;80~89分为‘B’;70~79分为‘C’;60~69分为‘D’;60分以下为‘E’。第五章循环结构程序设计一、选择题1.while循环语句中,while后一对圆括号中表达式的值决定了循环体是否进行,因此,进入while循环后,一定有能使此表达式的值变为的操作,否则,循环将会无限制地进行下去。A)0B)1C)成立D)22.在do-while循环中,循环由do开始,用while结束;必须注意的是:在while表达式后面的不能丢,它表示do-while语句的结束。A)0B)1C);D),3.for语句中的表达式可以部分或全部省略,但两个不可省略。但当三个表达式均省略后,因缺少条件判断,循环会无限制地执行下去,形成死循环。A)0B)1C);D),4.程序段如下intk=-20;while(k=0)k=k+1;则以下说法中正确的是。A)while循环执行20次B)循环是无限循环C)循环体语句一次也不执行D)循环体语句执行一次5.程序段如下intk=1;while(!k==0){k=k+1;printf("%d\n",k);}说法正确的是。A)while循环执行2次B)循环是无限循环C)循环体语句一次也不执行D)循环体语句执行一次6.以下for循环是。for(a=0,b=0;(b!=123)&&(a<=4);a++)A)无限循环B)循环次数不定C)执行4次D)执行5次7.程序段如下intk=0;while(k++<=2);printf("last=%d\n",k);则执行结果是last=。A)2B)3C)4D)无结果8.以下程序的输出结果。main(){intn=0;while(n++<=1)printf("%d\t",n);printf("%d\n",n);}A)123B)012C)112D)1229.当输入为"quert?"时,下面程序的执行结果是。#include<stdio.h>main(){charc;c=getchar();while((c=getchar())!='?')putchar(++c);}A)QuertB)vfsuC)quert?D)rvfsu?10.当输入为"quert?"时,下面程序的执行结果是。#include<stdio.h>main(){while(putchar(getchar())!='?');}A)quertB)RvfsuC)quert?D)rvfsu?11.在C语言的循环语句for,while,do-while中,用于直接中断最内层循环的语句是。A)swichB)continueC)breakD)if12.若i,j已定义为int型,则以下程序段中循环体的总的执行次数是。for(i=5;i;i--)for(j=0;j<4;j++){}A)20B)24C)25D)3013.有如下程序段,其执行结果为。for(n=10;n>7;n--)printf(“%d\n”,n);A)10B)9C)10D)9989887877614.循环语句中的for语句,其一般形式如下:for(表达式1;表达式2;表达式3)语句其中表示循环条件的是。A)表达式1B)表达式2C)表达式3D)语句二、填空题1.while语句的特点是(1),do-while语句的特点是(2)。2.将for(表达式1;表达式2;表达式3)语句改写为while语句是。3.break语句的功能是。4.break语句只能用于(1)语句和(2)语句中。5.continue语句的作用是,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。6.在循环中,continue语句与break语句的区别是:continue语句只是(1),break语句是(2)。7.循环的嵌套是指。8.要使以下程序段输出10个整数,请填入一个整数:for(i=0;i<=;printf("%d\n",i+=2));9.goto语句的用途是和。10.while语句的特点是,do_while语句的特点是。11.把for(表达式1;表达式2;表达式3);改写为等价的while语句为。12.语句标号由标识符表示,由,和组成。第一个字符必须是字母或下划线。三、完善程序题:1.下面程序的功能是把316表示为两个加数分别能被13和11整除。请在内填入正确内容。#include<stdio.h>voidmain(){inti=0,j,k;do{i++;k=316-13*i;}while();j=k/11;printf(“316=13*%d+11*%d”,i,j);}2.从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束。请在内填入正确内容。#include<stdio.h>voidmain(){floatx,amax,amin;scanf(“%f”,&x);amax=x;amin=x;while(){if(x>amax)amax=x;if()amin=x;scanf(“%f”,&x);}printf("amax=%f\namin=%f\n",amax,amin);}四、程序阅读与分析题:1.分析下面的程序,写出程序运行的结果并说明for语句的循环次数。#include<stdio.h>voidmain(){inti,j,a=0;for(i=0;i<2;i++){for(j=0;j<4;j++){if(j%2)break;a++;}a++;}printf(“%d\n”,a);}2.分析下面的程序,写出程序运行的结果。main(){ints,i;for(s=0,i=1;i<3;i++,s+=i);printf("%d\n",s);}五、编程题1.编程实现用“辗转相除法”求两个正整数的最大公约数。2.一个数如果恰好等于它的因子之和(除自身外),则称该数为完全数,例如:6=1+2+3,6就是完全数,请编写一程序,求出1000以内的整数中的所有完全数。其中1000由用户输入。第六章数组一、选择题1.在C语言中,引用数组元素时,其数组下标的数据类型允许是。A)整型常量B)整型常量或整型表达式C)整型表达式D)任何类型的表达式2.以下对一维整型数组a的正确说明是。A)inta(10);B)intn=10,a[n];C)intn;scanf(“%d”,&n);inta[n];D)#defineSIZE10inta[SIZE];3、以下能对一维数组a进行正确初始化的语句是。A)inta[10]=(0,0,0,0,0);B)inta[10]={};C)inta[]={0};D)inta[10]={10*1};4.不是给数组的第一个元素赋值的语句是。A)inta[2]={1};B)inta[2]={1*2};C)inta[2];scanf(“%d”,a);D)a[1]=1;5.下列定义正确的是。A)staticinta[]={1,2,3,4,5}B)intb[1]={2,5}C)inta(10)D)int4e[4]6.若有说明inta[][4]={0,0};则下列叙述不正确的是。A)数组a的每个元素都可以得到初值0B)二维数组a的第一维的大小为1C)因为对二维数组a的第二维大小的值除以初值个数的商为1,故数组a的行数为1D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值7.设有charstr[10],下列语句正确的是。A)scanf("%s",&str);B)printf("%c",str);C)printf("%s",str[0]);D)printf("%s",str);8.下列说法正确的是。A)在C语言中,可以使用动态内存分配技术定义元素个数可变的数组B)在C语言中,数组元素的个数可以不确定,允许随机变动C)在C语言中,数组元素的数据类型可以不一致D)在C语言中,定义了一个数组后,就确定了它所容纳的具有相同数据类型元素的个数9.假设array是一个有10个元素的整型数组,则下列写法中正确的是。A)array[0]=10B)array=0C)array[10]=0D)array[-1]=010.下面几个字符串处理表达式中能用来把字符串str2连接到字符串str1后的一个是:。A)strcat(str1,str2);B)strcat(str2,str1);C)strcpy(str1,str2);D)strcmp(str1,str2);11.设有两字符串“Beijing”、“China”分别存放在字符数组str1[10],str2[10]中,下面语句中能把“China”连接到“Beijing”之后的为:。A)strcpy(str1,str2);B)strcpy(str1,“China”);C)strcat(str1,“China”);D)strcat(“Beijing”,str2);12.若有二维数组a[m][n],则数组中a[I][j]之前的元素的个数为。A)j*m+IB)I*n+jC)I*m+j+1D)I*n+j+113.判断字符串a和b是否相等,应当使用。A)if(a==b)B)if(a=b)C)if(strcpy(a,b))D)if(strcmp(a,b))14.若有如下定义和语句:chars[12]=“abook!”;printf(“%d”,strlen(s));则输出结果是:。A)12B)10C)7D)615.若有说明:inta[3][4]={0};则下面正确的叙述是:。A)只有元素a[0][0]可以得到初值0B)此说明语句不正确C)数组a中每个元素均可得到初值0D)数组a每个元素均可得到初值,但值不一定为0二、填空题1.数组名定名规则和变量名相同,遵循定名规则。2.对于一维数组的定义“类型说明符数组名[常量表达式]”,其中常量表达式可以包括和,不能包含。3.在C语言中,引用数组只能通过数组元素来实现,而不能通过整体引用来实现。4.如果要使一个内部数组在定义时每个元素初始化值为0,但不进行逐个赋值,将其说明成存储类型即可。5.在C语言中,二维数组中元素排列的顺序是。6.对与数组a[m][n]来说,使用数组的某个元素时,行下标的最大值是,列下标的最大值是。7.在C语言中,将字符串作为处理。8.在C语言中,数组的首地址是。三、完善程序题:1.以下程序是求矩阵a,b的和,结果存入矩阵c中并按矩阵形式输出。请填空:main(){inta[3][4]={{7,5,-2,3},{1,0,-3,4},{6,8,0,2}}; intb[3][4]={{5,-1,7,6},{-2,0,1,4},{2,0,8,6}}; inti,j,c[3][4]; for(i=0;i<3;i++)for(j=0;j<4;j++) c[i][j]=(1); for(i=0;i<3;i++){for(j=0;j<4;j++) printf(“%3d”,c[i][j]); (2);}}2.打印以下杨辉三角形.(要求打印出10行) main(){inta[10][10],i,j;1for(i=0;i<10;i++)11{(1)(2)}121for(i=2;i<10;i++)1331for(j=1;j<i;j++)14641a[i][j]=(3);………for(i=0;i<10;i++){for(j=1;j<=i;j++)printf(“%5d”,a[i][j]);printf(“\n”);}}四、程序阅读与分析题:1、分析下面程序,写出程序运行结果。main(){inta[]={1,2,3,4},i,j,s=0;j=1;for(i=3;i<=0;i--){s=s+a[i]*j;j=j*10;}printf(“s=%d\n”,s);}2.分析下面程序,写出程序运行结果。main(){inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},b[4][3];inti,j;for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];for(i=0;i<4;i++){for(j=0;j<3;j++)printf(“%5d”,b[i][j]);printf(“\n”);}}五、编程题1.用起泡法对10个数排序。7.求Fibonacci数列中前20个数,Fibonacci数列的前两个数为1,1,以后每一个数都是前两个数之和。Fibonacci数列的前n个数为1,1,2,3,5,8,13,用数组存放数列的前20个数,并输出之(按一行5个输出)。第七章函数一、选择题1.以下函数定义正确的是:。A)doublefun(intx,inty)B)doublefun(intx;inty)C)doublefun(intx,inty);D)doublefun(intx,y)2.C语言规定,简单变量作实参,它与对应形参之间的数据传递方式是:。A)地址传递;B)单向值传递;C)双向值传递;D)由用户指定传递方式3.以下关于C语言程序中函数的说法正确的是:。A)函数的定义可以嵌套,但函数的调用不可以嵌套;B)函数的定义不可以嵌套,但函数的调用可以嵌套;C)函数的定义和调用均不可以嵌套;D)函数的定义和点用都可以嵌套。4.以下正确的函数形式是:。A)doublefun(intx,inty)B)fun(intx,y){z=x+y;returnz;}{intz;returnz;}C)fun(x,y)D)doublefun(intx,inty){intx,y;doublez;{doublez;z=x+y;returnz;}z=x+y;returnz;}5.以下说法不正确的是:。C语言规定A)实参可以是常量、变量或表达式B)形参可以是常量、变量或表达式C)实参可以是任意类型D)形参应与其对应的实参类型一致6.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是。A)float型B)int型C)long型D)double型7.以下错误的描述是。函数调用可以A)出现在执行语句中B)出现在一个表达式中C)做为一个函数的实参D)做为一个函数的形参8.若用数组名作为函数调用的实参,传递给形参的是。A)数组的首地址B)数组第一个元素的值C)数组中全部元素的值D)数组元素的个数9.以下正确的说法是。如果在一个函数中的复合语句中定义了一个变量,则该变量A)只在该复合语句中有效B)在该函数中有效C)在本程序范围内有效D)为非法变量10.以下不正确的说法为。A)在不同函数中可以使用相同名字的变量B)形式参数是局部变量C)在函数内定义的变量只在本函数范围内有效D)在函数内的复合语句中定义的变量在本函数范围内有效11.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为。A)自动(auto)B)静态(static)C)外部(extern)D)寄存器(register)12.。A)定义函数时,形参的类型说明可以放在函数体内B)return后边的值不能为表达式C)如果函数值的类型与返回值类型不一致,以函数值类型为准D)如果形参与实参的类型不一致,以实参类型为准13.以下正确的说法是。A)用户若需调用标准库函数,调用前必须重新定义B)用户可以重新定义标准函数,若如此,该函数将失去原有含义C)系统根本不允许用户重新定义标准库函数D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调14.以下正确的说法是。在C语言中:A)实参和与其对应的形参各占用独立的存储单元B)实参和与其对应的形参共占用一个存储单元C)只有当实参和与其对应的形参同名时才共占用存储单元D)形参是虚拟的,不占用存储单元15.若使用一维数组名作函数实参,则以下正确的说法是。A)必须在主调函数中说明此数组的大小B)实参数组类型与形参数组类型可以不匹配C)在被调函数中,不需要考虑形参数组的大小D)实参数组名与形参数组名必须一致16.有如下函数调用语句func(rec1,rec2+rec3,(rec4,rec5);该函数调用语句中,含有的实参个数是。A)3B)4C)5D)有语法错二、填空题1.C语言规定,可执行程序的开始执行点是。2.在C语言中,一个函数一般由两个部分组成,它们是和。3.函数swap(intx,inty)可完成对x和y值的交换。在运行调用函数中的如下语句后,a[0]和a[1]的值分别为,原因。4.函数swap(arr,n)可完成对arr数组从第1个元素到第n个元素两两交换。在运行调用函数中的如下语句后,a[0]和a[1]的值分别为,原因。5.设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部。要求形参名为b。main(){doubles[10][22];intn;┆fun(s);┆}6.返回语句的功能是从返回。三、完善程序题:4.以下程序的运行结果是输出如下图形。请填空。**************************#include<stdio.h>voida(inti){intj,k;for(j=0;j<=7-i;j++)printf(““);for(k=0;k<(1);k++)printf(“﹡”);printf(“\n”);}main(){inti;for(i=0;i<3;i++)(2);for(i=3;i>=0;i--)(3);}5.函数fun的功能是:使字符串str按逆序存放。voidfun(charstr[]){charm;inti,j;for(i=0,j=strlen(str);i<(1);i++,j--){m=str[i];str[i]=(2);str[j-1]=m;}printf("%s\n",str);}四、读程序写结果题1.分析下面程序,写出程序运行结果。main(){inti=5;printf(“%d\n”,sub(i));}sub(intn){inta;if(n==1)a=1;elsea=n+sub(n-1);return(a);}2.分析下面程序,写出程序运行结果。voidfun(){staticinta=0;a+=2;printf(“%d”,a);}main(){intcc;for(cc=1;cc<4;cc++)fun()printf(“\n”);}五、编程题1.编写一个函数计算任一输入的整数的各位数字之和。主函数包括输入输出和调用该函数。2.函数的递归调用计算阶乘。第八章指针一、选择题1.变量的指针,其含义是指该变量的。A)值B)地址C)名D)一个标志2.设有说明int(﹡ptr)[M];其中ptr是。A)M个指向整型变量的指针B)指向M个整型变量的函数指针C)一个指向具有M个整型元素的一维数组的指针D)具有M个指针元素的一维指针数组,每个元素都只能指向整型量3.选择出i的正确结果。inti;char﹡s=〞a\045+045\ˊb〞;for(i=0;s++;i++);A)5B)8C)11D)124.如下程序的执行结果是。#include<stdio.h>main(){inti;char﹡s=〞a\\\\\n〞;for(i=0;s[i]!=’\0’;i++)printf(〞%c〞,﹡(s+i));}A)aB)a\C)a\\D)a\\\\5.如下程序的执行结果是。#include<stdio.h>main(){staticinta[]={1,2,3,4,5,6};int﹡p;p=a;﹡(p+3)+=2;printf(〞%d,%d\n〞,﹡p,﹡(p+3));}A)1,3B)1,6C)3,6D)1,46.如下程序的执行结果是。#include<stdio.h>main(){staticinta[][4]={1,3,5,7,9,11,13,15,17,19,21,23};int(﹡p)[4],i=1,j=2;p=a;printf(〞%d\n〞,﹡(﹡(p+i)+j));}A)9B)11C)13D)177.若有以下定义,则对a数组元素的正确引用是。inta[5],﹡p=a;A)﹡&a[5]B)a+2C)﹡(p+5)D)﹡(a+2)8.若有以下定义,则对a数组元素地址的正确引用是。inta[5],﹡p=a;A)p+5B)﹡a+1C)&a+1D)&a[0]9.若有定义:inta[2][3];则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素值的正确引用为。A)﹡(﹡(a+i)+j)B)(a+i)[j]C)﹡(a+i+j)D)﹡(a+i)+j10.若有定义:inta[2][3];则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的正确引用为。A)﹡(a[i]+j)B)(a+i)C)﹡(a+j)D)a[i]+j11.设有下面的程序段:chars[]=〞china〞;char﹡p;p=s;则下列叙述正确的是。A)s和p完全相同B)数组s中的内容和指针变量p中的内容相等C)s数组长度和p所指向的字符串长度相等D)﹡p与s[0]相等12.若有语句:chars1[]=〞string〞,s2[8],﹡s3,﹡s4=〞string2〞;则对库函数strcpy的错误调用是。A)strcpy(s1,〞string2〞);B)strcpy(s4,〞string1〞);C)strcpy(s3,〞string1〞);D)strcpy(s1,s2);13.若有定义:inta[5];则a数组中首元素的地址可以表示为。A)&aB)a+1C)aD)&a[1]14.以下与int﹡q[5];等价的定义语句是。A)intq[5]B)int﹡qC)int﹡(q[5]);D)int(﹡q)[5];15.若有以下定义,则﹡(p+5)表示。A)元素a[5]的地址B)元素a[5]的值C)元素a[6]的地址D)元素a[6]的值16.若有定义:int﹡p[4];则标识符p。A)是一个指向整型变量的指针B)是一个指针数组名C)是一个指针,它指向一个含有四个整型元素的一维数组D)说明不合法17.若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是。A)a,point,*&aB)&*a,&a,*pointC)*&point,*point,&aD)&a,&*point,point18.若有说明:int*p,m=5,n;以下正确的程序段是。A)p=&n;scanf(“%d”,&p);B)p=&n;scanf(“%d”,*p);C)scanf(“%d”,&n);*p=n;D)p=&n;*p=m;19.下面程序段的运行结果是。charstr[]=“ABC”,*p=str;printf(“%s\n”,*(p+1));A)66B)BCC)字符‘B’的地址D)字符‘B’20.已有定义intk=2,*ptr1,*ptr2;且ptr1和ptr2均已指向同一个变量k,下面不正确执行的赋值语句是:。A)k=*ptr1+*ptr2;B)ptr2=k;C)ptr1=ptr2;D)k=*ptr1*(*ptr2);二、填空题1.若有定义:inta[2][3]={2,4,6,8,10,12};则﹡(&a[0][0]+2﹡2+1)的值是,﹡(a[1]+2)的值是。2.完成以下有关数组描述的填空。(1)C语言中,数组名是一个不可改变的,不能对它进行赋值运算。(2)数组在内存中占用一段连续的存储空间,它的首地址由表示。3.定义语句int﹡f();和int(﹡f)();的含义分别为和。4.在C程序中,指针变量能够赋值或值。5.若定义char*p=“abcd”;则printf(“%d”,*(p+4));的结果为。6.以下函数用来求出两整数之和,并通过形参将结果传回,请填空。voidfunc(intx,inty,){*z=x+y;}7.若有以下定义,则通过指针p引用值为98的数组元素的表达式是。intw[10]={23,54,10,33,47,98,72,80,61},*p=w;8.inta[10];则a[i]的地址可表示为或,a[i]可表示为。9.在C语言中,对于二维数组a[i][j]的地址可表示为或。其中,对于a[i]来说,它代表,它是一个。10.一个指针变量P和数组变量a的说明如下:inta[10],*p;则p=&a[1]+2的涵义是指针p指向数组a的第个元素。11.一个数组,其元素均为指针类型数据,这样得数组叫。12.16.int*p[4]表示一个,int(*p)[4]表示。13.若有以下定义和语句intw[10]={23,54,10,33,47,98,72,80,61},*p;p=w;则通过指针p引用值为98的数组元素的表达式是。三、完善程序题:1.以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。请填空。#include<stdio.h>main(){int﹡a,﹡b,﹡c,mun,x,y,z;a=&x;b=&y;c=&z;printf(〞输入3个整数:〞);scanf(〞%d%d%d〞,a,b,c);printf(〞%d,%d,%d\n〞,﹡a,﹡b,﹡c);num=﹡a;if(﹡a>﹡b)(1);if(num>﹡c)(2);printf(〞输出最小整数:%d\n〞,num);}2.下面程序是把从终端读入的一行字符作为字符串放在字符数组中,然后输出。请填空。inti;chars[80],﹡p;for(i=0;i<79;i++){s[i]=getchar();if(s[i]==ˊ\nˊ)break;}s[i]=(1);p=(2);while(﹡p)putchar(﹡p++);四、程序阅读与分析题:1.分析出以下程序所实现的功能,写出输出结果。#include<stdio.h>main(){inti,j;int﹡p,﹡q;i=2;j=10;p=&i;q=&j;﹡p=10;﹡q=2;printf(〞i=%d,j=%d\n〞,i,j);}2.分析出以下程序所实现的功能。#include<stdio.h>#include<string.h>voidfunct(int(*array)[4],intm,intn){inti,j,max,line=0,col=0;int(*p)[4];max=array[0][0];p=array;for(i=0;i<m;i++)for(j=0;j<n;j++)if(max<p[i][j]){max=p[i][j];line=i;col=j;}printf(“max=%d,line=%d,col=%d”,max,line,col);}main(){intdata[3][4],i,j;printf(“\nInput12integer:\n”);for(i=0;i<3;i++)for(j=0;j<4;j++)scanf(“%d”,&data[i][j]);funct(data,3,4);}五、编程题1.编写一个程序计算一个字符串的长度。2.编一程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该串。请用指针完成。第九章结构体与共用体一、选择题1.在说明一个结构体变量时系统分配给它的存储空间是。A)该结构体中第一个成员所需存储空间B)该结构体中最后一个成员所需存储空间C)该结构体中占用最大存储空间的成员所需存储空间D)该结构体中所有成员所需存储空间的总和2.若有以下说明和语句:structworker{intno;char﹡name;}work,﹡p=&work;则以下引用方式不正确的是。A)work.noB)(﹡p).noC)p->noD)work->no3.有如下定义:structdate{intyear,month,day;};structworklist{charname[20];charsex;structdatebirthday;}person;对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是。A)year=1958B)birthday.year=1958C)person.birthday.year=1958D)person.year=19584.以下对结构体类型变量的定义中不正确的是。A)#defineSTUDENTstructstudentB)structstudentSTUDENT{intnum;{intnum;floatage;floatage;}std1;}std1;C)structD)struct{intnum;{intnum;floatage;floatage;}student;}std1;structstudentstd1;5.设有以下说明语句structstu{inta;floatb;}stutype;则下面的叙述不正确的是。A)struct是结构体类型的关键字B)structstu是用户定义的结构体类型C)stutype是用户定义的结构体类型名D)a和b都是结构体成员名6.C语言结构体类型变量在程序执行期间。A)所有成员一直驻留在内存中B)只有一个成员主留在内存中C)部分成员驻留在内存中D)没有成员驻留在内存中10.设有以下说明语句,则下面的叙述中不正确的是。structex{intx;floaty;charz;}example;

温馨提示

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

评论

0/150

提交评论