填空:1.一个C程序的执行是从(A)A本程序的main函数开始,到main函数结束B本程序的第一个函数开始,到本程序文件的最后一个函数结束C本程序的main函数开始,到本程序文件的最后一个函数结束D本程序的第一个函数开始,到本程序main函数结束2.以下能正确地定义整型变量a,b和c并为其赋初值5的语句是(A)Ainta=5,b=5,c=5;Binta,b,c=5;Ca=5,b=5,c=5;Da=b=c=5;3.为了避免在嵌套的条件语句if-else中产生二义性,C语言规定else子句总是与(B)配对。A缩排位置相同的ifB其之前最近的ifC其之后最近的ifD同一行上的if4.以下正确的描述是:(C)Awhile、do-while、for循环中的循环体语句都至少被执行一次(有时while循环一次也不执行)Bdo-while循环中,while(表达式)后面的分号可以省略(while循环中分号可以省略,do-while循环不能省略)Cwhile循环体中,一定要有能使while后面表达式的值变为“假”的操作Ddo-while循环中,根据情况可以省略while5.C语言规定,简单变量作为实参时,它和对应形参之间的数据传递方式是(D)。A地址传递B由用户指定传递方式C由实参传给形参,再由形参传回给实参D单向值传递(实参传给形参)6.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为(A)。A自动(auto)B静态(static)C外部(extern)D寄存器(register)7.以下关于宏的叙述中正确的是(C)。A宏名必须用大写字母表示B宏替换时要进行语法检查C宏替换不占用运行时间D宏定义中不允许引用已有的宏名8.说明一个结构体变量时,系统分配给它的内存是(A)A各成员所需内存量的总和B结构中第一个成员所需内存量C成员中占内存量最大都所需的容量D结构中最后一个成员所需内存量9.表达式0x13&0x17的值是(B)(这两个十六进制数先化为十进制,再化为二进制,进行运算,再将二进制结果化为十进制,再化为十六进制)A0x17B0x13C0xf8D0xec10.若要用fopen函数打开一个新的二进制文件,该文件既要能读也要能写,则文件方式字符串应是(B)Aab+Bwb+Crb+Dab11.以下叙述中正确的是(C)AC语言比其他语言高级BC语言可以不用编译就能被计算机识别执行CC语言以接近英语国家的自然语言和数学语言作为语言的表达形式DC语言出现得最晚,具有其他语言的一切优点12.定义:inta=8,b=5,c;,执行语句c=a/b+0.4;后,c的值为(B)A1.4B1C2.0D213.以下非法的赋值语句是(C)A.n=(i=2,++i);B.j++;C.++(j+1);D.x=j0;14.以下不能正确定义二维数组的选项是(D)A.inta[2][2]={{1},{2}};B.inta[][2]={1,2,3,4};C.inta[2][2]={{1},{2,3}};D.inta[][]={{1,2},{3,4}};15.若有说明语句:inta,b,c,*d=&c;,则能正确从键盘读入3个整数分别赋给变量a、b、c的语句是(B)A.scanf(%d%d%d”,&a,&b,d);B.scanf(%d%d%d”,&a,&b,&d);C.scanf(%d%d%d”,a,b,d);D.scanf(%d%d%d”,a,b,*d);16.以下程序段中,b的值是(B)inta[10]={1,2,3,4,5,6,7,8,9,10},*p,b;p=&a[0];b=p[5];A.5B.6C.8D.917.以下哪一个表达式取值是正确的?(D)A.65结果为6B.6&&5结果为7C.6||5结果为7D.65结果为018.下列C语言标识符不合法的是:(C)(C语言的标识符第一个字符必须为字母或下划线)A.PERFECTB.perfectnameC.8_numberD._number119.有以下程序结果(C)main(){intx=102,y=012;printf(“%2d,%2d\n”,x,y);}(012是八进制,转化为十进制是10)A.10,01B.02,12C.102,10D.02,1020.设有如下程序charstr[]=”hello”;char*ptr;ptr=str;执行完上面的程序段后,*(ptr+5)的值为(B)A.‘0’B.‘\0’C.不确定的值D.‘0’的地址21.C语言中,定义PI为一个符号常量,正确的是(A)A.#definePI3.14B.definePI3.14C.#includePI3.14D.includePI3.1422.关于c表达式5||(a=b+c)==3的值,正确的说法为(A)A.值为1B.值为5C.值为0D.3填空1.若有定义语句:intx=3,y=2;floata=2.5,b=3.5;则表达式(x+y)%2+(int)a/(int)b的值为(1)。2.设a、b、c均为int型变量且a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是(1)。3.若有定义:inta[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是(0)。4.从函数的形式看,函数分(无参函数)和(有参函数)两类。5.结构化程序由(顺序程序)、(选择程序)和(循环)。6.在C语言中,&作为双目运算符时表示的是(按位与运算符),而作为单目运算符时表示的是(取地址运算符)。7.static对局部变量来说,它使变量由(动态)存储方式改变为(静态)存储方式。8.C语言的标识符只能有三种字符组成,它们是(字母)、(数字)和(下划线)。9.给以下程序输入2个数值给a,b变量,b中的值给a,变量a中的值给b,实现a,b交换,输出a,b的值。#includestdio.hmain(){inta,b,__t___;printf(entera,b,);scanf(%d%d,&a,&b);____t=a____;__a=b____;_b=t;printf(%d%d,a,b);}10.设inta[2][3]={{5},{6}};则数组元素(a[0][0])的值为5。11.若定义结构体变量structstudent{intnum;charname[10];intage;}student1;则结构体变量student1在内存中占14字节。读程序写结果1.写出下列程序的执行结果。#includestdio.hvoidmain(){inti,j,m,n;i=6;j=9;m=++i;n=j++;printf(“%d,%d,%d,%d\n”,i,j,m,n);}710792.写出下列表达式的值:(1)x+a%3*(int)(x+y)%2/4设x=5.2,a=7,y=7.4=5.2+7%3*(int)(5.2+7.4)%2/4=5.2+1*12%2/4=5.2(2)(float)(a+b)/2+(int)x%(int)y设a=2,b=3,x=5.3,y=5.2=(float)(2+3)/2+(int)5.3%(int)5.2=2.5+5%5=2.53.写出下列程序的执行结果。#includestdio.hvoidmain(){intx=2,y=-1,z=2;if(xy)if(y0)z=0;elsez+=1;printf(“z=%d\n”,z);}z=24.写出下列语句的执行结果。#includestdio.hvoidmain(){inti;for(i=1;i=5;i++)switch(i%5){case0:printf(*);break;case1:printf(#);break;default:printf(\n);case2:printf(&);}}#&&&*5.写出下列语句的执行结果。#includestdio.hvoidmain(){inta[6][6],i,j;for(i=1;i6;i++)for(j=1;j6;j++)a[i][j]=(i/j)*(j/i);for(i=1;i6;i++){for(j=1;j6;j++)printf(“%2d”,a[i][j]);printf(“\n”);}}10000010000010000010000016.写出下列程序的执行结果。#includestdio.hvoidmain(){chara[]=morning,t;inti,j=0;for(i=1;i7;i++)if(a[j]a[i])j=i;t=a[j];a[j]=a[7];a[7]=a[j];puts(a);}mo7.写出下列语句的执行结果。#includestdio.h#defineMAX10inta[MAX],i;voidsub1(){for(i=0;iMAX;i++)a[i]=i+i;}voidsub2(){inta[MAX],i,max;max=5;for(i=0;imax;i++)a[i]=i;}voidsub3(inta[]){inti;for(i=0;iMAX;i++)printf(%d,,a[i]);printf(\n);}voidmain(){printf(\n);sub1();sub3(a);sub2();sub3(a);}空一行0,2,4,6,8,10,12,14,16,18,0,2,4,6,8,10,12,14,16,18,8.写出下列语句的执行结果。#includestdio.hvoidmain(){inta=2,i;for(i=0;i3;i++)printf(“%4d”,f(a));}f(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}9.写出下列程序的执行结果。#includestdio.hvoidswap(int*pt1,int*pt2){inttemp;temp=*pt1;*pt1=*pt2;*pt2=temp;}voidexchange(int*q1,int*q2,int*q3){if(*q1*q2)swap(q1,q2);if(*q1*q3)swap(q1,q3);if(*q2*q3)swap(q2,q3);}voidmain(){inta=5,b=7,c=9,*p1,*p2,*p3;p1=&a;p2=&b;p3=&c;exchange(p1,p2,p3);printf(“\n%d,%d,%d\n”,a,b,c);}空一行9,7,510.写出下列程序的执行结果。#includestdio.hint*p;voidpp(inta,int*b){intc=4;*p=*b+c;a=*p-c;printf(“(2):%d,%d,%d\n”,a,*b,*p);}voidmain(){inta=1,b=2,c=3;p=&b;pp(a+c,&b);printf(“(1):%d,%d,%d\n”,a,b,*p);}(1):2,6,6(2):1,6,611.以下程序的输出结果是:(2)main(){inta=2,b=-1,c=2;if(ab)if(b0)c=0;elsec+=1;printf(“%d\n”,c);}12.有以下程序输出结果是:6main(){inta=5,b=4,c=6,d;printf(“%d\n”,d=ab?(ac?a:c):(b));}13.有以下程序执行后的结果是25main(){inti,s=0;for(i=0;i10;i+=2)s+=i+1;printf(“%d\n”,s);}14.执行以下程序后,输出的是(######)main(){inti,j;for(i=1;i3;i++)for(j=2;j=4;j++)printf(“#”);}15.有以下程序,执行结果为:24main(){intp[7]={11,13,14,15,16,17,18},i=0,k=0;while(i7&&p[i]%2){k=k+p[i];i++;}