当前位置:文档之家› 贵州大学2012-2013C语言考试A卷 附 重要考点复习资料

贵州大学2012-2013C语言考试A卷 附 重要考点复习资料

贵州大学2012-20103学年第一学期考试试卷 AC语言程序设计满分100分,考试时间为120分钟。

一、单项选择题(选出一个正确答案,每小题2分,共20分)1.完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为( )A.连接、编译B. 连接、运行C. 编译、运行D. 编译、连接2.下列说法正确的是()A.一个c语言程序并非总是从主函数位置开始执行的B.一个c语言程序有且只有一个主函数C.函数可以嵌套定义,不可以嵌套调用D.程序函数的位置不可以任意3.下面是合法C语言标识符的是()A. 2A_K;B. _M+N;C. –M3;D. AC_2;4.下列格式符中,可以用于控制字符输出的是( )A. %dB. %fC. %oD. %c5.设x、y、z和k都是int型变量,则执行表达式x=(y=4,z=16,k=30)后,x的值是( )A. 4;B. 16;C. 30;D. 50;6.执行语句“for(i=1,s=0;i<=5;i++) s+=i;”后,变量s、i的当前值是( )A. 10,5B. 15,6C. 15,5D. 10,67.若有定义 int x,*p;,则以下正确的赋值表达式是( )A. p=x;B. p=&x;C. *p=&x;D. *p=*x;8.以下对结构体类型变量的定义中,不正确的是( )A. typedef struct aaB. #define AA struct aa{ int n;AA { int n; float m; float m; }AA; }stud; AA stud;C. structD. struct { int n; { int n; float m; float m; }aa; }stud; struct aa stud;9.有如下函数调用语句:func(rec1,rec2+rec3,(rec4+rec5)); 函数调用语句中,含有的实参个数是( )A. 3B. 4C. 5D. 以上均不是10.对于以下宏定义: #define SQ(x) x*x#define QQ(x,y) SQ(x)- SQ(y) 宏调用QQ(2*3,2+3)执行后值为( )A.25B.11C.43D.以上均不是二、填空题(每空2分,共20分)1.设int a=5, c=32;float b=2.5;,表达式b+c/a的值为___ ___2.若x和a均是int型变量,则计算x=(a=4,6*2)后x的值是 __。

3.设a=3,b=4,c=5。

则a+b>c&&b==c的值为 ___。

4.有如下程序段:int k=10;while(k=0) k=k-1;则循环体语句执行___ 次。

5.int i=0,s=0; while (i<n) s+=i++; 等价于 int i,s;for(______;________;________);6.将p说明为字符数组指针,数组大小为10,应写为______________;7.对于 int *p,*q,i=5,j=6; ,执行:p=&i;q=p;p=&j;输出结果(*p)=_______,(*q)=________。

三、程序阅读题(请写出程序的输出结果。

每题6分,共30分)1. #include <stdio.h>main(){int i,j,m,n;i=8; j=10; m=++i; n=j++;printf(″%d, %d, %d, %d″,i,j,m,n);}输出结果:2 . #include <stdio.h>main(){ int i;for(i=3;i<10;i++){ if(i*i/20>1) break;printf("%d; ",i); }printf("\n"); }输出结果:3. #include <stdio.h>int fac(int n){ static int f=1;f=f*n;return(f); }main(){ int i;for(i=2;i<=5;i++)printf(“%d!=%d\n”,i,fac(i)); }输出结果:4. #include <stdio.h>main(){ char s[ ]=“ABCD”,*p;for(p=s+1; *p!=’\0’; p++)printf(“%s\n”,p);}输出结果:5. #include <stdio.h>int f(char *s){ int k=0;while(*s) k=k*10+*s++-‘0’;return(k); }main( ){ int a;a=f(“1234”);printf(“a=%d\n”,a); }输出结果:四、根据下列各编程题题意填空(每空2分,共10分)1、用for循环打印 1 4 7 10 13 16 19 22 25 , 其语句应为:for (i=1; i<=9; i++) printf(“%3d”, ___);2、程序A如下:int f(int n){if(n<=1) return n;else return f(n-1)+f(n-2); }等价于程序B:int f(int n){ _____; t0=0;t1=1;t=n;while(_____) {t=______; t0=t1; t1=t;n--; }return ______;}五、编程题(第1题8分,第2题12分,共20分)1.求分数序列:2/1,3/2,5/3,8/5,13/8,21/13,…,的前20项之和。

