中国地质大学(北京)继续教育学院 2012年03课程考试
《C语言程序设计》模拟题
一.单项选择题
(1) 变量的指针,其含义是指该变量的( B )。 A.值 B.地址 C.名 D.一个标志
(2) 设有变量定义int a=2, b=4, c=6, d=8;则表达式a>b? a: c>d? b: d的值是( D )。 A. 2 B. 4 C. 6 D.8 (3) C语言中用于结构化程序设计的三种基本结构是( A )。 A. 顺序结构、选择结构、循环结构 B. if、switch、break C. for、while、do-while D. if、for、continue
(4) 数组定义为\, 引用\表示( A )。
A. a数组第1行第3列元素的地址 B. a数组第1行第3列元素的值 C. a数组第4行的首地址 D. a数组第4列的首地址
(5) 设有变量定义struct str{int age;int num;}std,*p=&std;能正确引用结构变量std中成员age的表达式是( D )。
A. std->age B. * std->age C. *p.age D.(*p).age (6) C语言中,函数的隐含存储类型是( A )。
A. auto B. static C. extern D.register (7) 下面哪个表达式的值为4? ( D ) A. 11/3 B. 11.0/3
C. (float)11/3 D. (int)(11.0/3+0.5)
(8) 设有变量定义char * lang[]={“FOR”, “BAS”, “PAS”, “JAVA”, “C”};则表达式*lang[1]>*lang[3]的值是( B )。
A. 1 B. 0 C. 非零 D.负数 (9) 在一个C语言程序中,说法正确的是( B )。 A. main函数必须出现在所有函数之前 B. main函数可以在任何地方出现 C. main函数必须出现在所有函数之后 D. main函数必须出现在固定位置 (10) 下面哪个表达式的值为4? ( D ) A. 11/3 B. 11.0/3
C. (float)11/3 D. (int)(11.0/3+0.5)
(11) 设有变量定义double b[5], *p=b;则能正确表示b数组中元素地址的表达式是( A )。 A. b+1 B. p+5 C. &b[5] D. &b (12) 对基类和派生类的关系中错误的是( B )。 A.派生类是基类的具体化 B.派生类是基类定义的子集 C.派生类是基类的子集
D.派生类是对基类的改造
(13) 执行语句scanf(“%f,%f”, &a, &b);,要使变量a和b的值分别为2.97和3.46,正确的输入序列是( C )。
A. 2.97 3.46后跟回车 B. 2.97;3.46后跟回车 C. 2.97,3.46后跟回车
第1页(共7页)
中国地质大学(北京)继续教育学院 2012年03课程考试
(14) 设有变量定义int a[]= {1, 3, 5, 7, 9, 11, 13}, x, *p=a+2;在下列表达式中,能使变量x的值为5的表达式是( D )。
A. x=*(p+++1) B. x=* (--p) C. x=*(++p) D.x=*(p--)
二.概念填空
(1) 字符常量与字符串常量的区别是字符 常量用单引号,字符串常量用双引号 。 (2) 表达式x=x+1表示成增1表达式为 X++ 。
(3) C程序的基本组成单位是 函数 , 一个C源程序可以由一个或多个函数组成,但必须有一个且只能有一个main 函数。
(4) 若x为int型变量,则执行以下语句后x的值是 -14 。
x=7;
x+=x-=x+x;
(5) 在for循环体内使用continue语句的作用是 跳出该循环 。 (6) 表述“整型变量x,y和z至少有2个相等”的C语言表达式是 ((x==y)||((y==z)||(x==z)) 。 (7) 写出c语言中任意三种基本数据的类型 字符型 整型 浮点型 (8) 执行循环结构中的 continue 语句能够立即执行下一次循环。执行循环结构或switch结构中的 break 语句能够立即退出该结构。
三.程序填空
(1) 下列程序求以下方程的全部整数解:3x+2y-7z=5 (0<=x,y,z<=100) #include
int x, y, z;
for (x=0; x<=100; x++) for (y=0; y<=100; y++) {
if ((z=3*x+2*y-5)%7) continue; (C) ;
if ( (E) ) printf(\} }
(A) z %= 7 (B) z>=0 (C) z /= 7 (D) x!=0&&y!=0&&z!=0 (E) z>=0 && z<=100
(2) 下列程序完成10进制整数到任意进制数的转换。其中,函数itob(n,s,b) 将整数n 转换成b进制数并存放在字符串s中。如itob(n,s,16) 格式,将数n 转换成16进制数并存放在s中。
#include
void main(void) {
char str[20];
第2页(共7页)
中国地质大学(北京)继续教育学院 2012年03课程考试
int n, base;
printf(\scanf(\itob(n, str, base);
printf(\}
void reverse(char s[]) {
int c, i, j;
for (i=0, j=strlen(s)-1; i void itob(int n, char s[], int b) { int i=0, sign, t; if ((sign=n)<0) n = -n; do { t = n%b; if ( (B) ) s[i++] = t + 'A' - 10; else s[i++] = n%b + '0'; } while ( (C) ); if (sign<0) s[i++] = '-'; (F) ; reverse(s); } (A) t>10 (B) t>=10 (C) n/=b (D) n/b>0 (E) n%b>0 (F) s[i]=’\\0’ (G) s[i++]=’\\0’ (3) 下列函数检查表达式字符串的左右圆括号“(”和“)”是否配对,若配对则函数返回1,否则返回0。 int parenthbesis(char * exp) { char * p; int i; (A) ; for ( (F) ; (H) ; p++) if (*p=='(') i++; else if (*p==')') { i --; 第3页(共7页) 中国地质大学(北京)继续教育学院 2012年03课程考试 if ( (D) ) return 0; } if ( (B) ) return (1); else return (0); } (A) i = 0 (B) i == 0 (C) i>0 (D) i<0 (E) i>=0 (F) p=exp (G) p=strlen(exp) (H) *p ( I) p != NULL (J ) p==NULL (4) 下列函数用二分法在已按字母次序从小到大排序后的字符数组list[len]中查找字符ch。若ch在数组中,则返回ch在数组中的下标,否则返回-1。 int search(char * list, char ch, int len) { int low=0, high=len-1, k; while ( (B) ) { k = (low+high)/2; if ( (C) ) return (k); else if ( (E) ) high = k-1; else low = k+1; } return (-1); } (A) high!=low (B) high>=low (C) list[k]==ch (E) list[k]>ch (F) list[k] 四. 写出下列各程序运行时输出的结果 (1) include void main(void) { printf(“%d %d %d\\n”, p(1), p(1), p(2)); } int p(int x) { int z=1; static int y = 2; z ++; y++; return (x+y+z); } 答:6, 7, 9 (2). #include public: A(int i); (D) list[k]!=ch 第4页(共7页) 中国地质大学(北京)继续教育学院 2012年03课程考试 void print(); const int&r; private: const int a; statc const int b; } const intA::b+10 A::A(int i):a(i),r(a) { }void A::print() {