c语言程序分类总结(共6篇)
篇1:c语言程序分类总结
一、选择排序法:
1、函数方法: #include
scanf(“%d”,&a[i]);sort(a,10);printf(“The sorted array:n”);for(i=0;i<10;i++)
printf(“%d ”,a[i]);printf(“n”);}
void sort(int array[],int n){int i,j,k,t;
for(i=0;i {k=i; for(j=i+1;j if(array[j] k=j; t=array[k];array[k]=array[i];array[i]=t;} } 2、数组方法:实验6_1 #include printf(“enter data:n”); for(i=1;i<=10;i++) {printf(“a[%d]=”,i); scanf(“%d”,&a[i]); } printf(“n”); printf(“The orginal numbers:n”); for(i=1;i<=10;i++) printf(“%5d”,a[i]); printf(“n”); for(i=1;i<=9;i++) {min=i; for(j=i+1;j<=10;j++)if(a[min]>a[j])min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf(“nThe sorted numbers:n”); for(i=1;i<=10;i++) printf(“%5d”,a[i]); printf(“n”);} 3、指针方法:(教材209 例题8.9)#include scanf(“%d”,p++);p=a;sort(p,10);for(p=a,i=0;i<10;i++) {printf(“%d ”,*p);p++;} printf(“n”);} void sort(int x[],int n){int i,j,k,t; for(i=0;i {k=i; for(j=i+1;j if(x[j]>x[k])k=j; if(k!=i) {t=x[i];x[i]=x[k];x[k]=t;} } } 二、素数算法: 1、筛选法求素数(教辅41.1题)#include for(i=1;i<=100;i++) a[i]=i; a[1]=0; for(i=2;i for(j=i+1;j<=100;j++) {if(a[i]!=0 && a[j]!=0) if(a[j]%a[i]==0) a[j]=0; } printf(“n”); for(i=2,n=0;i<=100;i++) { if(a[i]!=0) {printf(“%5d”,a[i]); n++; } if(n==10) {printf(“n”); n=0; } } printf(“n”);} 2、(1)For循环方法: #include printf(“please enter a integer number:”); scanf(“%d”,&m); k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>k)printf(“%d is a prime number.n”,m); else printf(“%d is not a prime number.n”,m);} (2)求100~200之间素数: # include for(m=101;m<=200;m=m+2) { k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>=k+1) {printf(“%d ”,m); n=n+1; } if(n%10==0)printf(“n”); } printf(“n”);} 3、函数方法:实验7_1(教辅63.3题)#include int n; printf(“ninput an integer:”); scanf(“%d”,&n); if(prime(n)) printf(“n %d is a prime.n”,n); else printf(“n %d is not a prime.n”,n);} int prime(int n) {int flag=1,i; for(i=2;i if(n%i==0) flag=0; return(flag); } 三、最值问题: 1、函数方法,两个数比较大小(教材144.例题7.2)#include int a,b,c; scanf(“%d,%d”,&a,&b); c=max(a,b); printf(“max is %dn”,c);} int max(int x,int y){ int z; z=x>y?x:y; return(z);} 2、二维数组,求出其中值最大的那个元素值:(教材123.例题6.5)#include int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf(“max=%d,row=%d,colum=%dn”,max,row,colum);} 3、有三个字符串,要求找出其中最大者(教材136.例题6.9)#include char string[20]; char str[3][20]; int i; for(i=0;i<3;i++) gets(str[i]); if(strcmp(str[0],str[1])>0) strcpy(string,str[0]); else strcpy(string,str[1]); if(strcmp(str[2],string)>0) strcpy(string,str[2]); printf(“nthe largest string is:n%sn”,string);} 4、函数方法,四个整数,找出最大值:(教材152.例题7.5)#include int a,b,c,d,max; printf(“Please enter 4 interger numbers:”); scanf(“%d %d %d %d”,&a,&b,&c,&d); max=max_4(a,b,c,d); printf(“max=%d n”,max);} int max_4(int a,int b,int c,int d){int max_2(int a,int b);int m; m=max_2(a,b);m=max_2(m,c);m=max_2(m,d);return(m);} int max_2(int a,int b) 这也可以这么写 int max_2(int a,int b){return(a>b?a:b); {if(a>b)return a;} else return b;} 四、辗转相除问题:(最大公约数最小公倍数问题) 1、一般法,求最大公约数和最小公倍数(教辅26页,第一题)#include int p,r,n,m,temp; printf(“请输入两个正整数n,m:”); scanf(“%d,%d,”,&n,&m); if(n { temp=n; n=m; m=temp; } p=n*m; while(m!=0) { r=n%m; n=m; m=r; } printf(“它们的最大公约数为:%dn”,n); printf(“它们的最小公约数为:%dn”,p/n);} 2、函数法: void main(){int hcf(int,int); int lcd(int,int,int); int u,v,h,l; scanf(“%d,%d”,&u,&v); h=hcf(u,v); printf(“H.C.F=%dn”,h); l=lcd(u,v,h); printf(“L.C.D=%dn”,l);} int hcf(int u,int v){int t,r;if(v>u) {t=u;u=v;v=t;} while((r=u%v)!=0) {u=v; v=r;} return(v);} int lcd(int u,int v,int h) { return(u*v/h); } 五、有关指针的实验题: 1、实验9-1(输入3个整数,由小到大的顺序排列)(1)#include void swap(int *p1,int *p2) {int p; p=*p1;*p1=*p2;*p2=p; }(2)#include void swap(char *p1,char *p2){char p[20]; strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);} 2、实验9_2(将n个数,输入时顺序的逆序排列)#include scanf(“%d”,&num[i]);p=&num[0];sort(p,n);printf(“Now,the sequence is:n”);for(i=0;i printf(“%d ”,num[i]);printf(“n”);} void sort(char *p,int m){int i;char temp, *p1,*p2;for(i=0;i {p1=p+i; p2=p+(m-1-i); temp=*p1; *p1=*p2; *p2=temp; } } 3、实验9_3(写一函数,求一个字符长度)#include int length(char *p) {int n;n=0;while(*p!=') {n++; p++; } return(n);} 改错题总的出错分为两大类:语法出错和逻辑出错,此类题目是比较简单的题型,因此也是最容易把握的知识点。 注意:错误都是出现在/**********found**********/下面的这一行。只是下面的这一行,其他行都没有错误。不能修改其他行。做题方法: 1.首先拿到题目,先将题目详细看看(包括题干),看清题目对做题时很有帮助,特别是一些逻辑性较强的题目很有用。有的同学可能会觉得题目太难了不想去读,其实在做改错题目时即便你不会也能把题目做对。 2.按照以下的步骤解决题目中的错误的内容,对应着修改。修改完之后保存即可。一 语法错误 1.关键字出错:在二级C语言考试中仅仅考查学生对基本的关键字掌握情况,比如:整型就是int 不是Int,知识点简单。(1)6题第二个空:If应该改为if;(2)1 2题第二个空:If应该改为if;(3)2 3题第一空:dounle 应该改为double;(4)3 5题第二空:I f应该改为if;(5)3 6题第二空:Double 应该改为double。(6)2题第二空:wihle 应该改为while。 2.格式出错:在考试中主要考查学生细心的程度,最喜欢考简单的知识点。 (1)少分号:2题第一空、28 题第一空、29 题第一空、34 题第二空、37 题第 二空、48 题第二空。考查的知识点:分号是语句结束的标志。 (2)for 语句的格式:for(;;)中间用分号隔开不是用逗号隔开。3题第二空、6 题第一空、14 题第二空都是出现了for 语句格式出错的问题。 (3)if 语句的格式:if(表达式),if 后面必须加上小括号。3 7题第一空if 后面必须加上小括号。 (4)命令行格式出错:17 题第一空中include 命令少了#,正确的形式应该是#include “std io.h”; (5)常用函数格式: A 22 题第一空中n=strlen[aa]应该改为n=strlen(aa),记住函数名后面一定是花括号,不能是方括号,方括号只有在数组下标中用到。 B 4 9题第一空int j,c, float xa =0.0;应该改为int j,c;float xa =0.0;记住:要同时定义两种以上不同的数据类型的时候必须在不同类型的数据中间加上分号。 C 4 1题第二空scanf(“%d”,a[i][j]);应该改为scan f(“%d”,&a[i][j])。考查scanf 输入函数的格式。 (6)数组:所有老师讲到数组时候必须统一将此知识点给学生回顾一遍!A数组下标引用时候只能用反括号。2 8题第二空t(k)=b(j)应该改为t[k]=b[j]。 B二维数组中的列下标不能省略。4 6题第一空必须将数组列下标补充完整。A[][3](7)常用符号出错: A C语言中大于等于符号是“>=”,但是在考试的时候可能出现将它写为“=>”,49 题第二空就是这样的错误。 B当题目中需要比较某个字符是否是大写字母或是小写字母、数字时,必须将“与”、“或”、“非”记住。判断某个字符是否是大写字母:char ch;if(ch>=’A’&&ch<=’Z’)printf(“%c”,c h);判断某个字符是否是小写字母:char ch;if(ch>=’a’&&ch<=’z’)printf(“%c”,c h);判断某个字符是否是数字:c har ch;if(c h>=’0’&&c h<=’9’)printf(“%c”,c h);判断某个数字是否能同时被5和7整除: int i=35;if(i%5==0&&i%7==0)printf(“%d”,i);判断某个数字是否能被5或7整除: int i=35;if(i%5==0||i%7==0)printf(“%d”,i);判断某个数字是否是偶数或奇数: int i=35;if(i%2==0)printf(“%d是一个偶数”,i);else printf(“%d是一个奇数”,i); 二 逻辑错误 1.使用了没有定义过的变量:这种题目可以通过编译查找出出错的地方并改之。(1)0(零)和o(字母欧)的区别:19 题第一空、2 3题第二空、43 题第二空。(2)P(大)和p(小)的区别:3 3题第一空。(3)普通变量大小写的区别:int a=10;A A有的变量在定义的时候是小写但是在使用的时候是大写,或是在定义的时候是大写在使用的时候却是小写。B大小写没有出错,程序中直接使用了没有定义过的变量,要求学生更加细心的读题目。4 5题第二空使用到了i这个变量,但是我们在定义行中没有找到i的定义,因此在做题时候要上下结合来分析题目。22 题第二空c=aa [j]中的c没我们一直用心做教育!有定义过,参看定义的语句不能发现应该是c h=aa [j]。3 8题第一空要求将后面用到的变量s1 定义完整。2.运算符号出错: (1)C语言中除号是“/”不是“” (2)赋值号(=)和等号(==)混淆,记住在if 语句中出现赋值号(=)一般是讲它改为等号(==)。14 题第一空和29 题第二空都是这样的错误。3.表达式的取值范围出错: 当遇到计算表达式的累加或是累减时,一定用到循环来完成相应的操作。例如:改错题第七题中要求计算t=1-1/2*2-1/3*3-„.-1/m*m这个表达式,在这个题目中第一空有这样的f or 语句:for(i=2;i 这个考点同样考查表达式的相关知识。例如:改错题第七题中要求计算t=1-1/2*2-1/3*3-„.-1/m*m这个表达式,在这个题目中第一空有这样的for 语句:for(i=2;i 遇到这种题目在改错题中最容易考查的是大于(>)、小于(<)等符号的变化,当你查找出错的地方没有语法错误,也没有使用了未定义的变量时,记住这个口诀:将大于改为小于,将小于改为大于!6.函数的返回值及其参数:重点 int fun(int x, int y) main(){ { if(x>y)return x; int a,b,c;else return y; scanf(“%d%d”,&a,&b);} c=fun(a,b); printf(“最大值为:%d”,c);}(1)函数的返回类型:在上面的例子中fun 函数的返回值是int,如果将int 改为doubl e,很明显是错误的。从两个地方来看,首先return x;中x的类型必须和fun 函数中的返回值相同,x是整型。其次c=fun(a,b);中fun 函数将一个返我们一直用心做! 回值赋值给了变量C,说明函数返回的值一定是整型。记住:函数调用、函数的返回值和return中数据类型必须一致! (2)return后面的表达式及其类型:1 9.2、3 0.2、39.2(3)函数传递的参数: int fun(int x, int y) main(){ { if(*x>*y)return*x; int a,b,c;else return*y; scanf(“%d%d”,&a,&b);} c=fun(&a,&b); prin t f(“最大值为:%d”,c);} 一定注意:传递的是值还是地址。比较上面两个例子大家很容易区别传递的是值 还是地址,第一个例子调用函数的时候传递的是值,因此在f u n函数的形参中x 和y仅仅是普通的变量,而第二个例子中调用函数的时候传递的是地址,因此在 f un 函数的形参中x和y就是两个指针变量。5.1、13.1、17.2、2 0.1、2 5.2依据刚 刚讲的方法很快就能找出出错点。(4)指针的使用: int fun(in t *x, in t *y){ if(*x>*y)return*x;else return*y;} 在此例中f un 函数的形参是x和y,它们的类型是整型的指针,那么在f un 函数的函数体中使用到x和y的值时一定要区分:x>y比较的是x和y所存变量地址的大小,*x>*y才是比较值的大小。如果存在*x=x+y;的类似情况一定是错误的,必须要将赋值号的左右两边的类型变为一致。5.2、5.3、20.2、24.2、35.1、44.1 一定特别注意!7.数组: (1)数组下标的初始值:数组下标从零开始,到长度减一结束。考试技巧:当出错行在定义部分时,先检查该定义语句有没有语法错误,再看定义语句中的变量有没有赋初始值,最后看变量赋的初始值有没有正确。定义初始值有窍门,遇到累加时,用来存放累加和的变量一般赋值为零,遇到求阶乘时,用来存放阶乘值的变量一般赋值为一。8.1中的变量k赋值为1,但是我们说了数组的下标只能从0开始,因此将1改为0就行了。 (2)普通变量的初始值:依照上面的技巧,我们同样可以将它延伸到普通变量中。4 1.1中需要将变量的值进行初始化,题目中有这样的要求:“输出主对角线元素之和”,既然这样我们很肯定初始值应该为零,接着我们看看是给哪个变量赋值?看printf(“su m =%d”,su m);输出的是sum 的值,说明sum 就是我们要补充在横线上的变量。10.1也可以用同样的方法来分析。 (3)数组和字符串长度减一:当使用数组中的元素时,最大值只能到数组长度减一。字符串以’’作为字符串的结束标志,因此取值最大也只能到字符串长度减一。25.2中输出p r in t f(“%d”,a a[i]);分析程序知道i在此时就是数组的长度,我们要输出数组中的元素,最大就只能到a a[i-1],因此改为printf(“%d”,aa[i-1]);就行了。4.1和38.2中考查的是字符串长度减一的问题。 (4)数组下标往后走:当题目要求将一个数组中的元素直接赋值或是以某种方式复制到另一个数组中时,接受数据的数组中的下标要自增9.。1中s[j]=s[i];将s[i]中的值复制给s[j],联系上下函数段发现i是一个变量被for语句控制,从0开始直到遇到’’结束。i一直在加但是j没有变化,因此改为s[j++]=s[i];即可。类似的题目有:25.2、26.2、32.1、50.2。8.特例: 部分题目的解答很特殊,需要根据上下文中的内容来解答题目;例如10.1,在此题目中,定义了变量t=0;根据下面程序中的循环,s=0.0,首先加的是变量t的值,即s的值是从0.0开始的,s得到的值是:s=0.0+0.0+1.0/3+„„,观察表达式的值,这个少加了第一项1.0的值,所以变量t的初值不能是0.0,只能是1.0,或者是1;21.2中的这个题目中,表达式的值是从2/1+3/2+5/3„„即表达式的规律是从第一项开始,以后的每一项的分子是前一项的分子和分母的和,分母为前一项的分子。所以该题目的第二个空中的内容应该是:c=a;a+=b;b+=c;这一条语句中a代表的变量的分子,b代表的是变量的分母,执行第一个表达式的值,把a的值赋值给变量c,第二个表达式是把分子和分母的和相加复制给变量a,第三个表达式是把原来a的值和变量b的值相加之后得到的值赋值给变量b,则变量b得到的值也为分子分母的和,不满足题意,而分母应该为原来分子的值。第三表达式的值应该改为:b=c;9.素数 掌握求素数的格式: 判断一个数是否是素数的方法很多,只用掌握一种即可,首先掌握判断一个素数的方法; 素数的定义: 1、是自然数 2、只能被1和本身整除,2到本身减一之间的数不能整除该数。判断m是否为素数的格式: for(i=2;i 求素数的题目只要把格式给带进去就可以了。1 1.1这个题目中只用改为“==”。29 题也是一样的解答方法。10、链表 链表的题目分为带头结点的和不带头结点的链表; 1、带头结点的链表 带头结点的链表的第一个空的改为:p=h->next;第二个空改为:p=p->next;.2、不带头结点的链表 在C语言程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来,这些按序排列的同类数据元素的集合称为数组。在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,数组元素共用一个名称(即数组名),通过元素在数组序列的顺序号(即下标)来区分,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别[1]。 在C语言中,对数组定义的理解虽然看似简单,但由于数组的使用范围相当广泛,在对字符串、指针、函数等的过程中,都离不开数组。因此有必要对数组在解决实际问题中一些基本操作进行总结。 学习数组的关键要掌握它的定义、赋值和应用。 数组的应用可以分为排序、插入、删除、合并、查询,还可用来存储大数据等,下面分别介绍这些应用操作。 1 数组排序 数组排序是C语言中的一项重要内容,也是以后几种应用的基础。所谓排序就是杂乱无章的数据按照大小顺序排列,包括整型、实型、字符串的排序。排序的方法有很多种,常用的有交换法、插入法,其中交换法包括冒泡排序法和快速排序。我们以冒泡法排序为例。 冒泡法排序的思想是:对于n个数从小到大排序,将数组中相邻两个数进行比较,将小的调到前头,也就是说,第一个数和第二个数比较,大数放前,小数放后,第二个和第三个进行比较,大数放前,小数放后,依此类推,……,经过第一轮比较后,找到一个最大数在最下面。然后进行下一轮比较,一共要n-1轮就可把所有的数都排好序[2]。其算法描述的流程图如图一所示: 如果用一般变量来做这道题,将定义十个变量,而且在比较排序过程不能使用循环的方法一次解决问题,用数组的话就可以很方便地解决这个问题。在冒泡排序算法中很多同学在计算每轮中比较的次数出现问题。 2 数组插入 数组插入指的是有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。假如现在有一个由n个元素按照升序构成的数组,在插入一个数x时按下面的方法处理: (1)如果插入的数x比a数组最后一个数大,则将插入的数放在a数组末尾。 (2)如果插入的数x不比a数组最后一个数大,则将x依次和a[0]到a[n-1]比较,直到出现a[i]>x为止,这时表示x应该插入到a[i-1]之后,a[i]之前。所以要将a[i]到a[n-1]各元素向后移一个位置(即a[n-1]变成a[n],a[n-2]变成a[n-1],…,a[i]变成a[i+1]),然后将x放在a[i]中[3]。该算法描述的流程图如图二所示: 在数组插入中,学生们容易出现数组越界问题,他们在定义数组时,数组的容量定义为n,应使数组的容量比原来的容量要大于1,因为要插入一个元素到数组中,数组元素个数会从原先的n个变成n+1个。还有一个比较容易犯错的问题是当一旦发现a[i]比x大时,没有中断比较的循环,导致插入错误。 3 数组删除 数组删除操作指的是用户从键盘中输入一个数,然后到数组中去查找这个数。如果数组中存在该数,则把该数从数组中删除掉;如果数组中不存在该数,则不用做删除操作。例如,有一个数组a,其中元素为1,2,2,2,5,4,2,3,若用户从键盘上输入一个数2,则要在数组中删掉2,删除之后的数组元素只有1,5,4,3。该删除操作算法的流程图如图三所示: 在数组删除操作中,学生们容易忽略要删除的元素在数组中连续出现的这种现象,导致漏删,所以程序中一定要当删掉一个元素时,循环变量i的值倒退一次,即i--。为了要正确输出删除之后的数组元素,应该在该程序中用一个变量count来计算删掉了几个元素。 4 数组合并 数组合并操作指的是对两个有序的数组合并之后仍然有序。例如:a[4]={1,5,100,200},b[3]={2,7,90},合并之后存放到数组c中,则c[7]={1,2,5,7,90,100,200}。该算法描述的流程图如图四所示: 在数组合并操作中,学生们容易遗漏a数组或b数组中末尾的一些元素。 5 数组查询 从数组中查询一个数最简单的方法是从第1个数开始顺序查找,将要找的数与数组中的数一一比较,直到找到为止(如果数组中无此数,则应找到最后一个数,然后判定“找不到”)。但这种“顺序查找法”效率低,如果数组中有1000个数,且要找的数恰好是第1000个数,则要进行999次比较才能得到结果,平均比较次数为500次。本文介绍效率较高的折半查找法,基本思路如下: 假如有已按由小到大排好序的9个数,a[1]~a[9],其值分别为:1,3,5,7,9,11,13,15,17,若输入一个数3,想查3是否在此数组中,先找出数组中居中的数,即a[5](其值为9),将3与a[5]比较有a[5]>3,显然3应当在a[1]到a[5]范围内,这样可缩小查找范围,查找范围缩小一半。再将3与a[1]到a[5]范围内的居中的数a[3](其值为5)比较有a[3]>3,则3应当在在a[1]到a[3]范围内,又将查找范围缩小一半。再将3与a[1]到a[3]范围内的居中的数a[2](其值为3)进行比较有a[3]=3,查找结束,一共比较了3次。如果数组中有n个数,则最多比较次数为int(log2n)+1。该算法的流程图由于篇幅原因,在此不列出。 6 利用数组完成高精度阶乘运算 计算机所能表示与处理的数的有效数字位数是有限的。例如,在字长32位的计算机上运行的程序中可处理的整数的最大值4294967295,对于求阶乘n!,当n较大时,会产生溢出。为了完成高精度阶乘运算,可以用一个整形数组存放一个参加运算的操作数,其中每个数组元素存放十进制表示的正整数的一个数字位。例如,程序正确时,能计算并输出8!值为10080,16!的值为2615348736000。该算法的流程图如图五所示: 在该操作中,学生们对存放阶乘结果的a数组的初始化赋值不正确,我们应该使a[0]=1,其余数组元素为0。当数组元素的值大于9时不知如何把该值分解成个位和十位,十位上的数字要进位到下个数组元素中。 7 结束语 目前很多编程专家在大型软件程序的开发中,使用数组来替代指针,可见数组是C语言编程的精髓[4]。利用它可以编写出颇有特色、质量优良的程序,实现许多用其它高级语言难以实现的功能。但数组使用比较灵活,十分容易出错。只有在编程过程中不断总结数组的使用技巧,通过在实践中不断摸索,才能准确无误地驾驭数组,所以要多做一些有关数组的应用问题。 参考文献 [1]郝彦琴.《C语言程序设计》中的数组[J].湖南农机,2008,35(11):34-35. [2]谭浩强.C语言程序设计(第三版)[M].北京:清华大学出版社. [3]谭浩强.C语言设计题解与上机指导(第三版)[M].北京:清华大学出版社. 关键词:C语言;编程技巧;应用 中图分类号:G642 文献标识码:B 文章编号:1002-7661(2014)24-002-01 C语言属于一种程序设计类语言,其使用在数据处理方面有突出作用,在很多的学习工作领域都有大规模的应用,像是软件开发、科研建设等都离不开C语言的利用。C语言编程,就是用C语言进行相应计算机代码的编写,C语言的学习,需要掌握一定的技巧,不然没有头绪的学习是得不到良好学习效果的,掌握了C语言的学习技巧,才能够更好的促进C语言的学习[1]。 一、C语言与C语言的优势 当下世界上使用范围最广,流行度最高的计算机编程语言便是C语言,要想良好的学习和使用C语言,必须加深对C语言的了解。C语言发源于上个世纪60年代,成熟在70年代,最近半个世纪的使用过程中,C语言表现了如下几种优势:第一,C语言简洁紧凑,使用方式灵活方便,且语法运用宽松不受限制,书写方式自由随意,结合了高级编程语言的结构性与实用性的特点,组成了一种全新式的有强大使用功能的编程语言;第二,C语言有广泛的应用层面,且可植性强,C语言在各种系统中都能够被兼容使用;第三,C语言的运算符丰富多样,各种数据结构类型的使用,除了C语言可以将各种复杂的数据运算完成外,还具有强大的图形功能;第四,结构式的语言特点分割了代码和数据,其中的程序表现层次条理清楚,后期的使用和维护工作便利,使用C语言可以访问物理地址[2]。从中可知,C语言具有强大的功能,因此在信息技术的领域中,C语言所占据的地位是非常高的。 二、C语言学习难度大的原因 因为C语言所具备的各种强大功能,因此人们对其的关注程度也越来越高,想要学会并且全面掌握C语言技术的人也越来越多。可是大部分在刚刚接触C语言的时候,觉得C语言过于枯燥乏味,学习了一段时间后都没有掌握到多少知识,也没有一个清楚全面的认识对于C语言,觉得十分的茫然。出现这种情况的原因还是因为C语言是一种高级语言,这种语言和面向对象的语言之间存在较大的差别,在C语言的学习过程中,学习者难以从中看到形象的画面,只能够在编程程序成功后,经过调试才可以看到效果。在编程的过程中,只要出现一点粗心错误,就会让整个编程无法成功调试,出现一些错误的现象,除此之外,C语言的使用过程中,包含了大量的算法与数据组成结构,这些没有任何的技巧,就是要死记硬背,所以很多学习者在遇到这些枯燥晦涩的问题时,就会丧失学习兴趣,降低学习效率和学习质量。 三、C语言编程技巧的应用 1、用空间换时间 例如对字符串进行赋值,方法有以下几种: (1)基础方法: #define LEN 32 Char string I[LEN]; memset(string 1,0,LEN); ctrcpy(string 1,“this is a example”) ; (2)方法2: const char string2[LEN]=“this is a example”; char*cp; cp=string2; 从这个案例中可以发现,方法(1)与方法(2)在电脑上的执行效率是不一样的,第一种方法必须使用两个字符函数才可以完成,而第二种方法直接使用指针就可以完成了。但是第二种方法相比第一种方法灵活性欠缺,如果这个字符串有不断变化的要求,那么第一种方法就有很大的使用优势了,第二种方法要占用较大的内存,但是效率比第一种更高[3]。 2、位运算掌握 在利用位运算的时候,能够让代码变得更加的简洁,提升运算效率,让问题得到顺利解决。在所有的计算机程序之中,最小的数据单位就是位,无特殊情况的话,所有的数据运算和操作都可以使用“位运算”方式完成,从这里就就可以看出,在编程语言之中,“位”有多么重要了。“位”使用在C语言的运算过程中,可以提升工作效率,顺利的将更多难度大的问题解决。 3、C语言特有函数掌握 很多时候进行编程,都需要使用C语言的特有函数,函数不是一种数据,而是一种功能,每一个函数都能够执行一定的功能建设,而相对应的函数名称中也将函数的功能反映了出来。开展函数定义的时候,要求操作者包含名字、参数名、类型和函数返回类型的数据,编译过程中,数据库系统是之前被定义好了的,使用过程中只要通过#include这项指令,把各种相关的头文件包含在本文件当中就可以了。 但是不管在C语言编程过程中使用怎样的技巧,还是需要做到具体问题具体分析,以上各种技巧使用起来因人而异,整体是能够提升编程效率,在学习过程中使用会获得一定的成效,而降低学习的枯燥感,拓宽C语言的使用范围。 C语言的学习过程中,每一位学习者都应该对C语言的特性有充分的了解,学习并且掌握每一种编程技巧,学习好了C语言的编程技巧,可以帮助学生提升C语言的学习兴趣,让学生的学习目的性更强,提升学生的C语言学习效率与学习质量。 参考文献: [1] 余 勍.王 捷.浅谈C语言编程技巧在C语言学习中的应用[J].信息通信,2013,07:108. [2] 赵 黎.范君君.C语言编程技巧在C语言学习中的应用研究[J]. 信息与电脑(理论版),2014,09:252. 大家可以看出,指针、数组、字符串无论在笔试还是上机都是重中之重,既是重点又是难点。C语言程序初步、顺序结构、选择结构、循环结构、函数是基础。编译预处理、作用域与存储类、位运算、文件等是难点但不是重点,每年都会考到,但题量都不大。结构体与共用体可以说比较重点又是难点。公共基础部分除了程序设计基础这一部分,其他三部分旗鼓相当,都是重点。 第一章 C语言基本知识 【考点1】C程序 用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”。源程序经编译后生成后缀名为“.obj”的目标文件,再把目标文件与各种库函数连接起来,生成“.exe”可执行文件。C语言有三种基本结构:顺序结构、选择结构、循环结构。 【考点2】main函数 又称主函数,是C程序的入口。main后面跟一对小括号和一对花括号,花括号括起来的部分称为main函数的函数体。一个C程序从main函数开始执行,到main函数体执行完结束,而不论main函数在整个程序中的位置如何。每一个程序有且仅有一个main函数,其他函数都是为main函数服务的。 【考点3】存储形式 计算机在电脑中保存数据是采用二进制形式,由0或1构成的二进制称为位(bit),八个位构成一个字节(Byte),1个Byte=8个bit。二进制、八进制、十六进制转化为十进制采用乘法,十进制转化为二进制、八进制、十六进制采用除法。数据的存放位置就是它的地址。【考点4】注释 是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,注释不可以嵌套。【考点5】书写格式 每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上。 【考点6】标识符 是标识名字的有效字符序列,可以理解为C程序中的单词。 标识符的命名规则是: (1)标识符只能由字母、数字和下划线组成,字母区分大小写。 (2)标识符的第一个字符必须是字母或下划线,不能为数字。C语言标识符分如下3类 (1)关键字。它们在程序中有固定的含义,不能另作他用。 如:int、for、switch等。 (2)预定义标识符。预先定义并具有特定含义的标识符。 如:define、include等。 (3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。【考点7】常量与变量 常量是指在程序运行过程中,其值不能改变的量。常量分为整型常量、实型常量、字符常量、字符串常量、符号常量5种。在程序运行过程中其值可以改变的量称为变量。C语言中没有字符串变量。存放字符串使用字符数组。【考点8】整型数据 整型常量有十进制、八进制、十六进制三种表示形式,没有二进制形式。八进制整型常量加前导数字0,十六进制常量加前导0X,八进制常量中不会出现8。 整型变量可分为基本整型(int)、短整型(short)、长整型(long)、和无符号整型(unsigned)。一个基本整型占4个字节。其它类型的整型占用字节数和取值范围详见教材第9页。【考点9】实型数据 实型数据有两种表示形式:小数形式和指数形式。掌握判定指数形式合法性。口诀:E前E后必有数,E前为实E后整数。 实型变量分为单精度型(float)和双精度型 (double),单精度型占四个字节。【考点10】算术运算 算术运算符一共有+、—、*、/、%这五个。求余运算要求运算对象只能为整型,除法运算符两边运算对象都为整型时,运算结果也为整型即舍掉小数部分。【考点11】强制类型转换 将一个运算对象转换成指定类型,格式为(类型名)表达式,注意小括号位置。【考点12】赋值 赋值运算符为“=”,不同于关系等于“= =”。赋值表达式格式为:变量名=表达式,赋值运算符左边必须为变量,赋值运算是把赋值运算符右边表达式的值赋给左边变量。 复合赋值运算符是将算术运算符或位运算符与赋值运算符组合在一起组成的运算符,掌握复合赋值表达式转化为赋值表达式的方法。如n+=100可转化为n=n+100。【考点13】自加自减运算 自加运算符“++”与自减运算符“--”是单目运算符,运算对象必须是变量。自增自减运算分前缀运算和后缀运算,它们所对应的表达式的值是有区别的,如j=i++;等价于j=i;i=i+1;而j=++i;等价于i=i+1;j=i。口诀:加加在前先加后用,加加在后先用后加。【考点14】逗号运算 逗号运算符运算优先级最低,可将多个表达式构成一个新的表达式。 第二章 顺序结构 【考点1】运算符、表达式、语句 运算对象加运算符构成表达式,表达式加分号构成表达式语句,运算对象可以是表达式、常量、变量。如赋值运算符加运算对象构成赋值表达式,赋值表达式加分号又可构成赋值语句。【考点2】运算符的优先级和结合顺序 运算符按参加运算的对象数目可分为单目运算符、双目运算符和三目运算符。初等运算符的优先级别最高,然后依次是单目运算符、算术运算符、关系运算符、逻辑运算符(除逻辑非!)、条件运算符、赋值运算符、逗号运算符。位运算符优先级介于算术运算符与逻辑运算符之间。结合顺序大多为自左向右,而自右向左的有三个:单目运算符、条件运算符和赋值运算符。 口决: 圆方括号、箭头一句号,自增自减非反负、针强地址长度,乘除,加减,再移位,小等大等、等等不等,八位与,七位异,六位或,五与,四或,三疑,二赋,一真逗。 其中“,”号为一个等级分段。【考点3】printf函数 格式为:printf(输出控制,输出列表)。输出控制是用一对双引号括起来的,包含格式说明和原样信息。输出列表包含若干输出项。【考点4】printf函数中格式说明 %d对应整型,%f对应单精度实型,%c对应字符型,%o对应八进制无符号整型,%x对应无符号十六进制整型,%u对应无符号整型,%e对应指数型,%s对应字符串型。可在%和格式字符之间加一个数来控制数据所占的宽度和小数位数。【考点5】scanf函数 输入项要求带取地址符&。当用键盘输入多个数据时,数据之间用分隔符。分隔符包括空格符、制表符和回车符,但不包括逗号。【考点】6如何交换两个变量 要使用中间变量,语句为:t=x;x=y;x=t; 第三章 选择结构 【考点1】关系运算 C语言用非0表示逻辑真,用0表示逻辑假。关系运算符有6个,分别是>,>=,<,<=,==,!=,前四种优先级高于后两种。关系表达式真时为1,假时为0。注意a 【考点2】逻辑运算 逻辑运算符共有3个:逻辑与(&&),逻辑或(||),逻辑非(!)。注意短路现象,例a++||b++,如果表达式a++的值非零,则表达式b++不再执行。【考点3】if语句 可以单独出现,也可以与else匹配出现。if语句可以嵌套,这时else总是与离它最近的且没有与else匹配的if匹配。【考点4】条件运算 是唯一的三目运算符,格式为:表达式1?表达式2:表达式3。表达式1值为非0时,整个表达式值为表达式2的值,表达式1值为0时,整个表达式值为表达式3的值。口诀:真前假后 【考点5】switch语句 格式及执行过程详见教材P43,要注意每条case后有没有break语句的区别。还要注意switch后小括号里面的表达式不能为实型,case后表达式不能有变量。口诀:switch表不为实,case表不为变。 第四章 循环结构 【考点1】三种循环结构 三种循环结构分别为:while,do-while,for,三种结构的格式及执行顺序详见教材第50、53、55页。注意for循环中的小括号中必须是两个分号;循环一定要有结束条件,否则成了死循环;do-while()循环最后的while();后一定要有分号。【考点2】break与continue break是终止所在整个循环,而continue是提前结束本轮循环。break语句可出现在循环结构与switch语句中,continue只出现在循环结构中。【考点3】循环的嵌套 就是循环里面还有循环,计算要一层一层分析,一般只考查两层嵌套,循环嵌套通常是处理二维数组。 【考点4】循环结构的复习 循环结构是重点,笔试所占分值一般在13分左右,在上机考试中也是必考点,应用性很强。要求学员重点理解并多加练习,领会掌握。 第五章 字符型数据 位运算 【考点1】字符常量 一个字符常量用一对单引号括起来,字符常量只能包括一个字符,‟ab‟是非法的。空格常用‟□‟来表示。字符常量可用对应的ASCII码表示,需记住:‟0‟的ASCII码为48,‟A‟的ASCII码为65,‟a‟的ASCII码为97。 【考点2】转义字符 一对单引号中以一个反斜线后跟一个特定字符或八进制、十六进制数来构成转义字符。比如‟n‟表示换行,‟101‟或‟x41‟表示ASCII码为65的字符‟A‟。【考点3】字符型数据可以和整型数据相互转换 如:‟0‟-0=48 „A‟+32=‟a‟ char a=65;printf(“%d%c”,a,a);结果为65A 【考点4】位运算符 C语言提供6种位运算符:按位求反~,按位左移<<,按位右移>>,按位与&,按位异或|,按位或^。一般情况下需要先转化进制。异或运算的规则:0异或1得到1,0异或0得到0,1异或1得到0。可记为“相同为0,不同为1”。【考点5】putchar与getchar函数 可用于输出或输入单个字符,这两个函数是stdio.h文件中的库函数,它们是printf与scanf函数的简化。 第六章 函数 【考点1】函数的定义 函数是具有一定功能的一个程序块。函数的首部为:函数类型 函数名(类型1 形参1,类型2 形参2,……)。在函数定义中不可以再定义函数,即不能嵌套定义函数。函数类型默认为int型。【考点2】库函数 调用C语言标准库函数时要包含include命令,include命令行以#开头,后面是””或<>括起来的后缀为”.h”的头文件。以#开头的一行称为编译预处理命令行,编译预处理不是C语言语句,不加分号,不占运行时间。【考点3】函数的返回值 函数通过return语句返回一个值,返回的值类型与函数类型一样。return语句只执行一次,执行完或函数体结束后退出函数。【考点4】函数的声明 函数要“先定义后调用”,或“先声明再调用后定义”。函数的声明一定要有函数名、函数返回值类型、函数参数类型,但不一定要有形参的名称。【考点5】函数的调用 程序从上往下执行,当碰到函数名后,把值传给调用函数,当程序得到了返回值或调用函数结束,再顺序往下执行。【考点6】函数的参数及值传递 形式参数简称形参,是定义函数时函数名后面括号中的参数。实在参数简称实参,是调用函数时函数名后面括号中的参数。实参和形参分别占据不同的存储单元。实参向形参单向传递数值。“传值”与“传址”的区别:传数值的话,形参的变化不会改变实参的变化。传地址的话,形参的变化就有可能改变实参所对应的量。 【考点7】函数的递归调用 函数直接或间接地调用自己称为函数的递归调用。递归调用必须有一个明确的结束递归的条件。在做递归题时可把递归的步骤一步步写下来,不要弄颠倒了。【考点8】要求掌握的库函数 sqrt()算术平方根函数,fabs()绝对值函数,pow()幂函数,sin()正弦函数 第七章 指针 【考点1】指针变量 指针变量是用来存储地址的,而一般变量是存储数值的。指针变量可指向任意一种数据类型,但不管它指向的数据占用多少字节,一个指针变量占用四个字节。【考点2】指针变量的定义 格式为:类型名 *指针变量名。二维指针int **p;可以理解为基类型为(int *)类型。【考点3】指针变量的初始化 指针变量在使用前必须要初始化,把一个具体的地址赋给它,否则引用时会有副作用,如果不指向任何数据就赋“空值”NULL。【考点4】指针变量的引用 &是取地址符,*是间接访问运算符,它们是互逆的两个运算符。在指针变量名前加间接访问运算符就等价它所指向的量。【考点5】指针的运算 *p++和(*p)++之间的差别:*p++是地址变化,(*p)++是指针变量所指的数据变化。一个指针变量加一个整数不是简单的数学相加,而是连续移动若干地址。当两个指针指向同一数组时,它们可以比较大小进行减法运算。 第八章 数组 【考点1】数组的定义 数组是一组具有相同类型的数据的集合,这些数据称为数组元素。格式为:类型名 数组名[常量表达式]。数组的所占字节数为元素个数与基类型所占字节数的乘积。【考点2】数组的初始化 第一维长度可以不写,其它维必须写。int a[]={1,2};合法,int a[][3]={2,3,4};合法,int a[2][]={2,3,4};非法。数组初始化元素值默认为0,没有初始化元素值为随机。如在int a[5]={0,1,2};中,元素a[4]值为0;而在int a[5];中,元素a[4]值为一个不确定的随机数。【考点3】元素的引用 数组元素的下标从0开始,到数组长度减1结束。所以int a[5];中数组最后一个元素是a[4]。要把数组元素看作一个整体,可以把a[4]当作一个整型变量。【考点4】二维数组 数组a[2][3]={1,2,3,4,5,6};中含6个元素,有2行3列。第一行为a[0]行,第2行为a[1]行,a[0]、a[1]叫行首地址,是地址常量。*(a[0]+1)是第一行第一个元素往后跳一列,即元素a[0][1]值为2,*(a[0]+3)是第一行第一个元素往后跳三个,即元素a[1][0]值为4。【考点5】行指针 是一个指针变量,占四个字节,行指针指向一行连续数据,形式为:int(*p)[2];,p只能存放含有两个整型元素的一维数组的首地址。注意(*p)两边的小括号不能省略,否则就成了指针数组,是若干指针元素的集合。【考点6】数组名 数组名是数组的首地址。数组名不能单独引用,不能通过一个数组名代表全部元素。数组名是地址常量,不能对数组名赋值,所以a++是错误的。但数组名可以作为地址与一个整数相加得到一个新地址。 【考点7】元素形式的转换 助记:“脱衣服法则”a[2]变成*(a+2),a[2][3]变成*(a+2)[3]再可变成*(*(a+2)+3)。 第九章 字符串 【考点1】字符串常量及表示 字符串常量是由双引号括起来的一串字符,如”ABC”。在存储字符串时,系统会自动在其尾部加上一个空值‟‟,空值也要占用一个字节,也就是字符串”ABC”需要占四个字节。【考点2】字符数组 C语言没有字符串变量,只能采用字符数组来存储字符串。数组的大小应该比它将要实际存放的最长字符串多一个元素,从而存放‟‟。【考点3】字符串赋值 可以用下面的形式进行赋值:char str[]=”Hello!”;或char *p;p=”Hello!”;,但不能用下面的形式:char str[10];str=”Hello”;因为str是一个地址常量,不能进行赋值操作。【考点4】字符串的输入与输出 可以用scanf和printf函数,如scanf(”%s”,str);,也可用专门处理字符串的两个函数gets和puts函数,还可以对字符数组逐个元素进行赋值,但一定要在最后赋一个‟‟。使用gets函数可以接收空格,使用puts函数在最后输出一个换行。【考点5】字符串函数 要掌握的四个字符串函数:字符串拷贝函数 strcpy(),求字符串长度函数strlen(),字符串链接函数strcat(),字符串比较函数strcmp()。使用这些函数需在预处理部分包含头文件”string.h”。字符串长度要小于字符数组的长度,例:char str[10]=”Hello”;sizeof(str)的值为10(数组长度),strlen(str)的值为5(字符串长度)。这些函数是考试常用到的函数,大家一定要熟练应用这几个函数。 第十章 结构体与共用体 【考点1】结构体类型的说明 结构体是若干个类型数据的集合,结构体类型说明格式如下:struct 类型名 {类型1 成员名1;类型2 成员名2;……};,以上整个部分是一个数据类型,与整型的int是同样地位。可用typedef把结构体类型替换成一个只有几个字母的简短标识符。【考点2】结构体变量的定义 结构体变量是用说明的结构体类型所定义的一个变量,与结构体类型不是一回事。一个结构体变量所占字节数为其所有成员所占字节数之和。如struct stu{char name[10];int age;} a,b;则表明定义了两个结构体变量a,b,每个变量占14个字节。a,b与int i,j;中的变量i,j是同样地位。【考点3】结构体成员的引用 引用成员可用以下3种方式:(1)结构体变量名.成员名;(2)指针变量名->成员名:(3)(*指针变量名).成员名。点(.)称为成员运算符,箭头(->)称为结构指向运算符。【考点4】链表 链表是由一个个结点构成的,一个结点就是一个结构体变量。每个结点可以分为数据域与指针域两个部分,数据域用来存放要存储的数据,指针域用来指向下一个结点。链表是考试中的难点,在C语言和公共基础部分都会考到,要领悟掌握。【考点5】共用体 共用体的使用格式与结构体相似,共用体定义的关键字为union,共用体所占字节数是所有成员中字节数最大的那个。 第十一章 文件 【考点1】文件类型指针 文件指针是一个指向结构体类型的指针,定义格式为:FILE *指针变量名。在使用文件时,都需要先定义文件指针。【考点2】文本文件与二进制文件 文本形式存放的是字符的ASCII码,二进制形式存放的是数据的二进制。例如“100”如果是文本形式就是存储‟1‟、‟0‟、‟0‟三个字符的ASCII码(00110001 00110000 00110000),如果是二进制形式就把100转化成二进制(01100100)。【考点3】打开文件 文件的打开形式如下:FILE *fp;fp=fopen(“c:lab.c”,”rb”)。fopen函数的前面一部分为文件名,后面一部分为文件的使用方式。打开方式详见教材第127页,其中r代表读,w代表写,a代表添加,b代表二进制位的。【考点4】文件函数 判断文件结束feof函数,移动文件指针位置fseek函数,获得文件位置ftell函数,文件位置移到开头rewind函数,文件字符输入输出fgetc函数和fputc函数,文件输入输出fscanf函数和fprintf函数,文件字符串输入输出fgets函数和fputs函数,读写二进制文件fread函数和fwrite函数。 以上函数要求知道格式会用,清楚是用于二进制文件还是文本文件,要把教材文件这章仔细复习下,不要在考试的时候把这些文件函数搞混了。 第十二章 深 入 讨 论 【考点1】编译预处理 凡以#开头的这一行,都是编译预处理命令行,编译预处理不加分号,不占运行时间。宏替换仅是简单的文本替换,如#define f(x)(x)*(x)和#define f(x)x*x替换f(2+2)时就有区别,前者展开为(2+2)*(2+2),后者为2+2*2+2。如果源文件f2.c中有#include”f1.c”可以理解为把源文件f1.c原样包含到f2.c中,使f1.c和f2.c融合到一起成为一个C程序编译。所以一个C程序必有主函数,但一个C源文件未必有主函数。 【考点2】标识符作用域 局部变量是在函数内或复合语句内定义的变量,作用域为定义它的函数内。局部变量有三种类型:自动auto,寄存器register和静态static。 自动变量随着函数的使用与否创建消失;寄存器变量分配在cpu中,没有内存地址;静态变量占用固定存储单元,在程序执行过程不释放,直到程序运行结束。 全局变量是在函数外定义的变量,作用域从定义它的位置到整个源文件结束为止,生存期为整个程序运行期间。全局变量都是静态变量。【考点3】动态存储分配 malloc(size)用来创建连续size个字节存储区,返回值类型为void *型。malloc函数常用于动态创建链表结点;如int *p;p=(int *)malloc(sizeof(int))。 calloc(n,size)创建n个同一类型的存储空间,可以理解为n个malloc。free(p)释放动态分配的存储单元。 一、基本数据结构与算法 1.算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)。 2.数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与非线性结构的概念。 3.线性表的定义;线性表的顺序存储结构及其插入与删除运算。4.栈和队列的定义;栈和队列的顺序存储结构及其基本运算。5.线性单链表、双向链表与循环链表的结构及其基本运算。 6.树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。7.顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插入类排序)。 二、程序设计基础 1.程序设计方法与风格。2.结构化程序设计。 3.面向对象的程序设计方法,对象,方法,属性及继承与多态性。 三、软件工程基础 1.软件工程基本概念,软件生命周期概念,软件工具与软件开发环境。2.结构化分析方法,数据流图,数据字典,软件需求规格说明书。3.结构化设计方法,总体设计与详细设计。 4.软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。 5.程序的调试,静态调试与动态调试。 四、数据库设计基础 1.数据库的基本概念:数据库,数据库管理系统,数据库系统。2.数据模型,实体联系模型及E-R图,从E-R图导出关系数据模型。 3.关系代数运算,包括集合运算及选择、投影、连接运算,数据库规范化理论。4.数据库设计方法和步骤:需求分析、概念设计、逻辑设计和物理设计的相关策略。 基 本 要 求 1.熟悉Visual C++6.0集成开发环境。 2.掌握结构化程序设计的方法,具有良好的程序设计风格。3.掌握程序设计中简单的数据结构和算法并能阅读简单的程序。 4.在Visual C++6.0集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力。 一、C语言的结构 1.程序的构成,main函数和其他函数。2.头文件,数据说明,函数的开始和结束标志。3.源程序的书写格式。4.C语言的风格。 二、数据类型及其运算 1.C的数据类型(基本类型、构造类型、指针类型、空类型)及其定义方法。2.C运算符的种类、运算优先级和结合性。3.不同类型数据间的转换与运算。 4.C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。 三、基本语句 1.表达式语句,空语句,复合语句。 2.输入与输出函数的调用,正确输入数据并正确设计输出格式。 四、选择结构程序设计 1.用if语句实现选择结构。 2.用switch语句实现多分支选择结构。3.选择结构的嵌套。 五、循环结构程序设计 1.for循环结构。 2.while和do-while循环结构。3.continue语句和break语句。4.循环的嵌套。 六、数组的定义和引用 1.一维数组和二维数组的定义、初始化和数组元素的引用。2.字符串与字符数组。 七、函数 1.库函数的正确调用。2.函数的定义方法。3.函数的类型和返回值。 4.形式参数与实在参数,参数值的传递。5.函数的正确调用,嵌套调用,递归调用。6.局部变量和全局变量。 7.变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。 八、编译预处理 1.宏定义和调用(不带参数的宏,带参数的宏)。2.“文件包含”处理。 九、指针 1.地址与指针变量的概念,地址运算符与间址运算符。 2.一维、二维数组和字符串的以及指向变量、数组、字符串、函数、结构体的指针变量的定义。通过指针引用以上各类型数据。3.用指针作函数参数。4.返回地址值的函数。5.指针数组,指向指针的指针。 十、结构体(即“结构”)与共用体(即“联合”) 1.用typedef说明一个新类型。 2.结构体和共用体类型数据的定义和成员的引用。 3.通过结构体构成链表,单向链表的建立,结构点的输出、删除与插入。 十一、位运算 1.位运算符的含义及使用。2.简单的位运算。 十二、文件操作 --------13软件工程一班郭笑笑 ------------老师: 徐 静 经过一学期的对c语言这门课程学习,我对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,因为私下练习的时间太短了。 上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。 学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间,为此,结合课堂讲授的内容和进度,老师为我们安排了多次上机实验。课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,还可以有以下几方面的好处: 1.加深对课堂讲授内容的理解。 2.熟悉程序开发环境、学习计算机系统的操作方法。 3.学习上机调试程序等等。我对程序调试还没有完全掌握,不能很快找出程序的错误。 因为课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,死记硬背也不容易记住。还有一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,不能很好地利用学到的知识编写c语言程序,解决实际问题。总的来说在这半年的时间里,我学到了许多,但是也有很多内容是不会的。我觉得我在这一学期中掌握的内容有(收获): 1.printf(“%*sn”,M,“字符串”+N)的用法说明 2.scanf函数的用法和说明 3.自增自减:n++、n--、++n、--n 4.进制的转换:二进制、八进制、十进制、十六进制 5.变量在内在中的存放与转换.6.3.字符-----‘’的作用:与一些字母组成转义字符,与数字组成代表八进制数.另外说明一下r,其作用是将当前位置移到本行开头,后面再输入字符时,原有的字符将会被覆盖。 7.5.逗号运算符.8..局部变量.全局变量 9..预编译处理命令 10.#define:宏定义只是在编译前对代码作简单的字符串替换,不会考虑任何错误.宏定义不是语句,后面不要加“;”.似懂非懂(不能很好地应用): 1.退出过程.(1)continue :用于结束某次循环继续下一循环.(2)break: 用于结束循环或结束switch语句.(3)return: 用于结束某函数.(4)exit: 用于结束某一程 2.void的说明.Void代表空类型,在定义指针变量或函数时可以定义为void型,定义指针变量后可以在用的时候通过强制类型转换使其指向任何类型的数据.定义函数时,只是说明不能有返回值.如果函数中出现return就会报错.3.指针:(1).指针的加减法:指针的加减法不是作简单的加减,而是以指针变量所占的字节数为单位进行加减.(2).数组名是指针常量,不能改变其值,比如数组a[ ],如果进行a++;就会报错 (3).虽然指针变量中存放的地址是整型数据,但不能将整型数据直接赋值给指针变量,应该这样(假如p为int *型),p=(int *)1000;但禁用些法,因为你不知道1000这个单元有没有被其它单元占用,后果不可预料,同样也不能将一个指针变量的值直接赋给整形变量,也要进行强制类型转换.(4)定义指针后,在使用之前一定要先给它赋初值,切记 (5).二维数组中指针问题(int a[3] [4]),数组名a是一个指向行的指针(指向数组),而在其前面加一个 * ,*a就是指向列的指针(指向无素).a与*都是指向a[0][0];但a+1(行指针)指向a[1][0];而*a+1(列指针,和*(a+0)+1一样)却指向a[0][1];同样在a+1前加一个*就又变成列指针了,*(a+1)+2就指向a[1][2].(6),复杂类型的说明:从变量名处起,根据运算符优先级结合,一步一步分析,下面以一个比较复杂的类型(int *(*p(int))[ ])为例: 第一步,p先与()结合,说明是一个函数,第二步,()内有一个int,说明函数有一个形参为int型,第三步与*结合,说明返回的是一个指针变量,第四步与[ ]结合,说明该指针变量指向数组,第五步再与*结合,说明数组中的元素为指针型,第六步说明数组中的指针元素的类型为int型,完毕,所以这是一个返回一个由整型指针变量组成的数组的指针变量的函数。4.结构体的应用。完全不会的: 相关文章:
电化学性能优化02-17
浅谈如何提高混凝土的抗冻性能02-17
性能优化策略02-17
网络性能分析及优化02-17
怎样提高种猪繁殖性能02-17
性能优化技术02-17
性能优化方法02-17
性能优化服务范文02-17
WIFI智能技术提高WIFI基站覆盖性能02-17
面向程序员的数据库访问性能优化法则02-17
篇2:c语言程序分类总结
篇3:C语言中数组应用总结
篇4:c语言程序分类总结
篇5:c语言总结
篇6:C语言总结