2. 输入5个字符串,从中找出最大的字符串并输出。

要求:用二维字符数组存放这5个字符串,用指针数组元素分别指向这5个字符串,用一个二级指针变量指向这个指针数组。

答案一、单项选择题(每小题2分,共20分)1-5、DBDDC 6-10、BBCAC二、填空题(每空2分,共20分)1.8.52. 123. 04. 05. i=0,s=0; i<n; s+=i++6. char (*p)[10]7. 6 , 5三、程序阅读题(每题6分,共30分)1 9,11,9,102. 3;4;5;6;3. 2!=23!=64!=245!=1204 BCDCDD5 1234四、根据下列各编程题题意填空(每空2分,共10分)1. 3*i-22. int t0,t1,t n>=2 t0+t1 t五、编程题(第1题8分,第2题12分,共20分)1. #include <stdio.h>main( ){ int n,t; float a=2,b=1,s=0;for (n=1;n<=20;n++){ s=s+a/b;t=a; a+=b;b=t; }printf(“the total is %f\n”,s); }2. #include <stdio.h>main( ){ char a[5][80],*p[5],**q,**max; int i;for (i=0;i<5;i++)p[i]=a[i];for (i=0;i<5;i++)gets(p[i]);max=&p[0];q=&p[1];for (i=1;i<5;i++,q++)if (strcmp(*max,*q)<0 max=q; puts(*max); }C语言最重要的知识点总体上必须清楚的:1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。

2)读程序都要从main( )入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。

3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址.4)bit是位是指为0 或者1。

byte是指字节, 一个字节= 八个位.概念常考到的:1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。

C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。

2、define PI 3.1415926; 这个写法是错误的,一定不能出现分号。

3、每个C语言程序中main函数是有且只有一个。

4、在函数中不可以再定义函数。

5、算法:可以没有输入,但是一定要有输出。

6、break可用于循环结构和switch语句。

7、逗号运算符的级别最低,赋值的级别倒数第二。

第一章C语言的基础知识第一节、对C语言的基础认识1、C语言编写的程序称为源程序,又称为编译单位。

2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。

3、一个C语言程序有且只有一个main函数,是程序运行的起点。

第二节、熟悉vc++1、VC是软件,用来运行写的C语言程序。

2、每个C语言程序写完后,都是先编译,后链接,最后运行。

(.c---→.obj---→.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe 文件才可以运行。

(常考!)第三节、标识符所谓标识符是指常量、变量、语句标号以及用户自定义函数的名称。

C语言规定标识符只能由字母、数字、下划线组成,并且只能由字母、下划线开头。

一些标识符被赋于特定的含义就叫做保留字(或称为关键字)。

1、标识符(必考内容):合法的要求是由字母,数字,下划线组成。

有其它元素就错了。

并且第一个必须为字母或则是下划线。

第一个为数字就错了2、标识符分为关键字、预定义标识符、用户标识符。

关键字:不可以作为用户标识符号。

main define scanf printf 都不是关键字。

迷惑你的地方If是可以做为用户标识符。

因为If中的第一个字母大写了,所以不是关键字。

预定义标识符:背诵define scanf printf include。

记住预定义标识符可以做为用户标识符。

用户标识符:基本上每年都考,详细请见书上习题。

第四节:进制的转换十进制转换成二进制、八进制、十六进制。

二进制、八进制、十六进制转换成十进制。

第五节:整数与实数1)C语言只有八、十、十六进制,没有二进制。

但是运行时候,所有的进制都要转换成二进制来进行处理。

(考过两次)a、C语言中的八进制规定要以0开头。

018的数值是非法的,八进制是没有8的,逢8进1。

b、C语言中的十六进制规定要以0x开头。

2)小数的合法写法:C语言小数点两边有一个是零的话,可以不用写。

1.0在C语言中可写成1.0.1在C语言中可以写成.1。

3)实型数据的合法形式:a、2.333e-1 就是合法的,且数据是2.333×10-1。

b、考试口诀:e前e后必有数,e后必为整数。

相关主题