第六章
单选
若已定义char s[10];则在下面表达式中不表示s[1]的地址是( )。
A.&s[1]
B.&s[0]+1
C.s+1
D.s++
下面程序段的运行结果是( )。
char a[ ]=”language” , *p ;
p=a ;
while (*p!='u') { printf(“%c”,*p-32); p++ ; }
A.language
B.langUAGE
C.LANGUAGE
D.LANG
下面能正确进行字符串赋值操作的是( )
A.char s[5]={'A','B','C','D','E'};
B.char s[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.若有说明: int main(int argc,char **argv),则argc的值必须大于1
D.C语言允许main函数带形参,形参名只能是argc和argv
若有定义:int (*p)[4];则标识符p( )。
A.是一个指针数组名
B.定义不合法
C.是一个指向整型变量的指针
D.是一个指针,它指向一个含有四个整型元素的一维数组
设有程序段:char s[ ]="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.cde
D.字符'c'
下面判断正确的是()。
A.char str[10]={"china"}; 等价于 char str[10]; str[ ]={"china";}
B.char c[4]="abc",d[4]="abc"; 等价于 char c[4]=d[4]="abc" ;
C.char *a="china"; 等价于 char *a; *a="china" ;
D.char *s="china"; 等价于 char *s; s="china" ;
设有程序段:char s[ ]=”china”; char *p ; p=s ;则下面叙述正确的是( )
A.数组s中的内容和指针变量p中的内容相等
B.*p与s[0]相等
C.s数组长度和p所指向的字符串长度相等
D.s和p完全相同
已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的输出结果是( )
void print_value(int *x)
{ printf(“%d\n”,++*x); }
A.24
B.23
C.25
D.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.名
已有定义int k=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的花括号中填入所编写的若干语句。
试题程序:*/
#include
#define N 80
int fun(