第六章单选若已定义chars[10];则在下面表达式中不表示s[1]的地址是()。A.&s[1]B.&s[0]+1C.s+1D.s++下面程序段的运行结果是()。chara[]=”language”,*p;p=a;while(*p!='u'){printf(“%c”,*p-32);p++;}A.languageB.langUAGEC.LANGUAGED.LANG下面能正确进行字符串赋值操作的是()A.chars[5]={'A','B','C','D','E'};B.chars[5]={ABCDE};C.char*s;s=ABCDE;D.char*s;scanf(%s,s);设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下能正确执行并得到有意义的结果的赋值语句是()。A.p2=c;B.c=*p1+*p2;C.p1=p2;D.c=*p1*(*p2);已有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是()。A.*p=max(a,b);B.*p=max;C.p=max;D.p=max(a,b);以下正确的叙述是()。A.C语言允许main函数带形参,且形参个数和形参名均可由用户指定B.当main函数带有形参时,传给形参的值只能从命令行中得到C.若有说明:intmain(intargc,char**argv),则argc的值必须大于1D.C语言允许main函数带形参,形参名只能是argc和argv若有定义:int(*p)[4];则标识符p()。A.是一个指针数组名B.定义不合法C.是一个指向整型变量的指针D.是一个指针,它指向一个含有四个整型元素的一维数组设有程序段:chars[]=china;char*p;p=s;则下面叙述正确的是()。A.*p与s[0]相等B.数组s中的内容和指针变量p中的内容相等C.s数组长度和p所指向的字符串长度相等D.s和p完全相同下面程序段的运行结果是()。char*s=”abcde”;s+=2;printf(“%s”,s);A.字符'c'的地址B.不确定C.cdeD.字符'c'下面判断正确的是()。A.charstr[10]={china};等价于charstr[10];str[]={china;}B.charc[4]=abc,d[4]=abc;等价于charc[4]=d[4]=abc;C.char*a=china;等价于char*a;*a=china;D.char*s=china;等价于char*s;s=china;设有程序段:chars[]=”china”;char*p;p=s;则下面叙述正确的是()A.数组s中的内容和指针变量p中的内容相等B.*p与s[0]相等C.s数组长度和p所指向的字符串长度相等D.s和p完全相同已有变量定义和函数调用语句:inta=25;print_value(&a);下面函数的输出结果是()voidprint_value(int*x){printf(“%d\n”,++*x);}A.24B.23C.25D.26若有说明:int*p,m=5,n;以下程序段正确的是()A.p=&n;*p=m;B.p=&n;scanf(%d,&p);C.p=&n;scanf(%d,*p);D.scanf(%d,&n);*p=n;变量的指针,其含义是指该变量的()A.值B.地址C.一个标志D.名已有定义intk=2;int*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是()A.ptr2=k;B.k=*ptr1+*ptr2;C.k=*ptr1*(*ptr2);D.ptr1=ptr2程序设计/*请编写函数fun,该函数的功能是:判断字符串是否为回文,若是则函数返回1,主函数中输出YES,否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:*/#includestdio.h#defineN80intfun(charstr[]){/***************Begin************//***************End************/}voidmain(){chars[N];FILE*out;chartest[][80]={1234321,123421,123321,abcdCBA};inti;printf(Enterastring:);gets(s);printf(\n\n);puts(s);if(fun(s))printf(YES\n);elseprintf(NO\n);/************************************/out=fopen(debug\\out12.dat,w);for(i=0;i4;i++)if(fun(test[i]))fprintf(out,YES\n);elsefprintf(out,NO\n);fclose(out);/************************************/}【参考代码】intfun(charstr[]){inti,n=0,fg=1,j=0;while(str[j]){n++;j++;}for(i=0;in/2;i++)/*循环比较字符*/if(str[i]==str[n-1-i]);/*相同,什么都不作*/else/*不同,直接跳出循环*/{fg=0;break;}returnfg;}/*请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:*/#includestring.h#includestdio.h#defineN80intfun(char*s){/************Begin*************//*************End*************/}voidmain(){FILE*wf;charline[N];intnum=0;printf(Enterastring:\n);gets(line);num=fun(line);printf(Thenumberofwordis:%d\n\n,num);/******************************/wf=fopen(d:\\out19.dat,w);fprintf(wf,%d,fun(Thisisabigcar));fclose(wf);/*****************************/}【参考代码】inti,j=0;for(i=0;s[i]!='\0';i++)if(s[i]!=''&&(s[i+1]==''||s[i+1]=='\0'))/*如果一个字母的下一个字符为空格或者结束标记,则表示一个单词结束*/j++;returnj;/*返回单词个数*//*假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是****ABCDEFG。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:*/#includestring.h#includestdio.hvoidfun(char*a){/************Begin*************//************End**************/}voidmain(){chars[81];FILE*in,*out;inti;printf(Enterastring:\n);gets(s);fun(s);printf(Thestringafterdeleted:\n);puts(s);/******************************/in=fopen(in21.dat,r);out=fopen(debug\\out21.dat,w);for(i=0;i8;i++){fscanf(in,%s,s);fun(s);fprintf(out,%s\n,s);}fclose(in);fclose(out);/******************************/}【参考代码】inti=0;char*p=a;while(*p&&*p=='*'){a[i]=*p;i++;p++;}while(*p){if(*p!='*'){a[i]=*p;i++;}p++;}a[i]='\0';/*假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是A*BC*DEF*G*******。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:*/#includestdio.hvoidfun(char*a){/************Begin**************//************End*************/}voidmain(){FILE*wf,*in;inti;chars[81],t[81]=****A*BC*DEF*G*******;printf(Enterastring:\n);gets(s);fun(s);printf(Thestringafterdeleted:\n);puts(s);/******************************/in=fopen(in18.dat,r);wf=fopen(debug\\out18.dat,w);for(i=0;i8;i++){fscanf(in,%s,t);fun(t);fprintf(wf,%s\n,t);}fclose(in);fclose(wf);/*****************************/}【参考代码】char*p=a;while(*p=='*')p++;/*指针p指向字符串第一个字母*/for(;*p!='\0';p++,a++)*a=*p;*a='\0';/*请编一个函数fun(char*s),该函数的功能是把字符串中的内容逆置。例如,字符串中原有的字符串为abcdefg,则调用该函数后,串中的内容为gfedcba。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:*/#includestring.h#includestdio.h#defineN81voidfun(char*s){/************Begin*************//************End**************/}voidmain(){chara[N];FILE*out;printf(Enterastring:);gets(a);printf(Theoriginalstringis:);puts(a);fun(a);printf(\n);printf(Thestringaftermodified:);puts(a);strcpy(a,HelloWorld!ThisisafirstCprogram!);fun(a);/******************************