2018C语言复习题_第1页
2018C语言复习题_第2页
2018C语言复习题_第3页
2018C语言复习题_第4页
2018C语言复习题_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选文库C 语言复习题熟读理论教材,理解相关知识,并复习理论教材课后练习题( 切记:以理论教材知识、例题和课后练习为主复习 ) 熟读课本例题及知识,完成以下知识点的复习 及总结。?填空1. 一个 C 语言的执行是从本程序的 开始,到 结束?2. C 语言中用户的标识符命名规则是 。3. 在一个 c 语言程序中, main 函数的位置是 。4. 若有代数式p ( mne) /(bed), 其中 p、 m、 n、 e、 b、 c、 d 为变量,则该代数式的 C 语言表达式为 _ 。5. char a; int x; float y , m; double z , p;则表达式"a*x*m

2、+z-y*x*p ”值的数据类型为 。6. C 语言的常用关键字有 ( 举例说明,越多越好) 。7. printf 函数中用到格式符 ms, 其中数字 m 表示输出的字符串占用 m 列。如果字符串长度大于 m , 则输出时的规则是_ 。若如果字符串长度小于 m ,则输出时的规则是。若如果字符串长度等于 m ,则输出时的规则是_ 。当 m>0 时是左对齐还是右对齐? m<0呢?8. 已有定义“ int x ; float y ; 且执行 "seanf( “ 4d%f” , &x,&y); ”语句,若从第一列开始输入数据 9876543 ,则 x 的值为 _

3、。10. 能正确表示a -100 或 a = 100 的关系表达式是 。能正确表示a -100 且 a= 100 的关系表达式是_ 。11. 判断逻辑值为“真”的判断方法是。逻辑值为“假”的判断方法是。12. 已知 “ int x=100,y=200,z=300 ” , 则执行 if ( x>y) z=x;x=y;y=z 语句后,x、 y、 z 的值是 。13. 若 m 和 n 均为 int 型变量,则以下for 语句循环执行的次数 及输出结果是_ 。for(n=8,m=8;m!=8;m+,+n) printf( Welcome you!n ”) ;14. 若 n 为 int 型变量,则

4、循环语句“ for ( n=0;* 100;n+ )”控制循环体执行 次。15. 在循环语句循环体中执行continue 语句,其作用是 ,break 的作用是 _; 在 swich()Case 语句中 break 语句作用是 _ 。16. 关于函数的参数,实参可以是_, 形参可以是_,A.表达式;B变量c.常量D.默认值17. C 语言的编译系统对宏命令的处理是在什么时间进行 _18. 在 C 语言中,函数返回值的类型最终取决于 _19. 定义二维整型数组b 时,该数组行号和列号是否可以为变量?20. 对一维数组和二维数组定义及初始化的方法进行总结,并举例说明 _21. 若有以下语句, ch

5、ar a= "abcdefgh ” ; char b= a ; 'b','c : 'd,' ,'f : ' : ''则 a 和 b 数组长度 分别 为和22. 设有定义“ int n仁0,n2,*p=&n2,*q=&n1; ",以下赋值语句中与"n2=n1; ”语句等价的是另外一种表示语句为23. 如有语句“ int q=100,*p=&q; ",下面均代表地址的一组选项是 A. q,p,*&q B. & *q, &q,*p C. *&

6、amp;p, p,&q D. float *q, &*p ,p24.若有说明语句“ i nt m, a1010; ” ,则不能将a11的值赋给变量m的语句是A. m=*(*(a+1)+1); B. m=a11 C. m=*(*(a+1) D. m=*(a1)+1)25 .下面程序的运行结果是 char str= "n " ,*(p+3);26 . C语言结构体类型变量在程序执行期间驻留在内存中的包括 27 .以下关于结构体与共用体的共同点和区别是 ,他们如何分配空间的?28 .已有定义“ int a,b,c; ",且a=b=c=20 ,执行if(a

