第六章
单选
若已定义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++ ; }
http://www.77cn.com.cnnguage
http://www.77cn.com.cnngUAGE
http://www.77cn.com.cnNGUAGE
http://www.77cn.com.cnNG
下面能正确进行字符串赋值操作的是( )
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 <stdio.h>
#define N 80
int fun(char str[])
{
/***************Begin************/
/*************** End ************/
}
void main()
{
char s[N];
FILE *out;
char test[][80]={"1234321","123421","123321","abcdCBA"}; int i;
printf("Enter a string : ");
gets(s);
printf("\n\n");
puts(s);
if(fun(s))
printf("YES\n");
else
printf("NO\n");
/************************************/
out=fopen("debug\\out12.dat","w");
for(i=0;i<4;i++)
if(fun(test[i]))
fprintf(out,"YES\n");
else
fprintf(out,"NO\n");
fclose(out);
/************************************/
}
【参考代码】
int fun(char str[])
{
int i,n=0,fg=1,j=0;
while (str[j])
{
n++;
j++;
}
for(i=0;i<n/2;i++)
/*循环比较字符*/
if(str[i]==str[n-1-i]);
/*相同,什么都不作*/
else
/*不同,直接跳出循环*/
{
fg=0;
break;
}
return fg;
}
/*请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。 一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:*/
#include<string.h>
#include<stdio.h>
#define N 80
int fun(char *s)
{
/************Begin*************/
/*************End* …… 此处隐藏:4423字,全部文档内容请下载后查看。喜欢就下载吧 ……