程序设计试题集
一、 单项选择题
1.1.定义一个具有10个元素的整型数组,应当使用代码是
A.int a[10]; B.int a[2, 5]; C.int a[]; D.int *a[10];
1.2.设int a = 8, b = 7, c = 6, x = 1;执行以下语句后x的值是 if (a > 6) if (b > 7) if (c > 8) x = 2; else x = 3;
A.0 B.1 C.2 D.3
1.3.下列代码中,正确的数组定义是
① int a[ ] = {―string‖}; ② int a[5] = {0, 1, 2, 3, 4, 5}; ③ char a = {―string‖}; ④ char a[ ] = {0, 1, 2, 3, 4, 5}; A.① B.② C.③ D.④
1.4.字符串‖abc\\x43\\\\\\np\\102q‖的长度是 A.9 B.12 C.13 D.17
1.5.执行下列程序后,输出的结果是
#define M(a, b) (a) > (b)?(a)+(b):(a)-(b) void main()
{ int i = 10, j = 15; printf(―%d\\n‖, 10*M(i, j)); } A.10 B.25 C.250 D.-50
1.6.执行下列程序后,输出的结果是
#define M(a, b) (a) > (b)?(a):(b)
void main()
{ int i = 10, j = 5; printf(―%d\\n‖, M(i, j)*10); } A.10 B.5 C.100 D.150
1.7.计算立方数时,不可能引起二义性的宏定义是
A. #define S(x) x*x*x B.#define S(x) (x)*(x)*(x) C.#define S(x) (x*x*x) D.#define S(x) ((x)*(x) *(x))
1.8.下列代码中,正确的是
A. char a[3][ ] = {?abc‘, ?1‘}; B. char a[ ][3] = {?abc‘, ?1‘}; C. char a[3][ ] = {―ab‖, ―12‖}; D. char a[ ][3] = {―ab‖, ―12‖};
1.9.设char str1[10] = ―ABCDE‖, str2[10] = ―xyzuvw‖; 则执行以下语句后的输出结果是
printf(―%d‖, strlen(strcpy(str1, str2))); A.12 B.11 C.8 D.6
1.10.以只写方式打开一个二进制文件,应选择的使用方式是
1--34 注:解答写在答卷纸上,试卷中的解答不评分
A.‖a+‖ B.‖w+‖ C.‖rb‖ D.‖wb‖
1.11.设int x = 8, y, z; 执行y = z = x--; x = y == z后,变量x的值是 A.0 B.1 C.8 D.9
1.12.设变量m ,n ,a ,b ,c ,d均为0,执行(m = a==b)||(n=c==d)后,m ,n的值是 A. 0 ,0 B. 0 ,1 C. 1 ,0 D. 1 ,1
1.13.设int x[ ] = {2, 6, 5, 7, 9, 15, 12}, *p = x; 则不能正确引用数组元素的表达式是
A.*(p--) B.*(--p) C.*(p++) D.*(++p)
1.14.根据变量定义“static int b[5];”,b[4]的值是。 A.1 B.0 C.2 D.不确定
1.15.设int a = 9, b = 8, c = 7, x = 5;执行语句 if (a > 7) if (b > 8) if (c > 9) x = 3; else x = 4; 后x的值是
A.1 B.5 C.3 D.4
1.16 下列字符列中,可以作为“字符串常量”的是 A. ABC B. \ABC\′abc′ D. ′a′
1.17下列数据类型中,不属于构造类型是
A. 实型 B.数组型 C.结构型 D.联合(共用)型
1.18下面所列常量中,都是C语言整型常量的是。
A. 0xffff 和 611 B.01b 和 0xa1 C.986.012 和 0667 D.2e4 和 0x
1.19若有以下变量定义和输入语句,要求a1、a2、c1和c2的值分别为10、20、A和B。是正确的输入方式。
int a1, a2; char c1, c2;
scanf(″%d%c%d%c″, &a1, &c1, &a2, &c2)
A. 10 A 20 B↙ B.10 A 20B↙ C.10A 20 B↙ D.10A 20B↙
1.20 若变量b的值为3,则执行语句 b += b -= b*b后,变量b的值是( )。 A. 3 B.0 C.-12 D.9
1.21 若a、b和c均为整型变量,则执行以下语句后,变量a、b和c的值为( )。 a = 0; b = 2; c = 1; a++ && ++b || ++c
A.1、3、2 B.0、3、2 C.1、2、2 D.0、2、2
1.22 将数学公式√|yx + ey| 写成C表达式,正确的是。 A.sqrt(abs(pow(x, y) + exp(y))) B.sqrt(abs(pow(y, x) + exp(y)))
2--34 注:解答写在答卷纸上,试卷中的解答不评分
C.sqrt(fabs(pow(x, y) + exp(y))) D.sqrt(fabs(pow(y, x) + exp(y)))
1.23 函数调用时,下列说法中不正确的是
A. 形参不分配内存 B.实参和形参可以同名 C.主调函数和被调用函数可以不在同一个文件中 D.函数可以使用全局变量
1.24 若有变量定义:“int i, j = 7, *p = &i;”,则与“i = j;”等价的代码是 A. i = *p; B. *p = *&j; C. i = &j; D. i = **p;
1.25 若希望存储字符串,下列各代码中,正确的是
A. char s[5] = {\′A′, ′B′, ′C′, ′D′, ′E′}; C. char *s; s = \
1.26 设有代码“int a = 3;”,则执行了语句“a += a -= a * a ;”后,变量a的值是 A. 3 B. 0 C. 9 D. –12
1.27 设有如下定义,则正确的叙述为
char x[ ] = \, y[ ] = {'a', 'b', 'c', 'd', 'e', 'f', 'g'}; A.x和y的长度和内容相同 B.x和y的长度相同
C.x的长度大于y的长度 D.x的长度小于y的长度
1.28 设a,b为字符型变量,执行scanf(\a=%c,b=%c\, &a, &b)后使a为',A',,b为',B',,从键盘上的正确输入是
A. 'A''B' B.'A', 'B' C.A=A,B=B D. a=A,b=B
1.29若有以下的定义,则值为3的表达式是
int a[ ] = {1,2,3,4,5,6,7,8,9,10}, *p = a; A.p+=2,*(p++) B.p+=2, *++p C.p+=3, *p++ D.p+=2, ++*p
1.30设a为5,执行下列代码后,b的值不为2的是
A. b = a/2 B. b = 6-(--a) C. b = a%2 D. b = a < 3 ? 3: 2
二、填空题
2.1.设 int x[ ] = {1, 2, 3, 4}, y, *p = &x[1];则执行语句: y = (*--p)++; 后变量y的值为▁▁▁▁ 。
2.2.下面函数的功能是寻找链表h中最大值,并返回。试给出其中空框中的代码。
struct node { int val; struct node *next;}; int traveLink(struct node *h) { struct node *p; int m;
for(m = h->val, p = h; p != NULL; ▁▁▁▁) if(▁▁▁▁) m = p->val; return m; }
3--34 注:解答写在答卷纸上,试卷中的解答不评分
2.3.下面函数的功能是寻找链表h中最小值,并返回。试给出空框中的代码。
struct node { int val;
struct node *next; };
int traveLink(struct node *h) { struct node *p; int m;
for(m = h->val, p = h; p != NULL; ▁▁▁▁) if(▁▁▁▁) m = p->val; return m; }
2.4.希望通过函数调用,能改变某个int类型的变量值,则对应形参的类型是▁▁▁▁。
2.5.设 FILE *fp; 函数调用fp = fopen(―ABC.dat‖, ―r‖)的作用是▁▁▁▁。
2.6.设 int a[4][5], *p = a[3]; 该指针变量p指向的元素是▁▁▁▁。
2.7设int x = 4; 以下表达式的值是▁▁▁▁ 。 x += x *= x + 1
2.8.执行语句“for(j = k = 0; j – 10; k += j++);”后k的值是▁▁▁▁ 。
2.9.若d是已定义的双精度变量,再定义一个指向d的指针变量p的代码是▁▁▁▁。
2.10.以下分别是算术、关系和逻辑运算符: +, &&, <, ! 其优先级最低的是_________ 。
2.11.希望通过函数调用,能改变某个int类型的变量值,则在这样的函数体中,应该采用▁▁▁▁方式引用与该变量对应的形参,才能改变这个变量的值。
2.12.设有FILE *fp; 函数调用fclose(fp)的作用是_________。
2.13.设 int a[2][5], *p = a[1]; 该指针变量p指向的元素是▁▁▁▁。
2.14.设 float *pm, m = 2.718;根据下列图示,建立指针变量pm和变量m之间的关系的赋值语句是_________。
m pm 2.718
2.15.下面函数的功能是将链表h中的末表元移止首表元之前,并返回。试给出其中空框中的代码。
struct node {
int val; struct node *next;
4--34 注:解答写在答卷纸上,试卷中的解答不评分
};
struct node * lastToFirstLink(struct node *h) { struct node *p;
if(h == NULL || h->next->next == NULL) return h; for(p = h; _________; p = p->next);
p->next->next = h; _________; p->next = NULL; return h; }
2.16.写出描述“a和b中有且只有一个小于x”的C表达式▁▁▁▁。
2.17.执行语句“for(j = k = 0; j – 8; k += j++);”后k的值是▁▁▁▁ 。
2.18.写出描述“x和y中有且只有一个大于z”的C表达式▁▁▁▁。
2.19.设a=1 ,b=2 ,c=3 ,d=4 ,则表达式a < b ? a : c < d ? a : d的结果为______。
2.20.设a为整型变量,表达数学关系式:10 < a < 15的C表达式是______。
2.21.若有定义:char a ; int b ; float c ; double d ; 则表达式a * b + d / c的值的类型为______。
2.22.设x 、y 、z 、t 均为int型变量,则执行以下语句后,t的值为______ 。 x = y = z = 1 ; t = ++x || ++y && ++z;
2.23.假定所有变量均已正确定义,下列程序段运行后 x 的值是______。 a = b = c = 0 ; x = 35 ;
if(!a)x-- ; else if(b); if(c)x = 3; else x = 4;
2.24.设有宏定义:#define F(N) 2*N
执行代码:printf(\后输出的结果是______。
2.25.表述20 < x < 30 或 x < - 100的C表达式是______。
2.26.设有代码“static int a[3][4]={{6 , 5} , {4 , 3} , {2 , 1}} ;”则a[1][1] 的值为______。
2.27. C代码“float (*f)[5];”的含义是______。
2.28.C程序有且只有一个________。
三、读函数或程序,写出函数的功能或程序的输出结果
3.1.#include
{ int s = 0;
while(n) {
5--34 注:解答写在答卷纸上,试卷中的解答不评分