-1-习题一1.以下常量中正确的是。A.’abc’B.’\x123’C.3.145E-1.2D.”a”2.设有“inta;”,以下不能正确表达数学关系10a15的表达式是。A.10a15B.a==11||a==12||a==13||a==14C.a10&&a15D.!(a=10)&&!(a=15)3.以下程序段的输出结果是。inta=0,b=4,k=2;k=a+10||(++a0)&&(!(b--=0));printf(”%d,%d,%d”,k,a,b);A.1,1,3B.1,1,4C.1,0,3D.1,0,44.若有“inta=5;a+=a-=-a*a;”,则a的值是。5.以下所列语句中,合法的语句是。A.a=1,b=2B.++a;C.a=a+1=5;D.y=int(a);6.以下所列字符常量中,不合法的是。A.’\0xff’B.’\65’C.’$’D.’\x1a’7.设有定义“floaty=3.45678;intx;”,则以下表达式中能实现将y中数值保留小数点后2位,第3位四舍五入的表达式是。A.y=(y*100+0.5)/100.0B.x=y*100+0.5,y=x/100.0C.y=y*100+0.5/100.0D.y=(y/100+0.5)*100.08.以下程序段输出结果是。inta=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,13B.1,11,10,13C.0,11,10,12D.1,11,10,129.设有语句“inta=2,b=3,c=2;a+=b*=(++b-c++);”,变量b的值是。习题二1.以下关于if语句的错误描述是。A.条件表达式可以是任意的表达式B.条件表达式只能是关系表达式或逻辑表达式C.条件表达式的括号不可以省略D.与else配对的if语句是其之前最近的未配对的if语句2.以下叙述中不正确的是。A.一个变量的作用域完全取决于变量说明语句的位置B.外部变量可以在函数以外的任何位置定义C.内部变量的生存期只限于本次函数调用,无法将内部变量的值保存至函数的下一次调用D.用static说明一个外部变量是为了限制其他编译单位的引用3.以下程序的输出结果是。main()-2-{externintx;printf(”%d”,x+=2);fun1(2);}intx=1;fun1(intx){printf(”%d”,x++);fun2(2);}fun2(void){printf(”%d”,x);intx=5;printf(”%d”,x);}4.以下不致造成死循环的语句是。A.for(y=0,x=1;x++y;x=i++)i=x;B.for(;;x+=i);C.while(x=8)x--;D.for(i=10,sum=0;sum=i;)sum=--i;5.以下程序输出结果是。main(){printf(”%d”,fun(5));}fun(intn){if(n==1)return1;returnn-fun(n-1);}6.[程序]main(){intj,k,s,m;for(k=1;k10;k++){s=1;m=k+2;for(j=k;jm;j++,k++)s+=j;}printf(”s=%d,k=%d”,s,k);}程序输出结果s=,k=。7.若有宏定义:#defineN2#defineY(n)((N+1)*n)则执行语句“z=2*(N+Y(N+2));”后,z的值是。8.以下程序输出结果是。#defineT(x,y,z)x*y*z/4main(){inta=1,b=3,c=5;-3-printf(”%d”,T(b+a,a*++b,a+b+c));}习题三1.若有“inta[][4]={1,2,3,4,5,6,7,8,9,10},*p=*(a+1);”,则值为9的表达式是。A.p+=3,*p++B.p+=4,*(p++)C.p+=4,*++pD.p+=4,++*p2.设有以下函数定义,则返回的函数值是。main(){intx,*y;y=fun(&x);…}int*fun(int*a){int*t;*a=99;t=a;returnt;}A.无确切的值B.形参a的地址C.主函数中变量x的地址D.fun函数中变量t的地址3.[程序]main(){ints,p[9]={1,2,3,4,5,6,7,8,9};printf(”\n%d”,add(p,5));}add(int*p,intn){if(n==1)return*p;elsereturn*p+add(p+1,n-1);}程序输出结果是。4.[程序]int*swap(int*a,int*b){int*p;p=a;a=b;b=p;returna;}main(){intx=3,y=4,z=5;swap(swap(&x,&y),&z);printf(”%d,%d,%d”,x,y,z);}程序输出结果是。5.[程序]fun(intn,int*s){intf1,f2;if(n==1||n==2)*s=1;-4-else{fun(n-1,&f1);fun(n-2,&f2);*s=2*f1+f2+1;printf(”\n%d,%d”,f1,f2);}}main(){intx;fun(4,&x);printf(”\nx=%d”,x);}程序运行时输出的第一行是,第二行是,最后一行是。6.如有以下定义inty[4][4]={1,2,3,4,5,6,7,8,9,10},*py1=y[1],(*py2)[4]=y;则不能正确引用值为7的数组元素的表达式是。A.*(y[1]+2)B.*(y+1)+2C.py1[2]D.py2[1][2]7.[程序]main(){inti,p[3][3]={1,2,3,4,5,6,7,8,9},*p1[3],(*p2)[3];for(i=0;i3;i++)p1[i]=p[i];p2=p;for(i=1;i3;i++)printf(”\n%d,%d”,*(*(p1+i)+1)+1,*(*++p2+1)+1);}程序运行时输出的第一行是,第二行是。8.[程序]main(){inti,j,a[3][3]={1,1},*p1,*p2,*p3;p1=a[0];p2=a[0]+1;p3=a[0]+2;for(i=2;i9;i++)func(p1++,p2++,p3++);for(i=0;i3;i++)for(j=0;j3;j++){printf(”%d,”,a[i][j]);printf(”\n”);}}func(int*q1,int*q2,int*q3){*q3=*q1+*q2;}程序运行时输出的第一行是,第二行是,第三行是。9.[程序]main(){inti,p[9]={1,2,3,4,5,6,7,8,9},*p1[3],**p2;for(i=0;i3;i++)p1[i]=&p[6-3*i];-5-p2=p1+2;for(i=1;i3;i++)printf(”%d,%d\n”,*(++p1[i]+2)+1,*(*p2--+1)+2);}程序运行时输出的第一行是,第二行是。10.[程序]fun(int*s,intn1,intn2){intt;while(n1n2){t=*(s+n1);*(s+n1)=*(s+n2);*(s+n2)=t;n1++;n2--;}}main(){inta[10]={1,2,3,4,5,6,7,8,9,0},i,*p=a;fun(p,0,3);fun(p+3,1,6);for(i=0;i10;i++){if(i%5==0)printf(”\n”);printf(”%d”,a[i]);}}程序输出的第一行是,第二行是。习题四1.设有基类型相同的两个指针变量,则不能对它们进行运算。A.+B.-C.++D.--2.语句能正确完成赋字符串的功能。A.chars[4];s[0]=”string”;B.char*s;gets(s);C.char*s[]=”string”;D.char*s;strcpy(s,”string”);3.以下程序的输出结果是。enumweek{SUN=7,MON=1,WED,TUS,THS,FRI,SAT};main(){printf(”%d”,hour(FRI,SUN));}hour(intx,inty){if(yx)return24*(y-x);-6-elsereturn–1;}4.[程序]char*fun(char*s){inti,j;for(i=j=0;s[i]!=’\0’;i++)if(s[i]!=’c’)s[j++]=s[i];s[j]=’\0’;returns;}main(){printf(”%s”,fun(”chance”));}程序输出结果是。5.以下说法中正确的是。A.一个结构中只能包含一种数据类型B.不同结构中的成员不能有相同的成员名C.两个结构变量不可以进行比较D.关键字typedef用于定义新的数据类型6.下列程序段执行后变量j的值是。intj;char*s=”x\045\””;for(j=0;*s++;j++);A.7B.3C.4D.57.设有以下说明和语句,则值为210的表达式是。structs{inta;int*b;};intx0[]={110,120},x1[]={210,220};structsx[]={{100},{200}},*p=x;x[0].b=x0;x[1].b=x1;A.*p-bB.(++p)-aC.*(p++)-bD.*(++p)-b8.设有“chars[]=”Program”,*p=s;”,则以下叙述中正确的是。A.数组s的内容与指针变量p中的内容相同B.数组s的长度与strlen(p)的值相等C.p[5]的值等于s[5]的值D.sizeof(s)等于sizeof(*p)9.若有定义语句“staticcharstr[4][20]={”thank”,”you”,”very”,”much!”};”,则str数组中存储’\0’的数组元素有个。-7-10.以下程序输出结果是。main(){enumcolor{RED=5,BLUE,WHITE=0,BLACK};char*colorname[]={”red”,”blue”,”white”,”black”};printf(”%s”,colorname[BLACK]);}习题五1.函数delstr功能是:在字符串str中删除所有出现的子串str1。[程序]char*delstr(char*str,char*str1){char*p,*p1,*q1;inti;if(*str==’\0’||*str1==’\0’)returnstr;p=str;while(*p!=’\0’){p1=p,q1=str1;while(*p1==*q1&&*q1!=’\0’);if(p!=p1&&*q1==’\0’){for(i=0;*p1!=’\0’;i++,p1++)=*p1;=’\0’;}p++;};}2.设结点的数据结构定义如下:typedefstructp{intx,y;structp*next;}PNODE;函数padd功能是:由pa、pb分别指向的两个已经存在的链表,生成一个pc指向的新链表并返回该新链表第一个结点的地址。两个已存在的链表均是按结点的y值升序排列的有序表,新生成链表的结点仍按y的值升序排列。新链表生成规则是:当在pa和pb链表中发现y值相同的结点时,则在pc链表中增加一个新结点,新结点的x取值为pa、pb指向的链表中对应的两个结点的x值之和,新结点的y取值为pa或pb链表中对应结点的y值。-8-[程序]PNODE*padd(PNODE*pa,PNODE*pb){PNODE*pcr,*pt,*pc;pc=NULL;while(){if(pa-y==pb-y){pt=()malloc(sizeof(PNODE));pt-x=pa-x+pb-x;pt-