77范文网 - 专业文章范例文档资料分享平台

C语言最重要的知识点复习资料(2)

来源:网络收集 时间:2019-04-10 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

5、注意a和a[0] 、a[1]、a[2]是不同的,它们的基类型是不同的。前者是一行元素,后三者是一列元素。

2) 二维数组做题目的技巧:

如果有a[3][3]={1,2,3,4,5,6,7,8,9}这样的题目。

步骤一:把他们写成: 第一列 第二列 第三列 a[0]à 1 2 3 ->第一行 a[1]à 4 5 6 —>第二行 a[2]à 7 8 9 ->第三行 步骤二:这样作题目间很简单:

*(a[0]+1)我们就知道是第一行的第一个元素往后面跳一列,那么这里就是a[0][1]元素,所以是1。

*(a[1]+2)我们就知道是第二行的第一个元素往后面跳二列。那么这里就是a[1][2]元素,所以是6。

一定记住:只要是二维数组的题目,一定是写成如上的格式,再去做题目,这样会比较简单。 3) 数组的初始化,一维和二维的,一维可以不写,二维第二个一定要写

int a[]={1,2} 合法。 int a[][4]={2,3,4}合法。 但int a[4][]={2,3,4}非法。 4) 二维数组中的行指针 int a[1][2];

其中a现在就是一个行指针,a+1跳一行数组元素。 搭配(*)p[2]指针

a[0],a[1]现在就是一个列指针。a[0]+1 跳一个数组元素。搭配*p[2]指针数组使用 5) 还有记住脱衣服法则:

a[2] 变成 *(a+2) a[2][3]变成 *(a+2)[3]再可以变成 *(*(a+2)+3) 这个思想很重要!

其它考试重点 文件的复习方法:

把上课时候讲的文件这一章的题目要做一遍,一定要做,基本上考试的都会在练习当中。 1)字符串的 strlen() 和 strcat() 和strcmp() 和strcpy()的使用方法一定要记住。他们的参数都是地址。其中strcat() 和strcmp()有两个参数。

2)strlen 和 sizeof的区别也是考试的重点;

3)define f(x)(x*x) 和 define f(x) x*x 之间的差别。一定要好好的注意这写容易错的地方,替换的时候有括号和没有括号是很大的区别。

4)int *p;

p = (int *)malloc(2);

p = (int *)malloc(sizeof(int));以上两个等价 当心填空题目,malloc的返回类型是 void *

5)还有main(int argc,char **argv) {} 这种含有参数的题目,是很呆板的题目。第一个参数是表示输入的字符串的数目,第二个参数是指向存放的字符串。

6)函数的递归调用一定要记得有结束的条件,并且要会算简单的递归题目。要会作递归的题目

7)结构体和共用体以及链表要掌握最简单的。typedef考的很多,而且一定要知道如何引用结构体中的各个变量,链表中如何填加和删除节点,以及何如构成一个简单的链表,一定记住链表中的节点是有两个域,一个放数值,一个放指针。

8)函数指针的用法(*f)()记住一个例子: int add(int x, int y) {....} main()

{ int (*f)(); f=add; }

赋值之后:合法的调用形式为1、add(2,3); 2、f(2,3); 3、(*f)(2,3)

9)两种重要的数组长度:

char a[]={?a?,?b?,?c?}; 数组长度为3,字符串长度不定。sizeof(a)为3。 char a[5]={ ?a?,?b?,?c?} 数组长度为5,字符串长度3。sizeof(a)为5。 10)scanf 和 gets的数据:

如果输入的是 good good study!

那么scanf(“%s”,a); 只会接收 good. 考点:不可以接收空格。 gets(a); 会接收 good good study! 考点:可以接收空格。 11)共用体的考查: union TT { int a;

char ch[2];}

考点一: sizeof (struct TT) = 2; 考点二: TT t1 ; t1=0x1234;

那么 ch[0]=0x 34; ch[1]=0x12

12)“文件包含”的考查点:

no1.c no2.c #include”no2.c” main()

{ add(29 , 33); ……. }

int add(int a,int b) {

return a+b; }

这里一个C语言程序是有两个文件组成,分别是no1.c, no2.c。那么no1.c中最开始有个#include”no2.c”他表示把第二个文件的内容给包含过来,那么no1.c中调用add()函数的时候就可以了把数值传到no2.c中的被调用函数add()了。

一个文件必须要有main函数。 这句话错了。 例如:no2.c就没有。

头文件一定是以.h结束的。 这句话错了。例如:no1.c中就是#include”no2.c”以.c结尾的。

****************************第一题目******************************* 对应的代码:

For(i=3;i<=n;i++)

for (j=2; j

if (i%j == 0) 如果碰到有个数字j可以被i整除,那么表break; 示这个数不是素数,要用break直接结束循

环,这个时候我们的j肯定是小于i的。 /**********found**********/

if (j>=i) j>=i,表示在上面if (i%j == 0)没有成功,所以会循环执行for (j=2; j=i,这样可以知道该数字i就是素数。 /**********found**********/

{ count++; printf( count? \

****************************第二题目******************************* 填空题: 代码:

/**********found**********/

for (i=0; i

t=a[i];

/**********found**********/

a[i] = a[n-1-i]; //将前面的数组与后面的数组进行对换。当i=0的时候,表示是第一个数组元素,所以要和最后一个数组元素互换,所以是a[n-1-i] /**********found**********/

a[n-1-i] = t; //将前面的数组元素放到后面去。直接将上面的代码抄下来就可以了 } }

****************************第三题目******************************* 代码: 分析:

int fun(STU *std, STU *k, int year) { int i,n=0;

for (i=0; i

/**********found**********/

if( std[i].year = =year) 由于要比较的是相同的年数,所以要将每次循环的结构体中的year都要比较一次,当我们指定的参数year和我们结构体中某个元素的year相同的时候,就执行下面的“把这个结构体数据保存到数组k中” /**********found**********/

k[n++]= std[i]; 要注意,n++,之后那么下次新得到的数据就放到了后面,例如,第一个放到了k[0],由于进行了n++,那么下次符合条件的新的结构体就放到了k[1]中了。这里注意:进行的是结构体的整体复制,所以是填写std[i]这个结构体的名称。 /**********found**********/

return (n);} 根据题目的要求,是要求返回符合条件的结构的数目,很多人会写成n-1,这个地方应该是填写n。带入法则:假定有一个符合题目的要求,那么我们知道就执行一次k[n++]= std[i].由于k的初始值是0,所以这个地方是进行n++之后变成了1,返回的就是n,现在为1。不是能n-1得到的0。

****************************第四题目******************************* 代码: 分析:

#define M 5 #define N 20

int fun(char (*ss)[N], int *n) { int i, k=0, len= N;

/**********found**********/

for(i=0; i< M; i++) 题目要求:求字符串数组中长度最短的字符数串所在的行下标,所以这里循环的时候,一定是循环字符串的个数,也就是字符数组中表示存放字符个数的数组的行的个数(上课时强调的重点)。这个地方明显就是M,表示的是五行,作五次的循环判断,每次将字符串最短的给保存下来。 { len=strlen(ss[i]);

if(i==0) *n=len; //第一个字符串判断时要,初始化len, /**********found**********/

if(len < *n) 注意:*n是已经保存了前面判断出来的最短的字符串中字符的个数,len的数值是现在判断的这个字符串的字符个数。如果现在len的数值比前面所有字符串中最短的字符串(*n存放)还要短,那么就要把len的数值代替*n中去,因为 *n是表示最短的字符串的个数。 { *n=len;

k=i; 题目要求返回的是最短字符串的行下标,也就是这里要保存的是循环的中的i,它表示正在判断第几个字符串的长度。这里保存的就是最短字符串的行下标。 } }

/**********found**********/

return(i;); 所以这里根据题目意思是返回 i,它表示最短字符串的行下标。 }

****************************第五题目******************************* 代码: 分析:

typedef struct { int num;

char name[9]; char sex;

struct { int year,month,day ;} birthday; float score[3];

}STU; //一个结构体的定义 /**********found**********/ void show(STU tt) 注意:这里是被调用函数的行参的考察,我们学习的主要是传地址和传数值名称两种,这个地方是传名称,看到下面打印的时候使用的是tt.num,很明显行参的名称是tt,并且是传递的是参数的名称,如果传递的是地址,下面的引用应该是tt->num. 或 (*tt).num. { int i;

printf(\ tt.birthday.year, tt.birthday.month, tt.birthday.day); for(i=0; i<3; i++)

/**********found**********/

printf(\根据观察我们可以发现该结构体成员中有个浮点型的score[3]的成员,这个地方是通过循环依次把这三个成绩数出来,所以填写的是tt.score[i],(上课时强调如何使用过)。 printf(\}

main( )

{ STU std={ 1,\ printf(\/**********found**********/

show(std); 这里填写的是调用函数,这个地方是实参,我们呢可以看到上面定义了一个结构体变量,std,所以这个地方就是填写std。(too simply) }

****************************第六题目******************************* 代码: 分析:

void fun( SLIST *p)

{ SLIST *t, *s;

t=p->next; s=p; 两个指针,t和s,我们要注意,s是在t前面的一个指针, —> s t

while(t->next != NULL) 当t没有到末尾的时候(我要大家背了这句话)。 { s=t;

/**********found**********/

t=t->next; 这里也是我上课要大家背的,表示将指针往后挪一个位置。填写的是next。 }

/**********found**********/

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C语言最重要的知识点复习资料(2)在线全文阅读。

C语言最重要的知识点复习资料(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/584029.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: