C语言习题集(大一)_第1页
C语言习题集(大一)_第2页
C语言习题集(大一)_第3页
C语言习题集(大一)_第4页
C语言习题集(大一)_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1、高级程序设计语言(南京邮电大学通达学院专用) 练习与答案传媒技术学院2006年3月第三章 数据类型、运算符与表达式一、选择题1、C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符 。必须为字母 B、 必须为下划线 必须为字母或下划线 D、 可以是字母、数字和下划线中任一种字符若有以下定义:char a; int b; float c; double d;则表达式a*b+d-c值的类型为 。A、 float B、 int C、 char D、 double 3、C语言规定:在一个源程序中,main函数的位置 。A、 必须在最开始 B、 必须在系统调用的库函数的后面C、 可以任意

2、D、 必须在最后4、C 语言提供的基本数据类型是 。 A、数组、实型、逻辑型 B、整型、实型、逻辑型C、数组、结构、逻辑型 D、整型、实型、字符型5、Turbo C语言对四种基本变量的存储空间分配从小到大依次为: A、int char float double B、char int float doubleC、double float char int D、char double int float6、C语言的源程序文件扩展名及生成的执行程序的文件扩展名是: A、c 和 h B、c 和 com C、c 和 exe D、cpp 和 obj7、如 a=12, n=5 表达式 a%=(n%=2)+4

