D. char str[5]={'g', 'o','o', 'd'};
1 A.char str[5]={\这个不符合C语言的语法规定,字符串初始化是这样写的:
char str[6]=\//因最后还有一个结束符,因此数组元素应该是6个。
2 题目表述有些不准确 C,D叫初始化,B叫赋值。
3 题目中的单双引号全部是中文的,这也不符合C语言语法。应该改为英文的。
17.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是(A)。
A. p=2*(int *)malloc(sizeof(int)); B. p=(int *)malloc(2*sizeof(int)); C. p=(int *)malloc(2*2);
D. p=(int*)calloc(2, sizeof(int));
malloc的全称是memory allocation,中文叫动态内存分配,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。 18.下面程序段的运行结果是(C)。 char *s=\ s+=2;
printf(\
A. cde B. 字符'c' C. 字符'c'的地址 D. 无确定的输出结果
19.设有如下的程序段:char s[]=\*t; t=s;则下列叙述正确的是(D)。
A. s和t完全相同
B. 数组s中的内容和指针变量t中的内容相等 C. s数组长度和t所指向的字符串长度相等 D. *t与s[0]相等 20.以下正确的程序段是(B)。
A. char s[20]; B. char *s;
scanf(\C. char s[20]; D. char s[20], *t=s; scanf(\&s[2]); scanf(\t[2]); 21.下面程序段的运行结果是(C)。
#include \main() {
int m=10, n=20;
char *format=\ m*=n;
printf(format, \}
A. format, \. format, \C. m*=n, m=200, n=20 D. 以上结果都不对 22.以下与库函数strcpy(char *p, char *q)功能不相等的程序段是(D)。
A. strcpy1(char *p, char *q)
{ while ((*p++=*q++)!='\\0'); }
B. strcpy2( char *p, char *q)
{ while((*p=*q)!='\\0') {p++; q++;}
}
C. strcpy3(char *p, char *q)
{ while (*p++=*q++); }
D. strcpy4( char *p, char *q) { while(*p) *p++=*q++;
}
23.下面程序段的运行结果是(C)。
#include \ main()
{
char s[]=\
t=s;
while( *t!='p')
{ printf(\t++;} }
A. EXAMPLE! B. example! C. EXAM D. example!
24.以下正确的程序段是(C)。
A. char s[]=\B. char s[20], *t=\C. char s[20]=\D. char *s=\
25.以下与库函数strcmp(char *s, chat *t)的功能不相等的程序段是(D)。
A. strcmp1( char *s, chat *t)
{ for ( ;*s++==*t++ ;) if (*s=='\\0') return 0; return (*s-*t);
}
B. strcmp2( char *s, char *t) { for ( ;*s++==*t++ ;)
if (!*s) return 0;
return (*s-*t); C. strcmp3( char *s, char *t) { for ( ;*t==*s ;)
{ if (!*t) return 0; t++; s++;}
return (*s-*t);
}
D. strcmp4( char *s, char *t)
{ for( ;*s==*t;s++,t++)
if (!*s) return 0; return (*t-*s); }
26.若有以下定义和语句:
int s[4][5], (*ps)[5]; ps=s;
则对s数组元素的正确引用形式是(C)。
A. ps+1 B. *(ps+3) C. ps[0][2] D. *(ps+1)+3 27.不合法的main函数命令行参数表示形式是:(B)。
A. main( int a, char *c[]) B. main(int argc, char *argv)
C. main( int arc, char **arv) D. main( int argv, char*argc[])
28.若有说明语句:char s[]=\is a example.\*t=\is a example.\
则以下不正确的叙述(B)。
A. s表示的是第一个字符i的地址,s+1表示的是第二个字符t的地址 B. t指向另外的字符串时,字符串的长度不受限制 C. t变量中存放的地址值可以改变 D. s中只能存放16个字符
29.若已定义char s[10];则在下面表达式中不表示s[1]地址的是(B)。
A. s+1 B. s++ C. &s[0]+1 D. &s[1] 30.下面程序段的运行结果是(A)。(注:└┘代表空格)
#include \ main()
{ char s[6];
s=\
printf(\}
A. \. \└┘\. \\\. 编译出错 31.执行以下程序后,a的值为【1】, b的值为【2】。
#include
int a, b, k=4, m=6, *p=&k, *q=&m; a=p==&m;
b=(-*p)/(*q)+7; printf(\printf(\}
【1】 A. -1 B. 1 C. 0 D. 4 【2】 A. 5 B. 6 C. 7 D. 10 32.下面程序的功能是将字符串s的所有字符传送到字符串t中,要求每传递三
个字符后再存放一个空格,例如字符串s为\,则字符串t为\def g\请选择填空。C A #include \ #include \ main()
{
int j, k=0;
char s[60], t[100], *p; p=s;
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C语言指针练习+答案+讲解(2)在线全文阅读。
相关推荐: