各位同学圣诞节快乐!期末取得好成绩!1.基本要求熟练掌握C语言的基本知识具备基本的C程序设计能力,能熟练地阅读、理解和编制简短的C程序。C语言程序设计总复习2.基本内容2.1数据的定义2.2运算及流程控制2.3程序结构和函数2.4常用算法2.1数据的定义数据的定义包括数据类型和存储类别1、基本类型基本类型指整型、实型和字符型(主要是int,float,double,char;还包括long,unsigned,short)(1)常量熟练掌握各种表示形式的整数、实数、和字符(串)常量,符号常量的定义和使用。包括整数的十进制、八进制和十六进制的表示形式、长整型常量的表示形式,实数的浮点表示法和科学记数法,字符的转义序列(2)变量熟练掌握变量的定义和初始化2、构造类型构造类型包括数组和结构(1)数组熟练掌握一维和二维数组的定义和初始化,数组元素的引用。包括一维字符数组和字符串,二维字符数组和字符串数组数组定义为inta[3][2]={1,2,3,4,5,6},数组元素的值为6。不正确的赋值或赋初值的方式是______。A、charstr[]=string;B、charstr[7]={'s','t','r','i','n','g'};C、charstr[10];str=string;D、charstr[7]={'s','t','r','i','n','g',’\0’};表达式strcmp(“box”,“boss”)的值是一个____.A、正数B、负数C、0D、不确定的数a[2][1]#includestdio.hinta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};voidmain(){ints,k;for(s=0,k=0;k3;k++)s+=a[k][k];printf(%d--,s);for(s=0,k=0;k3;k++)s+=a[k][3-k];printf(%d--,s);}18--21--3、指针(1)熟练掌握指针和地址的概念(2)熟练掌握指针变量的定义和初始化(3)熟练掌握通过指针引用指向实体9aint*pa,a;pa=&a;printf(%d,%d,*pa,a);printf(%x,%x,pa,&a);pa2000若变量已正确定义并且指针p已经指向某个变量x,则(*p)++相当于_____。A、p++B、x++C、*(p++)D、&x++若p1、p2都是整型指针,p1已经指向变量x,要使p2也指向x,_____是正确的。A、p2=p1;B、p2=**p1;C、p2=&p1;D、p2=*p1;下列语句定义pf为指向float类型变量f的指针,_____是正确的。A、floatf,*pf=f;B、floatf,*pf=&f;C、float*pf=&f,f;D、floatf,pf=f;对于如下说明,语法和语义都正确的赋值是_____。intc,*s,a[]={1,3,5};A、c=*s;B、s[0]=a[0];C、s=&a[1];D、c=a;4、构造类型和指针类型的混合定义及应用(1)熟练掌握指针、数组和地址间的关系intc[]={1,3,5};int*k=c+1;printf(%d,*++k);charstr[]=hello\tworld\n;printf(%c\n,*(str+10));5d(2)熟练掌握指针数组写出下列程序段的输出结果。char*st[]={one,two,three,four};printf(%s\n,*(st+3)+1);our5、变量的存储类别、作用域和生存期(1)掌握变量的存储类别auto自动型、static静态型、extern外部参照型(2)掌握全局变量和局部变量注意区分:自动局部变量和静态局部变量、全局变量和静态全局变量、外部变量C语言中,形参的缺省的存储类说明是______。A、autoB、staticC、registerD、extern对于以下函数f,计算f(f(2))的值。intf(intx){staticintk=0;x+=k++;returnx;}32.2运算及流程控制1、基本运算熟练掌握运算符的功能熟练掌握运算符的优先级、结合性和目数熟练掌握隐式类型转换和强制类型转换2、表达式熟练掌握各类表达式的组成规则和计算过程若变量已正确定义且k的值是4,计算表达式(j=k--)后,j和k的值分别是_____。已知字符‘a’的ASCII码为97,执行下列语句的输出是_____。printf(%d,%c,’b’,’b’-1);4和398,a判断i和j至少有一个值为非0的表达式是_____。A、i!=0&&j!=0B、i||jC、!(i==0||j==0)D、i&&j若x是单精度实型变量,表达式(x=10/4)的值是_____。A、2.5B、2.0C、3D、2写出下列程序段的输出结果。floatx1,x2;x1=3/2;x2=x1/2;printf(%d,%.1f,(int)x1,x2);1,0.5下列运算符中,优先级最低的是_____。A、*B、!=C、+D、=算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为_____。A、算术运算、赋值运算、关系运算B、关系运算、赋值运算、算术运算C、算术运算、关系运算、赋值运算D、关系运算、算术运算、赋值运算3、语句(1)熟练掌握表达式语句、空语句、复合语句;(2)熟练掌握简单控制语句break、continue、return(3)熟练掌握选择控制语句if、switch(4)熟练掌握重复控制语句for、while、do—whileC语言程序的三种基本结构是顺序结构、选择结构和______结构。A、循环B、递归C、转移D、嵌套写出下列程序段的输出结果。charc,k;c=’b’;k=4;switch(c){case‘a’:k=1;case‘b’:k=2;case‘c’:k=3;}printf(%d\n,k);3写出下列程序段的输出结果。intk,x;for(k=0,x=0;k=9&&x!=10;k++)x+=2;printf(%d,%d,k,x);5,10输入12345#后,写出下列程序的输出结果。voidmain(){charc;for(c=getchar();getchar()!=’#’;c=getchar())putchar(c);}intk;char*s=“ABC”;for(k=10;k!=0;k--);printf(%d,k);while(*s++)putchar(*s);1,30BC2.3程序结构和函数1、程序结构熟练掌握main函数与其他函数之间的关系包括标准库函数和自定义函数2、函数的定义(1)熟练掌握函数的定义格式(2)熟练掌握函数的参数(形式参数和实在参数)及参数传递,包括指针作为函数的参数(3)熟练掌握函数的返回值要调用数学函数时,在#include命令行中应包含_____。A、”stdio.h”B、”string.h”C、”math.h”D、”ctype.h”在C语言程序中,若对函数类型未加显式说明,则函数的隐含类型是.intintz;voidp(int*x,inty){++*x;y--;z=*x+y+z;printf(%d,%d,%d#,*x,y,z);}voidmain(){intx=1,y=5,z=9;p(&x,y);printf(%d,%d,%d#,x,y,z);}2,4,6#2,5,9#3、函数的调用(1)函数调用的一般格式(2)掌握函数的嵌套调用和递归调用intf(intk){return((k0)?1:f(k-2)+2);}5输入m和n(m≥n≥0)后,计算下列表达式的值并输出。m!n!(m-n)!要求将计算阶乘的运算写成函数fact(n),函数返回值的类型为float。#includestdio.hfloatfact(intk);voidmain(){intm,n;scanf(%d%d,&m,&n);printf(%f\n,fact(m)/fact(n)/fact(m-n));}floatfact(intk){floaty=1;inti;for(i=2;i=k;i++)y*=i;returny;}1、熟练掌握编译预处理的基本概念2、掌握宏定义3、掌握文件包含写出下列程序段的输出结果。#defineT16#defineS(T+10)-7printf(%d\n,S*2);12以下说法中正确的是()A)C语言程序总是从第一个定义的函数开始执行B)在C语言程序中,要调用一个定义的函数必须在main()函数中定义C)C语言程序总是从main()函数开始执行D)C语言程序中的main()函数必须放在程序的开始部分以下叙述中正确的是()A)C程序中注释部分可以出现在程序中任意合适的地方B)花括号“{”和“}”只能作为函数体的定界符C)构成C程序的基本单位是函数,所有函数名都可以由用户命名D)分号是C语句之间的分隔符,不是语句的一部分例1、以下选项中不正确的整型常量是_____A、0x1B、01C、20L例2、以下选项中不正确的字符常量是_____A、’\t’B、’a’C、”1”D、‘1’例3、已知i、j、k为int型变量,若从键盘输入:1,2,3〈回车〉,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是()A)scanf(%2d%2d%2d,&i,&j,&k);B)scanf(%d%d%d,&i,&j,&k);C)scanf(%d,%d,%d,&i,&j,&k);D)scanf(i=%d,j=%d,k=%d,&i,&j,&k);D、12.34D、12.34C、”1”例4.若有以下程序:main(){intk=2,i=2,m;m=(k+=i*=k);printf(%d,%d\n,m,i);}执行后的输出结果是()A)8,6B)8,3C)6,4D)7,4例5.以下4个选项中,不能看作一条语句的是()A){;}B)a=0,b=0,c=0;C)if(a0);D)if(b==0)m=1;n=2;运行结果:6,11输入:6,11swap(int*p1,int*p2){int*p;p=p1;p1=p2;p2=p;}main(){inta,b;int*pointer_1,*pointer_2;scanf(%d,%d,&a,&b);pointer_1=&a;pointer_2=&b;if(ab)swap(pointer_1,pointer_2);printf(%d,%d,*pointer_1,*pointer_2);}#includestdio.hvoidmain(){inta=3,b=4;printf(%d\n,(a=b,b,a+3));/*输出序列是一个逗号表达式*/printf(%d\n,a=b,b,a+3);/*输出第一个参数变量a的值*/}输出结果为:74例4、表达式(2==2==2)的值为_____。例5、下列程序段的输出是_____。intk,a=1,b=2;k=(a++==b)?2:3;printf(%d,k);03例、写出下列程序段的输出结果。intz;voidp(int*x,inty){*x=10;y=50;z=1;printf(%d,%d,%d,*x,y,z);}voidmain(){intx=1,y=5,z=9;p(&x,y);printf(%d,%d,%d,x,y,z);}10,50,110,5,9以下函数用于找出一个n×4矩阵中的最大元素。请填空。max_value(intarr[][4],intn){inti,j,max;max=arr[0][0];for(i=0;;i++)for(j=0;;j++)if(arr[i][j]max)max=;returnmax;}inj4arr[i][j]编写一个函数strnum(char*s),用以计算并返回字符串s中大写英文字母的个数。intstrnum(char*s){inti=0,m=0;while(){if()m++;;}returnm;}*s(*s!