《C语言期末考试复习资料.docx》由会员分享,可在线阅读,更多相关《C语言期末考试复习资料.docx(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言期末考试复习资料C语言复习摘要一、数据类型:基本类型(整型、实型、字符型、枚举类型), 构造类型(数组、结构体、共用体)、指针类型、空类型。基本类型 也叫简单类型,构造类型也叫复杂类型二、标识符:标识符只能由字母、下划线、数字构成,且必须以 字母或下划线开头,且对字母的大小写敏感。三、常量1、整型常量,如:32 , 0x32 , 0X32 , 0x3f , Oxea , 8L , 81 , 0672、实型常量,如:3.14 , le23 , 0.8E8 , 0.8E-8 , 0.8E+83、字符常量,如:目,n , N4、字符串常量,如:windows ,(其赋值表达式和赋值语句中其本质
2、是一个地址常量)5、地址常量,若有定义:int k , a10 ; char s20;贝:&k , a , s , NULL都是地址常量6、符号常量,用宏定义实现,如:#define PAI 3.14159267、以下都是非法常量:Oxfg , 3.1e2.8 , aw , w ,0x , 068四、表达式(要点:先确定表达式的类型,再确定表达式的值的 类型,最后确定表达式的值):1、算术表达式(应注意变量类型的自动转换一原则:低级向 高级转换):(1)、整型表达式:参加运算的都是整型量,结果也是整型数。 如:x+20*9 + 3(2)、实型表达式:参加运算的都是实型量,运算过程中先转换 成
3、double 型,结果也是 double 型。如:x+20*9+3.0 , x+20*9+sqrt ( 3 )2、赋值表达式:将赋值运算符”二右边的值赋给左边的变量,while(a)c=sub ( a );a=a/2 ;ei + +=c ;)for(; i0 ; i) printf( %6 , ei-l);)12、程序填空1、以下程序的功能是:找出1100000中能被23整除的整数, 要求按每行5个数的格式输出。#includevoid main(void)long int m , k=OL ;for ( m = lL ; m = 100000L ; m + + )if() printf (
4、%10ld , m );k+ ;if ( k%5 =0);)2、以下程序的功能是根据公式e=l+l/l! + l/2! + l/3! + .求e的 近似值,精度要求为最后一项的值小于10-6。#includevoid main(void) int i ;double e , t;;t=1.0 ;for (i=l ; ; i+ )t*= ( double)i ; e+= (1.0/t) ; printf( /e=%fn/ , e);) 3、设数组a包含10个整型元素。下面/a)程序的功能是将a中的元素反序放入数组b中,即将a0赋给 b9 , al赋给b8,然后按每行3个元素输出数组b中元素的值。
5、#includevoid main(void)int a10 , b10 , i ;for (i=0 ; i10 ; i+ ) scant ( %d” ,&ai);for (i=0 ; i10 ; i+ );for (i=0 ; i10 ; i+ ) printf ( %4d , bi);if ( ) printf ( n);)4、函数Sort是对N元整型数组排序(从大到小)。void Sort(int a , int N)int i , j , t;for(i=0 ; in-l ; i + +)for(j=i + l ; ; j + +)if(ai aj)t=ai ; ai=aj ; aj=
6、t; 3,ab , (a=3 ) (b=5 ) , (ab) ( bc)假设:int a = l,b=2,c=3;则:(cba )的值是 05、强制类型表达式:用(类型)运算符使表达式的类型进 行强制转换。如:(float )a又如:(int *)6、逗号表达式(也叫顺序表达式):形式为:表达式1 ,表达式2 ,表达式n顺序求出表达式1 ,表达式2,表达式n的值。其结果为表达 式n (最后一个表达式)的值。如(假设有说明:int x; x=10 , x*2 , x+37、条件表达式:形式为:表达式0 ?表达式1 :表达式2若表达式0的值非零,则条件表达式的值等于表达式r的 值。若表达式0的值为
7、零,则条件表达式的值等于“表达式2的 值。如:设:int x=6则(x6) ? ( 0?x+l : x-1) : ( 10?2*x : x/2 )的值为:12。8、数学表达式转换为C语言表达式五、自加、自减运算:若有定义:int k=5 ;则:表达式: (k+)、(+ + k)、(k-)、(-k)有何区别?六、控制结构:1、选择控制:if, switch2、循环控制:while , do while , for (不要使用 goto )七、预处理命令:#define宏名字符串#define宏名(参数1 ,参数2,参数n )字符串include 文件名(或文件名)八、函数:1、函数的定义、函数的
8、原型说明2、函数的调用:嵌套调用(特别是递归调用)3、函数的形参类型(值传递、地址传递(C+ +中的传引用)九、指针:若有定义int *p ;则p是一个地址变量,*p等效于一 个整型变量。分析:int a3=5 , 8 , 20) , *p ; p=a ;则:*p+ , ( *p ) + , +*p , *+ + p有彳可区另J注意这三种运算符号,优先级别一样,结合次序是 从右向左十、链表:创建、释放、排序、追加节点、插入节点、十一、文件:使用文件的一般步骤是:打开文件一操作文件一 关闭文件。文件分为文本文件(也叫ASCII文件)和二进制文件。C语言复习练习题注:以下练习仅是考试中可能出现的题
9、型以及涉及到的部分算法, 需弄懂解题方法,绝不可死记答案一、填空题1、执行 inta = 12; a +二a-=a*a 语句后 a二;2、若 int x=4 ;则表达式:x? (10?x+l : x-1) : ( 0?2*x : x/2 ) 的值为3、写出表达式的值:9 + 5/2 ; 8+2=9 ; 8%3+6 ; ! ( 32 ) | ( 8!=7 );3/9*180 ; 5* d ; ! ( 8100);4、语句:nl=2 ; n2 = + + nl ; nl=n2+ ;执行后,nl=; n2=;5、若有定义:int a6 , *p=a ;则p+3表示;* ( p+3 )表示; *p+3
10、表示;6、语句printf( c:dos)的输出结果是;7、若有intx=3 , y=13 , z=2 ;执行语句z*=x- + ( +y )后, z的值是8、写出下列表达式的求值结果(1) 3 ! =5 ; ( 2 ) 1782%100*5 ;(3 ) sizeof ( long int) ; ( 4 ) 2/4* ( 5+4 );(5)2* e ; (6) ! ! (54);(7 )已知 x=0 , x? ( 0?x+l : x-1) : ( 8?x+4 : x/2 );9、若有 intx=3 , y=13 , z=2 ;执行语句 z*=x- + ( + +y )后, z=;10、语句pr
11、intf( c:dos)的输出结果是;11、设有宏定义 #define MOD(x,y) x%y则执行下面语句的输出为。int z,a=15,b=100 ;z=MOD(b,a);printf ( %dn , z );12、C语言存储字符串时,用特殊的字符表示字符串的结束13、定义C函数时,若函数没有返回值,则返回值类型应设为14、语句:int a = 5 , *p=&a ; *p+=2 ; printf ( %d%d , a , *p );输出的值是二、多项选择题1、与语句if (a!=0)等效的语句是()。(A )、if ( !a );(B )、if ( a );(C ) s if ( !a
12、 =0 ).;(D) s if (a0|a0)2、向磁盘上已有的文本文件添加字符串,文件打开的方式可以 是()。(A )、“r+ ; ( B )、a ; ( C )、w+ ; ( D )、 “a+3、若有定义int a34;以下哪些是对该数组元素正确的描述 ()o(A )、a32 ; ( B )、a23 ; ( C )、* ( a + 1) ; ( D )、 *(al + l)4、能正确计算5! (5的阶乘)的程序段是()o(A)、i = l;s=l; (B)s i = l;s=l;while (i = 5 ) while (i5 )s=s*i ; s=s*i ;i + + ; i + + ;
13、); );(C). i=l;s=l; (D). i = l;s=l;do dos二s*i ; s=s*i ;i + + ; i+ ;while (i = 5 ) ; while (i5 );5、若函数头文件已被正确的包含,以下能正确输入一个字符串 的C程序有()oA、char s41 ; scant ( %s ,s );B、char str41 , *s ; s=str; gets ( s );C、char *s ; scanf ( %s ,s );D、char *s ; s= ( char * ) malloc ( 41) ; scanf ( %s ,s );三、读程序,写出运行结果 ls
14、main() int i , j ;for (i=0 ; i=3 ; i + +)for (j=0 ; j = 5 ; j + +)if(i =0| j =0| i =3| j = = 5) printf (;else printf (;)printf( n);)2、当运行下面程序时,从键盘输入bookz books /运行结果是;char al80 , a280 , *sl=al, *s2=a2 ;gets(sl) ; gets(s2);if(!strcmp(sl , s2) printf(;else printf( );printf( %d , strlen(strcat(sl , s2)
15、;3、下面程序功能是求算式:xyz+yzz=532中x、y、z的值(其 中xyz和yzz分别表示一个3位数)。void main()int x , y , z , i , result=532 ;for(x=l ; x10 ; x+)for(y=l ; y10 ; y+) for( ; ; z+)i = 100*x+10*y+z+100*y+10*z+z ;if()printf( x=%d , y=%d , z=%dn/, , x , y , z);)4、若用0到9之间不同的3个数构成一个三位数,下面程序将统计共有多少不同的方法void main()int i , j , k , count=
16、0 ;for(i = l ; i=9 ; i +)for(j=0 ; j=9 ; j + +)if() continue ;else for(k=0 ; k=9 ; k+)if() count+ ;printf( %dn,count);)5、下面的程序是判断输入的字符串是否是“回文#include#includemain()char s81 , *pl , *p2 ; int n ;gets(s);n=strlen(s);pl=s ; p2=s+n-l ;while()(if(*pl!=*p2)break ;elsepl+ ; ; ) if(pl else printf( Yesn);)6、下
17、面程序功能是找出100到1000以内的素数。#includevoid main()int m , k , j ;for ( m=100 ; mk ) printf ( %5d , m )7、下面程序的运行结果是。#includevoid main(void)int a=2 , b=3 , c ;c=a ;if(ab) c=l ;else if(a = = b) c=0 ;else c=-l ;printf( /c=%d/ , c);)8、下面程序的运行结果是。#includevoid main(void)int a=40 , b=5 ;while(ba)b=2*b;a=a+10 ;)print
18、f ( Ha=%d , b=%d” , a , b );)9、下面程序的运行结果是。#includevoid main(void)int i , j ;for(i = l ; i=3 ; i +)for(j = l ; j=3 ; j+)if(i=j)|(i+j=4) printf();else printf(); 注:此处输出语句输出一个空格 printf( n);)10、下面程序运行时,若输入:SWJTU / ,则输出结果是。#includevoid main(void) char s81 , *p=s ;gets ( p );while ( *+ + p );while (p!=s) putchar ( *p );)11、下面程序运行时,若输入一个整数:20 ,则输出结果是。#includeint sub(int a)return(a%2);)void main ( void )int a , e10 , c , i=0 ;scanf( %d” ,&a ;