《C语言程序设计基础复习.pptx》由会员分享,可在线阅读,更多相关《C语言程序设计基础复习.pptx(92页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目录目录1.1.基本要求基本要求2.2.基本内容基本内容第1页/共92页1.1.基本要求基本要求熟练掌握C语言的基本知识具备基本的C程序设计能力,能熟练地阅读、理解和编制简短的C程序。第2页/共92页2.2.基本内容基本内容2.1数据的定义2.2运算及流程控制2.3程序结构和函数2.4数据的输入和输出2.5编译预处理2.6常用算法第3页/共92页2.1 2.1 数据的定义数据的定义数据的定义包括数据类型和存储类别1、基本类型基本类型指整型、实型和字符型(主要是int,float,double,char;还包括long,unsigned,short)第4页/共92页(1)常量熟练掌握各种表示形式
2、的整数、实数、和字符(串)常量,符号常量的定义和使用。包括整数的十进制、八进制和十六进制的表示形式、长整型常量的表示形式,实数的浮点表示法和科学记数法,字符的转义序列。第5页/共92页以下选项中不正确的整型常量是_A、0 x1B、01C、20LD、12.34以下选项中不正确的字符常量是_A、tB、aC、”1”D、1(2)变量熟练掌握变量的定义和初始化第6页/共92页2、构造类型构造类型包括数组和结构(1)数组熟练掌握一维和二维数组的定义和初始化,数组元素的引用。包括一维字符数组和字符串第7页/共92页数组定义为inta32=1,2,3,4,5,6,数组元素a11的值为4。不正确的赋值或赋初值的
3、方式是_。A、charstr=s;B、charstr7=s;C、charstr10;str=s;D、charstr7=s,0;表达式strcmp(“box”,“boss”)的值是一个_.A、正数B、负数C、0D、不确定的数第8页/共92页#include int a22=1,2,5,6;void main()int s,k;for(s=0,k=0;k2;k+)s+=akk;printf(%d,s);for(s=0,k=0;k2;k+)s+=ak1-k;printf(%d,s);第9页/共92页(2)结构熟练掌握结构类型的定义,结构变量的定义和初始化,结构变量成员的引用。第10页/共92页3、指
4、针(1)熟练掌握指针和地址的概念(2)熟练掌握指针变量的定义和初始化(3)熟练掌握通过指针引用指向实体9aint*pa,a;pa=&a;printf(%d,%d,%d,*pa,a,*&a);printf(%x,%x,%d,pa,&a,&*p);pa第11页/共92页若变量已正确定义并且指针p已经指向某个变量x,则(*p)-相当于_。A、p-B、x-C、*(p-)D、&x-下列语句定义pf为指向float类型变量f的指针,_是正确的。A、floatf,*pf=f;B、floatf,*pf=&f;C、float*pf=&f,f;D、floatf,pf=f;第12页/共92页4、构造类型和指针类型的
5、混合定义及应用(1)熟练掌握指针、数组和地址间的关系intc=1,3,5;int*k=c+1;printf(%d,*+k);第13页/共92页charstr=hellotworldn;printf(%cn,*(str+10);staticchars=student;printf(%sn,s+2);(2)熟练掌握指针数组写出下列程序段的输出结果。char*st=one,two,three,four;printf(%sn,*(st+3)+1);第14页/共92页(3)熟练掌握结构数组输入某班50位学生的姓名及数学、英语成绩,计算每位学生的平均分;然后输出平均分最高的学生的姓名及其数学和英语成绩。#
6、include#defineSIZE50structstudentcharname10;intmath,eng;floataver;第15页/共92页void main()struct student sSIZE;int k,sub=0;for(k=0;kSIZE;k+)scanf(%s%d%d,sk.name,&sk.math,&sk.eng);sk.aver=(sk.math+sk.eng)/2.0 for(k=1;kssub.aver)sub=k;printf(%10s%3d%3dn,ssub.name,ssub.math,ssub.eng);第16页/共92页(4)熟练掌握结构指针(5
7、)掌握结构中含指针或数组(6)掌握嵌套结构(7)掌握指向指针的指针(二级)(8)单向链表掌握单向链表的建立和遍历了解插入和删除单向链表中的一个节点第17页/共92页+p-str中的+加在_。structintlen;char*str;*p;A、指针str上B、指针p上C、str指的内容上D、以上均不是第18页/共92页main()structstintx,y;a4=10,20,30,40,50,60,70,80;structst*p=a;printf(%d,p+-x);printf(%d,+p-y);printf(%dn,(a+3)-x);第19页/共92页structnodeintnum;s
8、tructnode*next;43567NULLHeadprintf(%dn,fun(head);第20页/共92页int fun(struct node*h)int k=0;struct node*p=h;*q=NULL;while(p)if(q!=NULL)&(p-next)k+=p-num;q=p;p=p-next;return k;43567NULLHead第21页/共92页5、空类型void掌握空类型的定义和使用第22页/共92页6、变量的存储类别、作用域和生存期(1)掌握变量的存储类别auto自动型、static静态型、extern外部参照型(2)掌握全局变量和局部变量注意区分:自
9、动局部变量和静态局部变量、全局变量和静态全局变量、外部变量第23页/共92页C语言中,形参的缺省的存储类说明是_。A、autoB、staticC、registerD、extern第24页/共92页对于以下函数f,计算f(f(2)的值。intf(intx)staticintk=0;x+=k+;returnx;3第25页/共92页2.2 2.2 运算及流程控制运算及流程控制1、基本运算熟练掌握运算符的功能熟练掌握运算符的优先级、结合性和目数熟练掌握隐式类型转换和强制类型转换2、表达式熟练掌握各类表达式的组成规则和计算过程第26页/共92页()-.!+-(类型名)*&sizeof从右向左*/%+-=
10、!=&(按位与)(按位异或)|(按位或)&|?:右=+=-=*=/=%=1)y=1;elseif(x=1)y=0;elsey=-1第34页/共92页写出下列程序段的输出结果。charc,k;c=b;k=4;switch(c)casea:k=1;caseb:k=2;casec:k=3;printf(%dn,k);第35页/共92页写出下列程序段的输出结果。intk,x;for(k=0,x=0;k=9&x!=10;k+)x+=2;printf(%d,%d,k,x);第36页/共92页2.3 2.3 程序结构和函数程序结构和函数1、程序结构熟练掌握main函数与其他函数之间的关系包括标准库函数和自定
11、义函数第37页/共92页2、函数的定义(1)熟练掌握函数定义的ANSIC格式(2)熟练掌握函数的参数(形式参数和实在参数)及参数传递,包括指针作为函数的参数(3)熟练掌握函数的返回值,包括指针作为函数的返回值第38页/共92页要调用字符串处理函数时,在#include命令行中应包含_。A、”stdio.h”B、”string.h”C、”math.h”D、”ctype.h”在C语言程序中,若对函数类型未加显式说明,则函数的隐含类型是int.第39页/共92页int z;void p(int*x,int y)*x=10;y=50;z=1;printf(%d,%d,%d#,*x,y,z);void
12、main()int x=1,y=5,z=9;p(&x,y);printf(%d,%d,%d#,x,y,z);第40页/共92页3、函数的调用(1)函数调用的一般格式熟练掌握通过函数名调用函数,了解通过函数指针调用函数(2)掌握函数的嵌套调用和递归调用第41页/共92页intf(intk)return(k0)?1:f(k-2)+2);printf(“%dn”,f(3);第42页/共92页(3)熟练掌握标准库函数的调用常用数学函数:cos、sqrt、pow、exp、fabs、log、等常用字符函数:isdigit、islower、toupper等常用字符串函数:strcpy、strcmp、strc
13、at、strlen等第43页/共92页输入m和n(mn0)后,计算下列表达式的值并输出。m!+n!要求将计算阶乘的运算写成函数fact(n),函数返回值的类型为float。第44页/共92页#includefloatfact(intk);voidmain()intm,n;scanf(%d%d,&m,&n);printf(%fn,fact(m)+fact(n);第45页/共92页floatfact(intk)floaty=1;inti;for(i=2;i=k;i+)y*=i;returny;第46页/共92页2.4 2.4 数据的输入和输出数据的输入和输出1、文件熟练掌握文件的基本概念2、标准文
14、件的输入和输出熟 练 掌 握 常 用 输 入 输 出 函 数:scanf、printf、getchar、putchar、gets、puts等第47页/共92页3、缓冲文件系统(文本文件)(1)熟练掌握文件的打开和关闭常用函数:fopen和fclose(2)熟练掌握文件的基本读写操作常 用 函 数:fscanf、fprintf、fgetc、fputc、fgets、fputs等(3)熟练掌握文件的状态检测常用函数:feof等第48页/共92页统统计计当当前前目目录录下下文文本本文文件件data.txt中中字字符符$出出现现的的次次数数,并并将将统统计计结结果果写写入入当前目录下的文本文件当前目录下
15、的文本文件res.txt。#include void main()FILE *fp1,*fp2;char ch;int count=0;if(fp1=fopen(data.txt,r)=NULL)printf(不能打开文件不能打开文件data.txt!n);exit(0);第49页/共92页if(fp1=fopen(res.txt,w)=NULL)printf(不能打开文件res.txt!n);exit(0);while(ch=fgetc(fp1)!=EOF)if(ch=$)count+;fprintf(fp2,%d,count);fclose(fp1);fclose(fp2);第50页/共9
16、2页2.5 2.5 编译预处理编译预处理1、掌握宏定义2、掌握文件包含写出下列程序段的输出结果。#defineT16#defineS(T+10)-7printf(%dn,S*2);第51页/共92页2.7 2.7 常用算法常用算法以下算法针对本大纲中列出的各种数据结构1、分类(排序)算法冒泡、选择、插入2、遍历算法(1)一维数组和二维数组的遍历(2)单向链表的遍历(3)文件的遍历第52页/共92页4、其它基本算法第53页/共92页二、阅读程序题 1当执行以下程序段后,i的值是(),j的值是(),k的值是()。int a,b,c,d,i,j,k;a=10;b=c=d=5;i=j=k=0;for(
17、;ab;+b)i+;while(a+c)j+;do k+;while(ad+);i的值是(5),j的值是(4),k的值是(6)第54页/共92页2以下程序的输出结果是()main()int x=2;while(x-);printf(“%dn”,x);输出结果是(-1)第55页/共92页3 以下程序的输出结果是()unsigned fun6(unsigned num)unsigned k=1;do k*=num%10;num/=10;while(num);return(k);main()unsigned n=26;printf(“%dn”,fun6(n);输出结果是(12)第56页/共92页4
18、以下程序的输出结果是()main()int a=2,4,6,*prt=&a0,x=8,y,z;for(y=0;y3;y+)z=(*(prt+y)x)?*(prt+y):x;printf(“%dn”,z);输出结果是(6)第57页/共92页5 以下程序的输出结果是()main()int i,j,row,col,m;int arr33=100,200,300,28,72,-30,-850,2,6;m=arr00;for(i=0;i3;i+)for(j=0;j3;j+)if(arrij=0;i-)printf(“%c”,*pi);printf(“n”);输出结果是(SHOB)第59页/共92页输出结
19、果是(2,5,1,2,3,-2)7 以下程序的输出结果是()main()int a=3,b=2,c=1;c-=+b;b*=a+b;int b=5,c=12;c/=b*2;a-=c;printf(“%d,%d,%d,”,a,b,c);a+=-c;printf(“%d,%d,%d”,a,b,c);第60页/共92页8 以下程序的输出结果是()main()int x=35;char z=A;printf(“%dn”,(x&15)&(za);输出结果是(1)第61页/共92页9 以下程序的输出结果是()#include#include int*swap(int*a,int*b)int*p;p=a;a=
20、b;b=p;return a;main()int x=3,y=4,z=5;swap(swap(&x,&y),&z);printf(%d,%d,%d,x,y,z);输出结果是(3,4,5)第62页/共92页三、程序填空题1 以下程序的功能是计算s=,请填空。long f(int n)int i;long s;s=(1);for(i=1;i=n;i+)s=(2);return s;main()long s;int k,n;scanf(“%d”,&n);s=(3);for(k=0;k=n;k+)s=s+(4);printf(“%dn”,s);1s*i 0f(k)第63页/共92页2 以下findma
21、x返回s所指数组中最大元素的下标,数组中元素的个数由t传入,请填空。findmax(int s,int t)int k,p;for(p=0,k=p;psk)(5);return (6);k=pk第64页/共92页3 以下fun函数的功能是将一个字符串的内容颠倒过来,请填空。#include “string.h”void fun(char str)int i,j,k;for(i=0,j=(7),inext;m=p-data;for(p=p-next;p!=0;p=(9)if(10)m=p-data;return m;p-next mdata第66页/共92页5 以下程序用来统计文件中字符的个数。
22、请填空。#include “stdio.h”main()FILE *fp;long num=0;if(fp=fopen(“fname.dat”,(11)=NULL)printf(“Open errorn”);exit(0);while (12 )(13);num+;printf(“num=%ldn”,num);fclose(fp);“r”(!feof(fp)fgetc(fp)第67页/共92页6已知某链表中节点的数据结构定义如下:Struct nodeint x;struct node*next;;函数find_del功能:在参数head指向的链表中查找并删除x值最大的节点,如有多个相同的x值
23、最大的节点,删除第一个节点,保存该节点的地址到pm指向的指针变量中,函数返回链表首节点的指针。第68页/共92页struct node*find_del(struct node*head,struct node*pm)stuct node*p1,*p2,*pmax,*pre;if(head=NULL)return NULL;pmax=_(14)_;p2=p1=pmax;while(p1)if(p1-x_(15)_)pre=p2;pmax=p1;p2=p1;p1=p1-next;if(pmax=head)head=pmax-next;else _(16)_=pmax-next;_(17)_=pm
24、ax;return head;headpmax-xpre-next*pm第69页/共92页四、编程题1 从键盘输入10个浮点数,以二进制的形式存入名为“file1”的文件中,再从文件中读出数据显示在屏幕上。2 从键盘中输入10个整数放到数组a中,调用函数sort()从小到大排列这10个整数,并输出。(采用冒泡排序法排序)。3 编一程序,显示所有的“水仙花数”.所谓的“水仙花数”是指一个三位数其各位立方和等于该数字本身。例如:153=13+53+33 第70页/共92页一、填空题1.以下选项中不合法的用户标识符是()A)abc.cB)fileC)MainD)PRINTF2.TURBOC中int类
25、型变量所占字节数是()A)1B)2C)3D)4第71页/共92页 3若变量已正确定义,要将a和b中的数进行交换,下面选项中不正确的语句组是()A)a=a+b;b=a-b;a=a-b;B)t=a;a=b;b=t;C)a=t;t=b;b=a;D)t=b;b=a;a=t;第72页/共92页4 若有以下程序段,c3中的值是()A)0B)1/2C)0.5D)1int c1=1,c2=2,c3;c3=c1/c2;5 设a、b和c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是()A)a&bB)a=bC)a|b+c&b-cD)!(ab)&!c|1)第73页/共92页6 以下程序
26、的输出结果是()A)0B)1C)2D)3main()int a=2,b=-1,c=2;if(ab)if(b0)c=0;else c+=1;printf(“%dn”,c);第74页/共92页7 以下程序段的输出结果是()A)1B)3 0C)1 -2D)死循环int x=3;doprintf(”%3d”,x-=2);while(!(-x);第75页/共92页8 以下叙述正确的是()A)do_while语句构成的循环不能用其它语句构成的循环来代替。B)do_while语句构成的循环只能用break语句退出。C)用do_while语句构成循环时,只有在while后的表达式为非零时结束循环.D)用do_
27、while语句构成循环时,只有在while后的表达式为零时结束循环.第76页/共92页 9.C语言中不合法的字符常量是()A)xffB)65 C)&D)02810以下函数调用语句中,含有的实参个数是()A)1B)2C)4D)5func(exp1,exp2),(exp3,exp4,exp5);第77页/共92页 11以下程序的输出结果是()A)5.500000B)3.000000C)4.000000D)8.25double f(int n)int i;double s;s=1.0;for(i=1;i=n;i+)s+=1.0/i;return s;main()int i,m=3;float a=0
28、.0;for(i=0;i2)return(fib(n-1)+fib(n-2);else return(2);main()printf(“%ldn”,fib(6);第83页/共92页 21以下叙述中不正确的是()A)一个变量的作用域的开始位置完全取决于变量定义语句的位置。B)全局变量可以在函数以外的任何部位进行定义。C)局部变量的“生存期”只限于本次函数调用,因此不可能将局部变量的运算结果保存至下一次引用。D)一个变量说明为static存储类是为了限制其它编译单位的引用。第84页/共92页 22以下程序的输出结果是()A)3B)6C)5D)4f(int a)int b=0;static int
29、c=3;a=c+;b+;return(a);main()int a=2,i,k;for(i=0;ib)&(n=cd);28若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是()A)EOFB)-1C)非零值D)NULL第89页/共92页 29以下程序的输出结果是()A)720B)120C)24D)6f(int b,int n)int i,r=1;for(i=0;i=n;i+)r=r*bi;return r;main()int x,a=2,3,4,5,6,7,8,9;x=f(a,3);printf(“%dn”,x);第90页/共92页 30以下程序的输出结果是()A)9.000000B)1.500000C)8.000000D)10.500000void sub(float x,float *y,float *z)*y=*y-1.0;*z=*z+x;main()float a=2.5,b=9.0,*pa,*pb;pa=&a;pb=&b;sub(b-a,pa,pa);printf(“%fn”,a);第91页/共92页感谢您的欣赏!第92页/共92页