《C语言程序设计》第8章作业布置日期:2015-5-20截止日期:2015-5-31交作业一、单选题(每小题2.65分,共100.7分)1、设int*p,I;以下正确合理的语句是()。A、*p=10;B、i=p;C、i=*p;D、i=2*p+1;2、设chars[10];intI;以下引用数组s中元素正确的表达式是()。A、S(i+2);B、*(s+i)C、*(&s+i)D、*((s++)+i)3、若有定义和语句int**pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf(%d,%d\n,*p,**pp);则输出结果是()。A、10,20B、10,10C、20,10D、20,204、若定义chars[20]=programming,*ps=s;则不能代表字符o的表达式是()。A、ps+2B、s[2]C、ps[2]D、ps+=2,*ps5、若有定义和语句char*s1=12345,*s2=1234;printf(%d\n,strlen(strcpy(s1,s2)));则输出结果是()。A、4B、5C、9D、106、若定义inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;则值为3的表达式是()。A、p+=2,*(p++)B、p+=2,*++pC、p+=3,*p++D、++*p7、设有以下一段程序chars[]=Hello;char*p=s;执行完上面程序段后,*(p+5)的值为()。A、'o'B、'\0'C、'o'的地址D、不确定的值8、已知:int*p,a;则语句“p=&a;”中的运算符“&”的含义是。A、位与运算B、逻辑与运算C、取指针内容D、取变量地址9、已知:int*p;使用如下语句动态申请一个int型的存储单元,应当使用。p=________malloc(sizeof(int));A、intB、int*C、(*int)D、(int*)10、已知:chars1[4]=12;char*ptr;则执行以下语句后的输出为。ptr=s1;printf(%c\n,*(ptr+1));A、字符'2'B、字符'1'C、字符'2'的地址D、不确定11、已知:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则不能表示数组a中元素的表达式是。A、*pB、a[10]C、*aD、a[p-a]12、若x是整型变量,p是整型指针变量,则正确的赋值表达式是__________。A、*p=*x;B、*p=&x;C、p=x;D、p=&x13、若有如下定义,则以下正确的赋值表达式是_______。intx,*pb;A、pb=&xB、pb=xC、*pb=&xD、*pb=*x14、若有如下定义,则不能表示a[1]地址的表达式是_________。inta[10],*pp=a;A、a+1B、++ppC、pp+1D、++a15、下面程序的输出结果是_________。#includestdio.hvoidmain(){char*p[]={mop,book,w,op};inti;for(i=3;i=0;i--,i--)printf(%c,*p[i]);}A、obB、opbookC、opD、owb16、若有如下定义,以下调用正确的是_______。inta,*p=&a;A、scanf(%d,a)B、scanf(%d,p)C、scanf(%f,&a)D、scanf(%f,&p)17、下面各语句行中,能正确进行赋字符串操作的语句行是_______。A、chars[4][5]={abcd};B、chars[5]={'a','b','c','e','f'};C、char*s;s=abcd;D、char*s;scanf(%s,s);18、若有以下说明和语句,对c数组元素的正确引用是_______。intc[4][5],(*cp)[5];cp=c;A、cp+1B、*(cp+3)C、*(cp+1)+3D、*(*cp+2)19、若有以下定义,则值为6的表达式是_______。inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;A、*p+6B、*(p+6)C、*p+=5D、p+520、若有以下定义,则与赋值语句n2=n1等价的语句是_______。intn1=0,n2,*p=&n2,*q=&n1;A、*p=*q;B、p=q;C、*p=&n1;D、p=*q;21、若有以下定义,并在以后的语句中未改变p的值,则不能表示a[1]地址的表达式是_______。inta[9],*p=a;A、p+1B、a+1C、a++D、++p22、若有以下定义,则合法的赋值语句是_______。inti,a[10],*p;A、p=100;B、p=a[5];C、p=a[2]+2;D、p=a+223、执行如下的程序段后,*(ptr+5)的值为_______。charstr[]=Hello;char*ptr;ptr=str;A、'o'B、'\0'C、不确定的值D、'o'的地址24、下面函数的功能是_______。intsss(s,t){char*s,*t;while((*s)&&(*t)&&(*t++==*s++));return(*s-*t);}A、求字符串的长度B、比较两个字符串的大小C、将字符串s复制到字符串t中D、将字符串s接续到字符串t后面25、下面函数的功能是_______。intfun1(char*x){char*y=x;while(*y++);return(y-x-1);}A、求字符串的长度B、比较两个字符串的大小C、将字符串x复制到字符串yD、将字符串x连接到字符串y后面26、函数功能是交换x和y的值,且通过正确调用返回交换结果。能正确实现此功能的函数是_______。A、funa(int*x,int*y){intp;p=*x;*x=*y;*y=p;}B、funb(intx,inty){intt;t=x;x=y;y=t;}C、func(int*x,int*y){*x=*y;*y=*x;}D、fund(intx,inty){*x=*x+*y;*y=*x-*y;*x=*x-*y;}27、以下程序的输出结果是______。#includestdio.hvoidfun(int*x,int*y){printf(%d%d,*x,*y);*x=3;*y=4;}voidmain(){intx=1,y=2;fun(&y,&x);printf(%d%d,x,y);}A、2143B、1212C、1234D、211228、请选出以下程序的输出结果______。#includestdio.hvoidsub(intx,inty,int*z){*z=y-x;}voidmain(){inta,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf(%d,%d,%d\n,a,b,c);}A、5,2,3B、-5,-12,-7C、-5,-12,-17D、5,-2,-729、以下程序的运行结果_______。#includestdio.hvoidmain(){inta[]={2,4,6,8},*p=a,i;for(i=0;i4;i++)a[i]=*p++;printf(%d,%d\n,a[2],*(--p));}A、5,6B、6,8C、6,7D、7,930、以下程序的运行结果_______。#includestdio.hvoidmain(){inta,b,c;intx=4,y=6,z=8;int*p1=&x,*p2=&y,*p3;a=p1==&x;b=3*(-*p1)/(*p2)+7;c=*(p3=&z)=*p1*(*p2);printf(%d,%d,%d\n,a,b,c);}A、0,4,23B、1,5,24C、2,6,25D、3,6,2531、以下程序的运行结果_______。#includestdio.hvoidmain(){inta[]={2,4,6,8,10},*p,**k;p=a;k=&p;printf(%d,*(p++));printf(%d\n,**k);}A、24B、13C、25D、3432、以下程序的运行结果_______。#includestdio.hvoidmain(){inta[3][4]={2,4,6,8,10,12,14,16,18,20,22,24};int(*p)[4]=a,i,j,k=0;for(i=0;i3;i++)for(j=0;j2;j++)k+=*(*(p+i)+j);printf(%d\n,k);}A、65B、66C、67D、6833、以下程序的运行结果_______。#includestdio.hvoidmain(){intk=0,sign,m;chars[]=-12345;if(s[k]==‘+’||s[k]==‘-’)sign=s[k++]==‘+’?1:-1;for(m=0;s[k]=‘0’&&s[k]=‘9’;k++)m=m*10+s[k]-‘0’;printf(Result=%d\n,sign*m);}A、Result=-23456B、Result=-12345C、Result=-34567D、Result=-4567834、统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束标志,请填空。#includestdio.h#includectype.hvoidmain(){intnum[26],i;charc,*p=&c;for(i=0;i26;i++)num[i]=0;while((①=getchar())!=‘#‘)/*统计从终端输入的大写字母个数*/if(isupper(*p))②;for(i=0;i26;i++)/*输出大写字母和该字母的个数*/if(num[i])printf(%c:%d\n,i+’A‘,③);}A、①strlen(str)+1②t==0③huiwen(&str)B、①strlen(str)-1②t==1③huiwen(str)C、①strlen(str)+1②t==1③huiwen(&str)D、①strlen(str)-1②t==0③huiwen(str)35、统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束标志,请填空。#includestdio.h#includectype.hvoidmain(){intnum[26],i;charc,*p=&c;for(i=0;i26;i++)num[i]=0;while((①=getchar())!=‘#’)/*统计从终端输入的大写字母个数*/if(isupper(*p))②;for(i=0;i26;i++)/*输出大写字母和该字母的个数*/if(num[i])printf(%c:%d\n,i+‘A’,③);}A、①c②num[c-'A']++③num[i++]B、①c②num[c-'A']++③num[i]C、①d②num[c-'A']--③num[i--]D、①d②num[c-'A']--③num[++i]36、下列程序中huiwen()函数的功能是检查一个字符串是否是回文。当字符串是回文时,函数返回“yes!”字符串,否则函数返回“no!”字符串,并在主函数中输出。所谓回文即正向与反向的拼写一样,如adgda,请填空。#includestdio.h#includectype.hchar*huiwen(char*str){char*p1,*p2;inti,t=0;p1=str;p2=①;for(i=0;i=strlen(str)/2;i++)if(*p1++!=*p2--){t=1;break;}if(②)return(yes!);elsereturn(no!);}voidmain(){charstr[50];printf(Input:);scanf(%s,str);printf(%s\n,③);}A、①strlen(str)-1②t==0③huiwen(&str)B