3、 运算后的值是: A、0B、1C、2D、48、如 char c=B; 进行运算 c=c-A 后 c的值为: A、0 B、1 C、66 D、19、已知 int x=19,y=3;则下列语句的输出结果是 printf(“%dn”,z=(x/y,x%y);A、4B、3C、1D、010、C语言中下列运算符的操作数必须是int类型的运算是 A、%B、/C、-D、+11、请选出合法的C语言赋值语句 A、a=b=58 B、i+;C、a=58,b=58D、k=int(a+b)12、将十六进制数F49转换成十进制数是 A、4038 B、2573C、3913D、191213、下面程序的输出是 main( ) in

4、t x = 023; printf( %dn,- - x):A、17B、18C、23D、2414、下面程序的输出是 main( ) int a; printf(%dn;(a=3*5,a*4,a+5);A、65B、20C、15D、1015、已知字母a的ASCII十进制代码为97,则执行以下语句后的输出为 char a=a;a-;printf(%d,%cn,a+2-0,a+3-0);A、b,c B、a-运算不合法,故有语法错C、98,cD、格式描述和输出项不匹配,输出无定值16、在C语言中,下面符号串中能用作变量名的标识符为 。A、 auto B、 puts C、 1*num D、 2-and17

5、、以下不正确的是 。A、一个C源程序可有一个或多个函数组成B、一个C源程序必须包含一个main函数C、C程序组成的单位是函数D、在C程序中,注释说明只能为与一条语句的后面。二、填空题1、常量有很多不同的类型,如0、-3是 常量,a、D是 常量,如#define PRICE 30中的PRICE,我们通常称它为 常量。2、值可以改变的量称为变量,C语言中,要求对用到的变量作强制定义,也就是先 ,后 。3、和其他高级语言一样,用来标识变量名、符号常量明、函数名、数组明、类型名、文件名的有效字符序列称为 ,在C语言中,它是由 、 和 三种字符组成,且第一个字符必须为 或 4、C语言中,字符常量n、t、

6、101都有着特殊含义,所以又被称作 ,其中n表示 ,101表示 ,它们各占内存空间 个字节。5、算术运算符有+、-、*、/、%,其中%的两侧的操作数必须为 型数据6、设x=3.1,y=5.2,则(int)x+y的值为 ,(int)(x+y)的值为 7、int a=12;a+=a-=a*a,a的值为 8、表达式a=(b=9)/(c=2)的值为 9、设x=2.5,a=7,y=4.7,表达式x+a%3*(int)(x+y)%2/4的值为 。10、下面C程序的输出是: 。 main() int i=8,j=10,m,n; m=+i, n=j-; printf (%d,%d,%d,%dn,i,j,m,n

7、); 11、设有说明:int j;float x;则执行语句“x=j=4.8;”后,x的值为 。12、下面C程序的输出是: 。 main() char c=a; int i=65; printf (%c,%d,%c,%dn,c,c,i,i);第四章最简单的C程序设计顺序程序设计一、选择题1、该源程序执行后,屏幕上显示什么 ? void main() int a; float b; a=4; b=9.5; printf(a=%d,b=%4.2fn,a,b); A、a=%d,b=%fn B、a=%d,b=%f C、a=4,b=9.50 D、2、若a为整型变量,且有以下语句 a=-017L; pri

8、ntf(%dn,a); 则下面哪个说法是正确的 ? A、赋值不合法 B、输出值为-17 C、输出为不确定值 D、输出值为-153、若ch为char型变量,a为int型变量,(已知字符a的ASCII十进制代码为97)则执行以下语句后的输出为哪一个 ? char ch; int a; ch=a; a=12; printf(%x,%o,ch,ch,a); printf(k=%dn,a); A、61,141,12,k=%d B、输出项与格式描述符个数不符,输出为零值或不定值 C、61,141,k=%d D、61,141,k=%124、若k,g均为int型变量,则以下语句的输出为哪一项 ? int k,

9、g; k=017; g=111; printf(%d,k); printf(%xn,g); A、15,6f B、f,6f C、f,111 D、15,1115、执行以下程序: void main() char str13; scanf (%s ,str); printf(%s, str); 若输入数据为:abcd1234 efgh则程序的输出结果是 。A、abcd B、abcd1234 efgh C、abcd1234 D、abcd1234efgh6、以下叙述中正确的是 。A、输入项可以是一个实型常量,如: scanf(%f,3.5); B、只有格式控制,没有输入项,也能正确输入数据到内存,例如:

10、 scanf(a=%d ,b=%d) C、当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如: scanf(%4.2f,&d); D、当输入数据时,必须指明变量地址,例如: scanf(%f,&f); 7、以下程序段输出结果是 。int a=10, b=11, c=12, s;s=a+=10&b-=2&c+; printf(%d,%d,%d,%d,s,a,b,c);A、0,11,10,13 B、1,11,10,13 C、0,11,10,12 D、1,11,10,128、在C语言中,如果下面的变量都是int类型,则输出的结果是 。sum=pad=5; pad=sum + + ,pad

11、 + + , + + pad;printf(%dn,pad);A、7 B、6 C、5 D、49、已知在ASCII代码中,字母A的序号为65,以下程序的输出的结果是 。# include main() char c1=A, c2=Y; printf(%d,%dn,c1,c2); A、 因输出格式不合法,输出错误信息 B、65,90 C、A,Y D、65,8910、以下程序的输出结果是 。 # include main() printf(%dn,NULL); A、不确定的(因变量无定义) B、0 C、-1 D、111、以下程序的输出结果是 。 # include main() int a=2,c=

12、5; printf(a=%d,b=%dn,a,c); A、 a=%2,b=%5 B、 a=2,b=5 C、 a=%d,b=%d D、 a=%d,b=%d12、下列表达式中,错误的是 。A、 B、k+j C、a+bc+d?a:b D、x*=y+2513、若变量已正确说明为float类型,要通过语句scanf(%f %f %f ,&a,&b,&c);给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是 。A、102233B、10.0,22.0,33.0C、10.022.0 33.0D、10 223314、设有说明“int x=2,y=3;”,则“+xy- ? x:y;”的值为 。A

13、、 1 B、2C、3D、415、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是 。A、INPUT x、y、z;B、scanf(%d%d%d,&x,&y,&z);C、scanf(%d%d%d,x,y,z);D、read(%d%d%d,&x,&y,&z);。16、以下程序的输出结果是 。main() int a=3;printf(%dn,(a+a-=a*a) );A、-6B、12 C、0 D、-1217、已知字母A的ASC码为十进制的65,下面程序的输出是 。A、67,D B、B,C C、C,D D、不确定的值main() char ch1,ch2;ch1=A+5-

14、3;ch2=A+6-3;printf(%d,%cn,ch1,ch2);18、有如下程序,输入数据12345fff678后,变量x和y的值是 。main() int x; float y; scanf(“%3d%f”,&x,&y);A 、x=12345 ;y=678 B C、 x=123 ; y不定 D、输入格式有误 19、设有如下的变量定义: int i =8,k ,a,b ; unsigned long w=5; double x=1,42,y=5.2; 则以下符合C语言语法的表达式是 。A、 a+=a-=(b=4)*(a=3) B 、x%(-3)C 、a=a*3=2 D、 x+y=floa

15、t(i) 20、设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值: scanf(“i=%d,f=%f”,&i,&f);为了把100和765.12分别赋给i和f,则正确的输入为 。 A、100,765.12 B、 C、100 765.12 D、i=100 f二、填空题简单概念:要输出下列各种类型的数据,应使用什么转换说明符。(答题请打上双引号)字段宽度为4的十进制数应使用%4d,字段宽度为6的十六进制数应使用_ _ ,八进制整数应使用_ _,字段宽度为3的字符应使用_ _,字段宽度为10,保留3位小数的实数应使用_ _,字段宽度为8的字符串应使用 。有一输入函数scanf

16、(%d”, k); 则不能使float类型变量k得到正确数值的原因是 。 printf(%5.3fn,123456.12345);的输出为_。读程序写结果6、_ _ _ _ _。8、设a、b、c为整型数, 且a=2、b=3、c=4, 则执行完以下语句:a*=16+(b+)-(+c);后,a的值是_。 9、若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量b中的值是_。 c=(a-=(b-5); c=(a%11)+(b=3);_。_。_。13、_。#include main() int n; scanf(%o,&n); printf(%dn,n); 完善程序14、以下程序输

17、入三个整数值给a,b,c,程序把b中的值给a,把c中的值给b,把a中的值给c,然后输出a,b,c的值。请填空。 #include main() int temp; printf(Enter a,b,c:); scanf(%d%d%d, ); a=b; b=c; printf(a=%d b=%d c=%dn,a,b,c); 第五章 选择结构程序设计一、选择题1、已知 w=1,x=2,y=3,z=4; 条件表达式“wx?w:yy) B、if (x=y) x+=yC、if (xb)&(n=cd)后此逻辑表达式的值为 。A、 3 B、0 C、2 D、15、选择合法的if语句(int x,m,n;) (

18、 )。A、if(m=n) x+;B、if(m=n) x+;C、if(mn) x+;D、if(m=n) x+;6、下面程序段的执行时从键盘输入字母A,输出结果为 。char ch1;ch1=getchar();switch(ch1)case 65: printf(%c,A);case 66: printf(%c,B);default: printf(%sn,other);A、AB、ABotherC、AotherD、编译错误7、下面程序运行时,若从键盘输入“5”,则输出结果是 。 main( ) int a; scanf(“%d”,&a); if(a+5) printf(“%dn”,a) else

19、 printf(“%dn”,a-);A、 7 B 、6 C 、5 D、48、下面程序的输出是 。 main( ) int x=3,y=4,z=4; printf(“%d,”,(x=y=z)?1:0); printf(“%dn”,z=y&y=x);A、0,1 B、1,0 C、1,1 D、0,09、设有int i,j,k;则表达式i=1,j=2,k=3,i&j&k的值为 。A、1B、2C、3D、010、假定变量均已正确声明,下列程序段运行后x的值是 。a=b=c=0;x=35;if(!a) x-; else if(b) x+;if(c) x=3; else x=4;A、3B、4C、34D、35二、

20、填空题1、为了避免嵌套的if else语句的二义性,C语言规定else 总与 1 组成配对关系. 2、程序#includemain()int a=2,b=7,c=5;switch(a0)case 1:switch(b0)case 1: printf(#);printf(n);break;case 2: printf(&);printf(n);break;case 0:switch(c=5)case 0: printf(*);printf(n);break;case 1: printf();printf(n);break;default:printf($);printf(n);break;def

21、ault:printf(!);printf(n);程序输出的第一行是 2 ,第二行是 3 。3、表达式!10!=0的值是 4 ,“20 x30”的C语言表达式是 5 。4、下列程序的功能是输入“1605”,输出为4:05PM,请完善程序。 main( ) int t,h,m; scanf(“%d”,&t); h=(t/100)%12; if( 6 ) h=12; printf(“%d:”,h); m= 7 ; if(m10) printf(“0”);if(t1200|t=2400)printf(“AM”);else printf(“PM”); 第六章 循环结构一、选择题1、 以下for循环是

22、。for(x=0,y=0;(y!=123)&(x4);x+);A、无限循环 B、循环次数不定 C、执行3次 D、执行4次2、 C语言中 。不能使用do-while语句构成的循环 do-while语句构成的循环必须用break语句才能退出do-while语句构成的循环,当while语句中的表达式值为非零时结束循环。do-while语句构成的循环,当while语句中的表达式值为零时结束循环。3、 执行语句for(i=1;i+4; );后变量i的值是 。A、3 B、4 C、 5 D、不定4、设有程序段 int k=10; while(k=0) k=k-1; 则下面描述中正确的是 。 、while循环

23、执行10次、循环是无限循环 、循环体语句一次也不执行 、循环体语句执行一次 5、设有以下程序段 int x=0,s=0; while(!x!=0) s+=+x; printf(“%d”,s); 则 。、运行程序段后输出为0、运行程序段后输出为1 、程序段中控制表达式是非法的、程序执行无限次6、下面程序段的运行结果是 。 a=1;b=2;c=2; while(abc) t=a;a=b;b=t;c-; printf(“%d,%d,%d,a,b,c); A、1,2,0 B、2,1,0 C、1,2,1 D、2,1,1 7、下面程序段的运行结果是 。x=y=0; while(x15) y+,x+=+y;

24、 printf(“%d,%d,y,x); A、20,7 B、6,12 C、20,8 D、8,20 8、下面程序段的运行结果是 。 int n=0; while(n+=2); printf(“%d,”,n); A、2 B、3 C、4 D、有语法错 9、设有程序段 t=0; while(printf(“*”) t+; if(t+y;x=i+)i=x; B、 for(;x+=i); C、while(l)x+; D、for(i=10;i-)sum+=i; 15、以下描述正确的是 。 A、goto语句只能用于退出多层循环 B、switch语句中不能出现continue语句 C、 只能用continue语

25、句来终止本次循环 D、在循环中break语句不能独立出现 二、填空题1、break语句不能用于_(1)_和_(2)_ 语句之外的任何其他语句中。2、一个循环体内又包含另一个_(3)_ 的循环结构,称为循环的嵌套。3、有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?请填空。 #include main() int day,x1,x2; day=0;x1=1020; while(_(4)_) x2=_(5)_;x1=x2;day+; printf(“day=%dn”,day); 4、下面程序的结果是_(6)_。 #include main() int a,s,n

26、,count; a=2;s=0;n=1;count=1; while(count=0); 7、若for循环用以下形式表示: for(表达式1;表达式2;表达式3)循环体语句则执行语句for(i=0;i3;i+)printf(“*”);时,表达式1执行_(9)_次, 表达式3执行_(10)_次。 8、以下程序的执行结果是 (11) 。#includemain() int i,j,sum=0,m,n=4; for(i=1; i=n; i+) m=1; for(j=1;j=i;j+) m=m*j; sum=sum+m; printf(“sum=%dn”,sum);9、下面程序是打印100以内个数为6

27、且能被3整除的所有数。请填空。 #include main() int i,j; for(i=0; ;i+) j=i*10+6; if(_(12)_)continue; printf(“%d”,j); 10、下面语句执行结果的第一行和最后一行分别是 (13) 、 (14)。int i, j;for (i=0, j=5; i=3; i+,j-) printf (“%dn”, i*j);11、以下程序的执行结果是 (15) main( ) int x; for (x=1;x=10;x+) if (x= = 5) continue; printf(“ %d ”,x); 三、编程题1、把一张100元的

28、钞票换零为一元、二元、五元(每种至少一张),问有几种换法。第七章 数 组一、选择题1、在C语言中,引用数组元素时,其数组下标的数据类型允许是 。A、整型常量 B、整型表达式C、整型常量或整型表达式 D、任何类型的表达式2、以下对一维整型数组a的正确说明是 。A、int a(10); B、int n=10,an;C、int n; D、define SIZE10scanf(%d,&n); int aSIZE;int an3、若有说明:int a10; 则对a数组元素的正确引用是 。A、a10 B、a3.5 C、a(5) D、a10-104、在C语言中,一维数组的定义方式为:类型说明符 数组名 ;A

29、、常量表达式 B、整型表达式C、整型常量或整型表达式 D、整型常量5、以下能对一维数组a进行正确初始化的语句是 。A、int a10=(0,0,0,0,0); B、float a(3,4);C、 int a=0; D、int a10=10*1;6、以下对二维数组a的正确说明是 。A、int a3; B、float a(3,4);C、double a14;D、float a(3)(4);7、若有说明:int a34; 则对a数组元素的正确引用是 。A、a24 B、a1,3 C、a1+10 D、a(2)(1)8、若有说明:int a34; 则对a数组元素的非法引用是 。A、a02*1 B、a13

30、C、a4-20 D、a049、以下能对二维数组a进行正确初始化的语句是 。A、int a2=1,0,1,5,2,3;B、int a3=1,2,3,4,5,6C、int a24=1,2,3,4,5,6;D、int a3=1,0,1,1,1;10、以下不能对二维数组a进行正确初始化的语句是 。A、int a23=0;B、int a3=1,2,0;C、int a23=1,2,3,4,5,6;D、int a3=1,2,3,4,5,6;11、若有说明:int a34=0;则下面正确的叙述是 。A、数组a中每个元素均可得到初值0B、此说明语句不正确C、数组a中各元素都可得到初值,但其值不一定为0D、只有元

31、素a00可得到初值012、以下各组选项中,均能正确定义二维实型数组a的选项是 。A、float a34; B、float a(3,4);float a4; float a34float a3=1,0 float a=0;0;C、foat a34; D、float a34float a4=0,0; float a3;float a4=0,0,0; float a413、下面程序 (每行程序前面的数字表示行号)。1main()23int a3 =3*0;4int i;5for(i=0;i3;i+)scanf(%d&ai);6for(i=1;i3;i+)a0=a0+ai;7printf(%dn,a0

32、);8A、第3行有错误B、第7行有错误C、第5行有错误D、没有错误14、下面程序 (每行程序前面的数字表示行号)。1 main()2 3 float a10=0.0;4 int i;5 for(i=0;i3;i+)scanf(%d&ai;6 for(i=1;i10;i+)a0=a0+ai;7 printf(%fn,a0;8 A、没有错误B、第3行有错误C、第5行有错误D、第7行有错误15、下面程序中有错误的行是 (每行程序前面的数字表示行号)。1main()23int a3=1;4int i;5scanf(%d,a);6for(i=1;i3;i+)a0=a0+ai;7printf(a0=%dn

33、,a0); A、3B、6C、7D、516、若二维数组a有m列,则计算任一元素aij在数组中位置的公式为 。(假设a00位于数组的第一个位置上。)A、i*m+j B、j*m+i C、i*m+j-1 D、i*m+j+117、对以下说明语句的正确理解是 。int a10=6,7,8,9,10A、将5个初值依次赋给a1至a5B、将5个初值依次赋给a0至a4C、将5个初值依次赋给a6至a10D、因为数组长度与初值的个数不相同,所以此语句不正确18、以下不正确的定义语句是 。A、double x5=2.0,4.0,6.0,8.0,10.0;B、int y5=0,1,3,5,7,9;C、char c1=1,

34、2,3,4,5;D、char c2=x10,xa,x8;19、若有说明:int a3=1,2,3,4,5,6,7;则a数组第一维的大小是 。A、2B、3C、4D、无确定值20、若二维数组a有m列,则在aij前的元素个数为 。A、j*m+i B、i*m+j+1 C、i*m+j-i D、i*m+j21、有字符数组a80和b80,则正确的输出语句是 。A、pus(a,b); B、printf(“%s,%s”a,b);C、putchar(a,b); D、puts(a);puts(b);22、判断字符串a和b是否相等,应当使用 。A、if(a=b)B、if(a=b)C、if(strcmp(a,b)D、i

35、f(strcpy(a,b)23、有两个字符数组a,b,则以下正确的输入语句是 。A、gets(a,b)B、scanf(“%s%s”,a,b);C、scanf(“%s%s”,&a,&b);D、gets(“a”);gets(“b”);24、有下面程序段则 。char a3,b=“China”; a=b; printf(“%s”,a);A、编译出错 B、运行后将输出ChiC、运行后将输出Ch D、运行后将输出China二、填空题设有数组 int Arr10;则数组的第五个元素为 (1) ,Arr代表数组的 (2) 。二维数组中;数组元素按 (3) 依次顺序放置在一段 (4) 的计算机内存中。静态数组

36、中,数组各元素初始化为 (5) 。有定义:static int Arr34=1,2,0,4,6,7,8;则初始化后,a11得到值是 (6) ,a22 得到值是 (7) 。对数组Arr1和Arr2初始化后,Arr1和Arr2的维界分别是 (8) 和 (9) 。char Arr1=”ABCDEF”;char Arr2=A,B,C,D,E,F;如果语句 char Str=” x7again0cdnsag123”,StrCpy20;数组Str占有 (10) 字节内存,执行语句strcpy(StrCpy,Str);数组StrCpy的值为 (11) 。若有 int Arr10=0,i; for(i=1;i

37、10;i+) Arri=ArrArrArri-1+1; 则Arr4的值为 (12) 。语句int Arr3=1,2,3,4,5; 错误的原因是 (13) 若数组Arr有m列,则Arrij之前的数组元素个数为 (14) 个。若有Arr4=1,2,3,4,5,6,7,8,9,10;则数组第一维的大小是 (15) 。下列程序错误的原因是 (16) void main()int i;scanf(“%d”,&i);int Arri;下列程序错误的原因是 (17) void main()char Str180,Str280;scanf(“%s”,Str1);scanf(“%s”,Str2);if(Str1

38、=Str2)下列程序错误的原因是 (18) void main()int Arr4=1,2,3,4,i;for(i=0;i=4;i+)printf(“%d”,Arri);下面程序运行结果是 (19) #include#includevoid main()char Arr180=”AB”,Arr280=”LMNP”;int i=0;strcat(Arr1,Arr2);while(Arr1i+!=0) Arr2i=Arr1i;printf(“%s”,Arr2);以下程序执行时,输入:abc,结果是 (20) 。#includevoid main()char Str4;scanf(“%c,%c,%c

39、”,&Str0,&Str1,&Str2);printf(“%s”,Str);以下程序执行时,输入:abc,结果是 (21)。#includevoid main()char Str4;scanf(“%c%c%c”,&Str0,&Str1,&Str2);printf(“%s”,Str);以下程序执行时输入:Language Programming(回车)结果是 (22) 。#include#includevoid main()char Str30;scanf(“%s”,Str);printf(string=%s,Str);以下程序执行结果是 (23) 。#includevoid main()int

40、 num33=11,12,13,14,15,16,17,18,19,i,s=0;for(i=0;i=2;i+) s+=numii+numi2-i;printf(“%c”,s);以下程序执行结果是 (24) 。#include#includevoid main()char str34=abc,d,e,f,g,xyz;strcpy(&str02,str1);printf(%d,strlen(str0);以下程序执行,第一行结果是 (25) ,最后一行结果是 (26) 。#includevoid main()int num33=1,2,3,4,5,6,i,j;for(i=0;i3;i+) for(j

41、=0;j2;j+)printf(%dt,numji);printf(n);for(i=0;i3;i+)for(j=i;j3;j+)if(i!=j)numij+=numji;numji=numij-numji;numij-=numji;for(i=0;i3;i+)for(j=0;j2;j+)printf(%dt,numij);printf(n);下面的程序完成将一个十进制数转换为十六进制数的形式,填空实现要求的功能#includevoid main()int i=0,n,r;char num4;printf(“Enter a number:”);scanf(“%d”,&n); doi+;r= (

42、27) ;if(r=0;-j) printf(“%c”,numj);三、编程有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符。通过循环按行顺序为55的二维数组a 赋1到25的自然数,然后输出该数组的左下半三角。第八章 函数一、选择题以下叙述中不正确的是_。A、在函数中,通过return语句传回函数值B、在一个函数中,可以执行有多条return语句,并返回多个值C、在C中,主函数名main后的一对圆括号中也可以带有参数D、在C中,调用函数可以在printf语句中完成以下正确的描述是_。A、函数的定义不可以嵌套,但函数的调用可以嵌套B、函

43、数的定义可以嵌套,但函数的调用不可以嵌套C、函数的定义和函数的调用均不可以嵌套D、函数的定义和函数的调用均可以嵌套按C语言的规定,以下正确的说法是_。A、实参不可以是常量,变量或表达式B、形参不可以是常量,变量或表达式C、实参与其对应的形参占用同一个存储单元D、形参是虚拟的,不占用存储单元以下正确的说法为_。A、在不同函数中不可以使用相同名字的变量B、实际参数可以在被调函数中直接使用C、在函数内定义的任何变量只在本函数范围内有效D、在函数内的复合语句中定义的变量只在本函数语句范围内有效程序运行结果为_。void func(int n) static int a=1; a+=n; printf(

44、%d,a);main() int a=2; func(a); func(a); A、3,3, B、3,5,C、2,2,D、2,4,下列程序的执行结果为_。int f(int n) if (n0) f(n-1); else if (n=0) return(1); else return(n*f(n-1); main() printf(%d,f(5);A、120 B、8 C、15 D、1以下正确的函数说明是 。A、int fun(int a, b)B、float fun(int a; int b)C、double fun( )D、int fun(char a )以下正确的函数形式是 。A、doub

45、le fun1(int x, int y) z=x+y; return z; fun1(int x, y) int z;return z; C、fun1(x, y) int x, y; double z; z=x+y; return z; D、double fun1(int x, int y) double z; z=x+y; return z; 下正确的说法是 。A、实参和与其对应的形参各占用独立的存储单元B、实参和与其对应的形参共占用一个存储单元C、只有当实参和与其对应的形参同名时才共用存储单元D、形参是虚拟的,不占用存储单元以下正确的描述是 。A、定义函数时,形参的类型说明可以放在函数体

46、内B、return后面的值不能为表达式C、如果函数值的类型与返回值类型不一致,以函数值类型为准D、如果实参与形参的类型不一致,以实参类型为准C语言规定:简单变量做实参时,它和对应形参之间的数据传递方式是 。A、地址传递B、单向值传递C、由实参传给形参,再由形参传回实参D、由用户指定传递方式C语言允许函数值类型的缺省定义,此时该函数值隐含的类型是 。A、float B、int C、long D、double如果在一个函数中的复合语句中定义了一个变量,则以下正确的说法是 。A、该变量只在该复合语句中有效B、该变量在该函数中有效C、该变量在本程序范围内有效D、该变量为非法变量以下不正确的说法为 。A

47、、在不同函数中可以使用相同名字的变量B、形式参数是局部变量C、在函数内定义的变量只在本函数范围内有效D、在函数内的复合语句中定义的变量在本函数范围内有效在一个源文件中定义的全局变量的作用域为 。A、本文件的全部范围B、本程序的全部范围C、本函数的全部范围D、从定义该变量的位置开始至本文件结束有一个如下定义的函数,func(int a) printf(“%d”,a);则该函数的返回类型是 。A、与参数a的类型相同 B、 void类型C、没有返回值 D、无法确定C语言中规定,函数的返回值的类型是由 。return语句中的表达式的类型所决定。调用该函数时系统临时指定。调用该函数时的主调用函数类型所决

48、定。在定义该函数时所指定的函数类型所决定。以下说法不正确的是 。 A、 函数main()中定义的变量仅在main()中有效。 B、不同函数中可以使用相同的变量名。 C、形式参数是局部变量。 D、一个函数内部,可以在复合语句中定义变量,这些变量在本函数中均有效。实参数组名作为参数传递给被调函数,则实参的数组名被处理为 。 A、该数组的长度 B、该数组的元素的个数 C、该数组中各元素的值 D、该数组的首地址若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是 。A、函数调用可以作为独立的语句存在B、函数调用可以作为一个函数的实参C、函数调用可以出现在表达式中D、函数调用可以作为一个函数的形

49、参有以下函数定义voidfun(intn,doublex)若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是 。 A、fun(inty,doublem); B、k=fun(10,12.5); C、 fun(x,n); D、voidfun(n,x);以下程序的输出结果是 。fun(int x) int p;if (x+0|x=1) return (3);p=x-fun(x-2);return p;main() printf(“%dn”,fun(9); A、7 B、 2 C、 0 D、 3以下程序执行后输出结果是 。int f1(int x, int y) return xy ?

50、 x : y; int f2(int x, int y) return xy ? y : x; main( ) int a=4,b=3,c=5,d, e, f; d = f1(a,b); d=f1(d,c); e = f2(a,b); e=f2(e,c); f = a+b+c-d-e; printf(%d,%d,%dn,d,f,e);A、 3,4,5 B、5,3,4 C、5,4,3 D、3,5,4阅读以下函数,函数的功能是 。fun(char *s1,char *s2) int i=0; while(s1i=s2i & s2i!=0) i+; return (s1i=0 & s2i=0); A

51、、将s2所指字符串赋给s1B、比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0C、比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0D、比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为0以下叙述中正确的是 。A、全局变量的作用域一定比局部变量的作用域范围大B、静态(static)类别变量的生存期贯穿于整个程序的运行期间C、函数的形参都属于全局变量D、未在定义语句中赋初值的auto变量和static变量的初值都是随机值二、填空题一个C程序是由若干个函数构成的,其中必须有一个 (1) 。在C语言中,一个函数通常由两部分组成,它

52、们是 (2) 和 (3) 。凡在函数中未指定存储类别的变量,其隐含的存储类别是 (4) 。以数组名做为函数实参时,参数传递的方式为 (5) 。以下程序的运行后的两个结果分别是 (6) 和 (7) 。#include void ff1( ) extern int x, y; int a=15, b=10;x=a-b;y=a+b;int x, y;main( ) int a=7, b=5;x=a+b;y=a-b;ff1( );printf(%d, %dn, x, y);以下程序的运行结果是 (8) 。void f1(int x, int y, int z) x=111; y=222; z=333;

53、main( ) int x=100, y=200, z=300; f1(x, y, z);printf(%d, %d, %dn, z, y, x);以下程序的运行结果是 (9) 。int fun(int x, int y) int z;while (y) z=x%y; x=y; y=z; return(x);main( ) int i=16, j=6, k;k=fun(i, j);printf(%dn, k);以下程序的运行后,打印的结果为 (10) 。main( ) int a=1, k;for (k=0; k3; k+)printf(%4d, f1(a);f1(int x) static

54、int z=3, y=0;y+;z+;return(x+y+z);以下函数conj把两个字符串str1和str2连接起来。conj(char str1 , char str2 ) int i=0, j=0;while (str1i!= (11) )i+;while (str2j!= (12) )str1i+=str2j+; (13) =0;以下函数fmin返回数组arr中最小元素的下标,数组中元素的个数由x传入。请填空。fmin(int arr , int x) int min,q;for (q=1, min=0; qx; q+)if (arrqarrmin) (14) ;return(min

55、);以下程序的运行结果是 (15) 。int y=2;f1(int x) int y=3;y+=x+;printf(%d, y);main( ) int i=2; f1(i);y+=i+;printf(%dn, y);以下函数调用语句中含有 (16) 个实参。 func(exp1,exp2),(exp3,exp4,exp5);用数组名做函数参数,应该在主调函数和被调函数中 (17) 。若有以下程序,执行后输出结果是 (18) 。int f(int x, int y) return (y-x)*x; main() int a=3,b=4,c=5,d; d = f(f(3,4),f(3,5); p

56、rintf(%dn,d);函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下11 11 2 11 3 3 11 4 6 4 1其构成规律是:(1)第0列元素和主对角线元素均为1;(2)其余元素为其左上方和正上方元素之和;(3)数据的个数每行递增1;请将程序补充完整。#define N 6void YangHui(int xNN) int i,j; x00=1; for(i=1; iN; i+) xi0= (19) =1; for(j=1; ji; j+) xij= (20) ; 给出年、月、日,计算该日是该年的第几天? (21) int ymd(int year, i

57、nt month, int day) int index13=0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31;int s=0, i;if ( (22) | (23) ) index2=29;for (i=1; imonth; i+)(24) ; (25) ;return s;void main()int y,m,d;printf(Input year,month,day:n); scanf(%d,%d,%d,&y,&m,&d);printf(nn%dnn, ymd(y, m, d);18、以下程序的执行结果是 (26) 。#includema

58、in() int swap(); int a=3,b=10; swap(a,b);printf(“a=%d,b=%dn”,a,b);swap(int a, int b) int temp; temp=a; a=b; b=temp; 2、以下程序的执行结果是 (27) 。#includemain() int i,j,sum=0,m,n=4; for(i=1; i=n; i+) m=1; for(j=1;j=i;j+) m=m*j; sum=sum+m; printf(“sum=%dn”,sum);3、#include int i,j=2; void p(void) for(i=0;i4;i+)

59、printf( %d ,+j); if (i+1)%2=0) printf( n); main( ) for(i=0;i3;i+) p( ); printf( %d n ,i); 程序输出的第一行是_(28)_,第二行是 (29)_,第三行是 (30)_。第九章 编译预处理一、选择题在文件包含预处理语句的使用形式中,当#include后面的文件名用尖括号括起时,寻找被包含文件的方式是 。A、直接在系统设定的标准目录中搜索B、先在当前目录中搜索,若不存在,再到系统设定的标准目录中搜索C、仅仅搜索当前目录D、仅仅搜索源程序所在目录以下关于预处理的叙述中不正确的是 。A、C源程序中凡是以“#”号开始

60、的控制行都是预处理命令行B、预处理命令行必须位于源程序的开始部位C、一条有效的预处理命令行必须单独占据一行D、预处理命令是在正式编译之前先行被处理的以下关于文件包含的描述中正确的是 。A、每个C程序必须包含预处理命令:#include B、#include 后面的文件名用双引号()括起和尖括号()括起完全等效C、#include 命令行可以出现在源程序中需要的任何地方以下有关宏替换的叙述不正确的是 。A、宏名不具有类型B、宏名必须用大写字母表示C、宏替换只是字符替换D、宏替换不占用运行时间C语言的编译系统对宏命令的处理是 。A、在对源程序中其它成分正式编译之前进行的B、和C程序中的其它语句同时

温馨提示

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

评论

0/150

提交评论