7、+|b+) C+语句后,a、b、c的值是分别已有定义“ int a,b,c; "且a=b=c=20,执行if(a+&&b+) C+;语句后,a、b、c的值是分别是29 . 在一个源文件中定义的全局变量和局部变量的作用域为 和30 .在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是什么?如果 实参是地址值呢?不同的是什么?31 .有以下程序,结果为 ovoid mai n() int a5=1,2, 3, 4, 5;int *pa=&a1;printf( " d1);32 .下面函数调用语句含有实参的个数为 。y = fun(a, b

8、, c, min(d ,e),max(a,b);33 .以下程序的输出结果是 olong fib(i nt n)if(n>2)return(fib( n-1)+fib( n-2); elsereturn (2);void mai n() printf("%ld'n", fib(5); 34 .若有以下语句 int a,*p,*p; a=808 ; p=&a ; pp=&p ;则 *PP 的值是。35 .设有如下定义:int *p( ); int a10, *q1O;qi=&ai 则 p 表示的意义是 ,*q 的表示的含义是 ,其值是 。

9、38 .若有 #define MU(x,y) x*y ,则表达式 24/MU(1+2,2)的值是。39 .若有int a=1;则执行完循环语句 while( a+<100 );后a的值为 。40 .以下所列的C语言常量中,错误的是 。A. 0xFFB. 2.8e0.2C. 25.3D. 'B'41 .所有的字符串都是以 字符结束的。42假定double类型变量占用8个字节,且有定义:double x10=1,2,3;,则数组x在内存 中所占字节数是43判断char型变量ch是否为小写字母的正确表达式是 44 .以下语句正确的有 ,错误的有13A char a='P

10、' ,b='M'B float a=b=101.0;C int m=101,*n=&m;D double *a,b=&a;45 .以下4个选项中,不能看做一条语句的是 A . a-=23; B . a=8,b=12.5,c=13.68;B. if (a<15)p+; D . if (b!=5) x=2;y=6;46供于if后一对圆括号中的表达式,可以是哪种类型的表达式 47 .以下有关变量使用范围不正确的说法是 A在不同函数中可以使用同名的变量 C在函数内定义的变量只在本函数内有效48 .则能正确从键盘读入句是。A. scanf("%d%

11、d",&a,d);C. scanf("%d%d",a,d);49 .已知int p=20;则执行if(p<=0)B形式参数是局部变量D全局变量可以在所有函数中使用若有说明语句:int a,b,*d=&b ;,2个整数分别赋给变量a、b的语B. scanf("%d%d”,&a,&d);D . scanf("%d%d",a,*d);else printf( CCCCCif(p!=0) printf( AAAAA " ; else printf( BBBBB语句后,输出的结果是 50 .要使字

12、符数组str存放一个字符串"Goodbye",正确的定义语句是 51 .若用二维数组名作为函数调用的实参,传递给形参的值是。52 .若有int x=20 , y=8 , z;,则执行语句 z=0.7+x/y后z的值为。53 .设有以下语句:struct SSint no; char name 10; PERSON ;则下面叙述中错误的是 oA struct是结构体类型的关键字B struct SS是结构体类型C PERSON 是结构体类型名D name是结构体成员名54. 已知:char ch='m'贝下列表达式的而一二zzzzzzzzzzzzzzzzzzz

13、z_。ch = (ch>='a'&&ch<='z') ? (ch-32) : ch;55. 下面程序的运行结果是char c8='a',''0, 'b',''0','c',''0'prin tf("%s",c);56. 以下程序的输出结果是mai n() char st20= "10987654321、nt nt”;prin tf("%d n " strle n(st);57

14、. 有如下程序,该程序的输出结果是mai n() float x=2.0, y;if( x<0.0 )y=0.0;else if( x<10.0 )y=1.0/x+1/4;else y=10.0;prin tf( "%fn",y);58. 以下程序段的输出结果是mai n() int a10=123,4,5,678,9,10, *p=&a2;prin tf( "%d”, *(p+3);59用如下程序,该程序的执行结果是 omain () int i, sum=O;for(i=1; i<=10; i+) sum += i;prin tf(

15、"%dn", sum);60.以下程序段,while循环执行的次数是int k=0; while( k = 2) k = k -1; 60 ?吾言使用的磁盘文件系统中,数据文件存储的的形式有哪两种61?文件函数中,用于打开文件的函数是 ,用于关闭文件的函数是 读写文件中字符的函数是 ,将一个字符写入磁盘文件的函数是 。二.编程1.已知某班10个学生的C语言成绩为学号9901990299039904990599069907990899099910C成绩65.486.769.888.510092.687.354.896.379.6要求:按成绩大小排序输出,格式如下: 学号成绩名

16、次9905 100.01990996.32参考答案:#i nclude "stdio.h"void mai n() static int num10=,i,j,p,t;static float sc10=65.4,86.7,69.8,88.5,100,92.6,87.3,54.8,96.3,79.6,f;prin tf("the origi nal data:n");prin tf("学号 成绩 n=n");for(i=0;i<10;i+)prin tf("%6d %6.1fn", numi,sci);for

17、(i=0;i<9;i+) p=i;for(j=i+1;j<10;j+)if(scp<scj) p=j;if(p!=i)for(j=0;j<10;j+) t=nu mp; nu mp=nu mi; nu mi=t;f=scp; scp=sci; sci=f;prin tf("the sorted data:' n");prin tf(" 学号成绩名次 n=n");for(i=0;i<10;i+)printf("%6d %6.1f %dn " numi,sci,i+1);2?伤J 8.3编写一个交换两

18、个变量的函数,在主程序中调用,实现两个变量值的交换。#in clude <stdio.h>void mai n() int a , b;int *pa , *pb ;void swap(int *p1 , int *p2) ;/* 函数声明 */scanf( " %d%d &a , &b);pa= &a;/* pa 指向变量 a */pb= &b;/* pb 指向变量 b */swap(pa , pb);printf( na = %d , b= n", a, b);void swap(int *p1 , int *p2) int

19、temp ;temp = *p1;/*三行语句交换指针 pl, p2所指向的变量的值*/*p1 = *p2 ;*p2 = temp;m!3.例6.5编程求组合Cm=n !(m n)!分别定义求组合的函数和求阶乘的函数:/*定义求阶乘的函数 */*定义组合函数*/*嵌套调用阶乘函数*/#in clude <stdio.h>long fac(int k)long f = 1;int i ;for(i = 1; i< = k; i + + ) f = f * i ;return f ;long comb(int n , int m) long c ;c = fac(m)/ (fac

20、(n)* fac(m n);return c;main () intn , m; long c ;scanf( " ,d%d , &n , &m);c = comb (n , m);/*调用组合函数*/printf (" %ld)';4?伤J 6.6输入两个数,输出其中较大的数。#in elude <stdio.h>void mai n() int a , b, m ;int max(int , int );/* 对函数 max 的声明 */scanf( " %d' , &a , &b);m = max(

21、a , b);/*调用函数 max, a、b已有具体的值*/printf("用d' , m);int max(int x , int y) int t;if (x>y)t = x;else t = y;return t;如果运行时输入:10, 5输出为105 .例6.8用递归计算n! o程序:#in clude <stdio.h>long fac(i nt n)long f ;if (n = 0)f = 1 ;eslef = n * fac(n 1);/* 递归调用,求(n 1)! */return f;void mai n()long y ;int n;s

22、canf( " %d'&n);y = fac(n);/* 调用 fac(n)求 n! */printf( " ! %A %ld", n, y);程序运行时如果输入:36 . 例5.9找出3? 1 000中的全部素数。程序:#in elude <math.h>void mai n() unsigned int i , j, count, flag ; /* 用 flag 作标志 */count = 0;/* 计数器清 0*/for(i = 3; i< = 1000; i + ) flag = 0;for(j = 2; j< =

23、 sqrt(i) ; j + + ) if (i % j = 0)/*能整除,不是素数,标志设为1 */ flag = 1; break ; /*内循环结束*/if (flag = 0) /* 若 flag 为 0,则 i 是素数 */ printf( " %4'd i ); count + + ;if (count % 8 = 0)printf( n " );/*每行输出 8 个素数 */*外循环*/7.#in clude <stdio.h>例8.1从键盘输入两个整数到a、b,按由大到小输出。void mai n()int a, b, *pa = &a

24、mp;a , *pb = &b , *p ;/*定义指针变量pa、pb,弁进行初始化,如图8.4(a)所示*/scanf( " %d%d &a , &b);if (*pa v *pb) p= pa;/*进行指针交换,如图pa= pb;pb= p;printf( n 'a = %d, b= n", a, b);printf( n "max = %d , min = %d', *pa, *pb);输入:12 22/输出:a= 12, b= 22max = 22, min = 128.4(b)和图 8.4(c)所示 */* pa指向大数,pb指向小数*/8.二维数组, 号。例8.14用指向一维数组的行指针输出弁输出数组中的最大元素及所在行列#in elude <stdio.h>

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论