C语言试题-选择题及答案
A. printf(”%d\n”, min(a,b)); B. c=min(a, b); C. c=(*p)(a,b); D. p++;
第10 题: 已知static int a[2][3]={2,4,6,8,10,12}; 正确表示数组元素地址的是__A___。
A. *(a+1) B. *(a[1]+2) C. a[1]+3 D. a[0][0]
A. ps+2 B. s[2] C. ps[2] D. ps+=2, *ps
第28 题: 已知char b[5], *p=b; 则正确的赋值语句是__C__。
A. b=”abcd”; B. *b=”abcd”; C. p=”abcd”; D. *p=”abcd”;
★第29 题: 已知char s[100]; int i; 则在下列引用数组元素的语句中,错误的表示形式是___D___.
★第33 题: 说明语句int *(*p)(); 的含义是___D___。
A. p是一个指向int型数组的指针 B. p是指针变量,它构成了指针数组 C. p是一个指向函数的指针,该函数的返回值是一个整型 D. p是一个指向函数的指针,该函数的返回值是一个指向整型的指针
第34 题: 已知int a, *p=&a; 则下列函数调用中错误的是___D___。
A. scanf(”%d”, &a); B. scanf(”%d”, p); C. printf(”%d”, a); D. printf(”%d”, p);
第35 题: 已知int *p, a; 则语句p=&a; 中的运算符&的含义是___D___。
A. 位与运算 B. 逻辑与运算 C. 取指针内容 D. 取变量地址
{ printf(”%d\n”, ++*x); } main() { int a=25; prtv(&a); } A. 23 B. 24 C. 25 D. 26
第7 题: 阅读程序,选择程序的输出结果___B___。 #include <stdio.h> main()
{ static char a[ ]= ”language”, b[]=”program”; char *ptr1=a, *ptr2=b; int k; for(k=0; k<7; k++) if(*(ptr1+k)==*(ptr2+k)) printf(”%c”, *(ptr1+k));
A. *(ptr--) B. *(--ptr) C. *(ptr++) D. *(++ptr)
第15 题: 已知int *ptr1, *ptr2; 均指向同一个int类型一维数组中的不同元素,k为int类型变量,则下 面错误的赋值语句是___B___。
A. k=*ptr1+*ptr2; B. ptr2=k; C. ptr1=ptr2; D. k=*ptr1*(*ptr2);
第11 题: 已知int i, x[3][4]; 则不能将x[1][1]的值赋给变量i的语句是___C___。
A. i=*(*(x+1)+1) B. i=x[1][1] C. i=*(*(x+1)) D. i=*(x[1]+1)
★第12 题: 当c的值不为0时,在下列选项中能够将c的值赋给变量a、b的是___C____.
D. 将串str2复制到串str1中,再将串str1连接到str3之后
★第9 题: 设有以下程序段,则在main函数中使用语句__D___是无意义的。 main()
{ int min(); int a, b, c, (*p)(); p=min; …
} min(x, y) int x, y; {
… }
printf(“%d\n”, k); }
A. 20 B. 21 C. 22 D. 23
★第38 题: 下述程序的输出结果是__A___。
#include <stdio.h> main() { printf(“%f”, 2.5+1*7%2/4);
} A. 2.500000 B. 2.750000 C. 3.375000 D. 3.000000
puts(s);
} A. s[j++]=s[i]; B. s[++j]=s[i]; C. s[j]=s[i]; j++; D. s[j]=s[i]
第37 题: 阅读下列程序,选择程序的运行结果___B___。 #include <stdio.h> main()
{ int i, k, a[10], p[3]; k=5; for(i=0; i<10; i++) a[i]=i; for(i=0; i<3; i++) p[i]=a[i*(i+1)]; for(i=0; i<3; i++) k+=p[i]*2;
★第16 题: 已知chars1[10], *s2=”ab\0cdef”; 则执行语句strcpy(s1,s2); 后,变量s1的内容为___A____。
A. ab B. cdef C. ab\0cdef D. 内容不定
第17 题: 以下有关宏替换叙述中,错误的是___D___。
A. 宏替换不占用运行时间 B. 宏无类型名 C. 宏替换只是字符替换 D. 宏名必须用大写字母表示
f(int x, int y)
{ return(y-x);
}
main()
{
int (*g)(int,int);
int a=5, b=6, c=2;
g=f;
c=(*g)(a,b);
printf(“%d\n”, c);
}
A. 1
B. 2
C. 3
D. 前面3个答案均是错误的
第4 题: 阅读程序,选择程序的输出结果__D___。 #include <stdio.h>
A. 7 B. 8 C. 9 D. 以上3个答案都是错误的
第22 题: 已知int i=0, j=1, *p=&i, *q=&j; 错误的语句是___D___。
A. i=*&j; B. p=&*&i; C. j=*p++; D. i=*&q;
第23 题: 已知int a[]={1,2,3,4,5,6,7,8,9,10,11,12}, *p=a; 则值为3的表达式是___A___。
A. s[i+10] B. *(s+i) C. *(i+s) D. *((s++)+i)
第30 题: 已知char s[10], *p=s; 则下列语句中,错误的语句是__B___。
A. p=s+5; B. s=p+s; C. s[2]=p[4] D. *p=s[0];
第31题:(103) 以下程序的输出结果是___D___。
第26 题: 已知char **s; 正确的语句是__B___。
A. s=”computer”; B. *s=”computer”; C. **s=”computer”; D. *s=’A’;
★第27 题: 已知char s[20]= ”programming”, *ps=s; 则不能引用字母o的表达式是__A___。
#include <stdio.h> main() {
int x=10, y=10;
printf(“%d %d\n”, x--, --y); } A. 10 10 B. 9 9 C. 9 10 D. 10 9
第32 题: 已知double *p[6]; 它的含义是___C___。
A. p是指向double类型变量的指针 B. p是double类型数组 C. p是指针数组 D. p是数组指针
★第18 题: C语言主函数main最多允许有___B___个参数。
A. 1 B. 2 C. 0 D. 3
★第19 题: C语言的编译系统对宏定义是___D___。
A. 在程序运行时进行替换处理 B. 在程序连接时进行处理 C. 和源程序中其他C语句同时进行编译的 D. 在对源程序中其他成分正式编译之前进行处理的
第20 题: 已知int **p; 则变量p是___B___。
A. 指向int的指针 B. 指向指针的指针 C. int型变量 D. 以上3种说法均是错误的
★第21 题: 已知int i; char *s=”a\045+045\’b”; 执行语句for(i=0; *s++; i++); 之后,变量i的结果是 __B___。
} B. funb(int x, int y)
{ int t; t=x; x=y; y=t; }
C. func(int *x, int *y) { *x=*y; *y=*x; }
D. fund(int *x, int *y) { *x=*x+*y; *y=*x-*y; *x=*x-*y; }
第14 题: 已知int x[]={1,3,5,7,9,11}, *ptr=x; 则不能正确引用数组元素的语句是___B___。
A. p+=2, *(p++) B. p+=2, *++p C. p+=3, *p++ D. p+=2, ++*p
★第24 题: 已知int a[3][4], *p=a; p+=6; 那么*p和__D___的值相同。
A. *(a+6) B. *(&a[0]+6) C. *(a[1]+2) D. *(&a[0][0]+6)