您当前的位置: 湖南自考网 > 复习资料 > 工学类 > 文章详情

04737《C语言程序设计》自考资料二

2019-02-10 09:55:00
来源:湖南自考生网

       现在很多同学想把学历提上去,然后报了湖南自考本科之后,发现没有自考资料进行复习,所以湖南自考生网为大家收集了“04737《C语言程序设计》自考资料二”,希望能够帮助大家。

        函数

        1.函数定义的一般形式:

        无参数函数: 类型标识符 函数名()

        { 说明部分;

        语句;}

        注:无返回值,可不写类型标识符。

        有参数函数:类型标识符 函数名(形式参数列表)

        形式参数说明

        { 说明部分;

        语句;}

        注:类型标识符指定函数返回值的类型,无类型标识符时默认为整型数。

        空 函 数:类型标识符函数名()

        { }

        2.函数的调用

        一般调用形式:函数名(实际参数列表)

        函数调用方式:把函数调用作为一个语句,完成某种操作,无需返回值,

        如:printstr();

        函数出现在表达式中,要求有返回值参与运算,如:c=2*max(a,b);

        函数调用作为另一个函数的实参,如:printf(“%d”,max(a,b));

        说明:①被调用函数必须存在。

        ②使用库函数,一般在文件开头用 #include命令将有关函数信息包含进来。

        ③自定义函数应与主调函数在一个文件中,若自定义函数在主调函数后,主调函 数中应加以说明。

        函数的嵌套调用:C语言中不能嵌套定义函数,但可以嵌套调用函数,即在一个函数中调用另一个函数。

        函数的递归调用:在一个函数中直接或间接调用该函数本身。

        3.函数的参数

        函数的参数可以是变量,也可以是数组元素、数组名或指针变量。

        4.内部函数和外部函数、局部变量和全局变量、动态存储变量与静态存储变量。

        第九章 编译预处理

        1.宏定义:用一个指定的标识符来代表一个字符串。

        不带参数的宏定义:#define 标识符字符串

        带参数的宏定义: #define 宏名(参数表) 字符串

        终止宏定义的作用域:#undef

        2.文件包含处理:一个源文件将另一个源文件包含进来。

        形式:#include“文件名”

        3.条件编译:对源程序中的一部分指定编译条件。

        第十章 指针

        1.指针:是一个变量的地址,即分配给一个变量的内存起始地址。

        指针变量:是存放指针(另一变量地址)的变量。

        指针变量的定义形式: 类型标识符 *标识符

        2.指针变量的引用

        例如:int x=5,y,z,a[]={1,2,3,4};

        int *px,*py;

        px=&x;py=a;

        *px=5;

        z=*px;

        3.指针与函数参数

        例:交换两个变量内容的程序

        swap(int *px, int *py)

        { int temp;

        temp=*px;

        *px=*py;

        *py=temp;

        }

        main()

        { int a,b;

        scanf(“%d”,&a);scanf(“%d”.&b);

        printf(“a=%d\tb=%d\n”,a,b);

        swap(&a,&b);

        printf(“a=%d\tb=%d\n”,a,b);

        }

        通过地址(指针)实现被调用函数直接修改调用函数中变量的内容。

        4. 指针和数组

        数组的指针是指数组的起始地址,任何能用数组下标完成的操作都能由指针来完成。通过指针引用数组元素,例:若有int a[],*pa;pa=a;则:a[i]=*(pa+i)=*(a+i)

        5.多维数组的指针

        例:设有一个二维数组a[3][4],则:数组名a是数组的首地址,a+i与a[i]等价,是第i行的首地址,a[i]+j表示第i行第j列的地址。

        若有:int *p=a;

        则:数组中任一元素地址可表示为*(p+i)+j,或为p+i*m+j。(m列数)

        指向由m个元素组成的一维数组的指针变量,例:int(*p)[m]

        6.字符串与指针

        例:若有:char *s;s="I am a string" 表示s指向字符串的首地址,s+i表示第i个字符的地址。输出时从指针所指地址开始直到字符串结束标记(‘\0’)为止。

        7.指针数组和多级指针

        凡是可以用多维数组处理的问题,都可以用指针数组来解决,但两者有所区别。

        指针数组定义形式:类型标识符 数组名[长度说明]如:int *p[4];

        指针数组的初始化:允许在定义时初始化,

        如:static char *a[]={"ab","cde","fghi"};

        指针数组的引用:a+i表示第i个字符串。

        多级指针定义形式:类型标识符 **指针变量名; 如:char **p;

        多级指针的初始化:p=a;

        多级指针的引用:p+i表示第i个字符串,p++表示下一个字符串,*(p+i)+j表示第i个字符串中第j个字符的地址。

        8.函数的指针

        定义形式:数据类型标识符 (*指针变量名)(); 如:int (*f)();

        初 始 化:int max(x,y);f=max;

        用指针变量调用函数:c=(*f)(a,b);

        9.返回指针值的函数

        定义形式:类型标识符函数名(形参列表); 如:int *a(x,y);

        10.指针数组

        指针数组的元素均为指针类型数据。

        定义形式:类型标识符 *数组名[数组长度]; 如:int *p[4];

        11.指向指针的指针

        定义形式:类型标识符 **标识符; 如:char **p;

        12、有关指针的数据类型

        变量int iint *pint **p

        数组int a[n]int (*p)[n]int *p[n]

        函数int f()int (*p)()int *p()

        第十一章 结构体

        结构体是一种类型,是包含若干个类型不同的数据项组成的组合体。

        1、定义结构体类型

        struct 结构体名

        { 成员表列 };

        2、定义结构体类型的变量的三种方法

        (1) 先声明结构体类型再定义变量名

        例:struct student{ 成员表列 };

        struct student student1,student2;

        (2) 声明结构体类型的同时定义变量名

        struct 结构体名

        {

        成员表列

        }变量名表列;

        (3) 直接定义结构体类型变量

        struct

        {

        成员表列

        }变量名表列;

        3、结构体变量的引用及初始化

        不能将结构体变量作为一个整体进行输入和输出,只能对结构体变量中的各个成员分别进行输入和输出。引用结构体变量中各个成员的方式:结构体变量名.成员名

        结构体变量可以在定义时指定初始值,也可以先定义,而后给每个成员赋值。

        4、结构体数组

        结构体数组中每个元素都是同一个结构体类型的数据,它们都分别包括各个成员项。

        例:定义struct student stu[3];

        5、指针与结构体

        一个结构体类型的指针是所指结构体变量所占内存的起始地址。

        若有:struct student stu,*p;p=stu;

        以下三种形式等价: stu.成员名 等价于 (*p).成员名 等价于 p->成员名

        6、用指针处理链表

        (1) 建立链表的函数:p.297 例11.8

        struct student *creat( )

        { struct student *head, *p1, *p2;

        int i, len;

        len=sizeof(struct student);

        for(i=1; i<=N; i++)

        { p1=(struct student *)malloc(len);

        printf("Enter num,score:");

        scanf("%ld,%f", &p1->num, &p1->score);

        if(i==1) head=p2=p1;

        else { p2->next=p1; p2=p1; }

        if(i==N) p2->next=NULL;

        }

        return(head); /*返回链表头指针*/

        }

        (2) 输出链表的函数:p.300 例11.9

        void plink(struct student *head) /*更具通用性*/

        { struct student *p;

        p=head;

        while(p!=NULL)

        { printf("num=%ld, score=%5.2f\n",

        p->num, p->score);

        p=p->next;

        }

        return;

        }

        (3) 对链表的删除操作:p.301 例11.10

        struct student *del(struct student *head, long n)

        { struct student *p1, *p2; /*↑n:要删除学号*/

        p1=head;

        if(p1->num==n) head=p1->next; /*删除首节点*/

        else

        { do { p2=p1; p1=p1->next;

        }

        while(p1!=NULL && p1->num!=n);

        if(p1->num==n) p2->next=p1->next; /*找到*/

        else printf("Not be found!\n"); /*未找到*/

        }

        free(p1); /*释放被删除节点的存储区*/

        return(head); /*返回头指针*/

        }

        (4) 对链表的插入操作:p.303 例11.11

        第十二章 位运算

        1、 按位“与”运算符(&):参与运算的两个数据,按二进制位进行“与”的运算。

        2、 按位“或”运算符(|):参与运算的两个数据,按二进制位进行“或”的运算。

        3、 按位“异或”运算符(^):参与运算的两个二进制位同号为0(假),异号为1(真)。

        4、 “取反”运算符(~):对二进制位按位取反。

        以上是湖南自考生网为大家带来的自考复习资料“04737《C语言程序设计》自考资料二”,希望能对大家考试有所帮助。

相关推荐

湖南学历提升报名热线:0731-85718026快速联系通道  
雷老师QQ咨询 蒋老师QQ咨询 QQ咨询

TEL:雷老师18773174440 蒋老师17773102705 陈老师0731-85718026

2019年自考、成考、网教报名进行中,点击立即报考咨询>>

扫一扫下方二维码关注湖南自考生网微信公众号、客服咨询号,即时获取湖南自考、成考、网教最新考试资讯。

  • 湖南自考官方公众号

    关注公众号免费拿资料

  • 湖南自考官方微信

    微信扫一扫保过没烦恼

免责声明

1、鉴于各方面资讯时常调整与变化,本网所提供的信息仅供参考,实际以考试院通知文件为准。

2、本网部分内容来源于网络,如有内容、版权等问题请与本网联系,我们将会及时处理。联系方式 :QQ(7395915)

3、如转载湖南自考生网声明为“原创”的内容,请注明出处及网址链接,违者必究!

特别声明:本站信息大部分来源于各高校,真实可靠!部分内容来自互联网,仅供参考!所有信息以实际政策和官方公告为准!

湖南求实创新教育科技有限公司 版权所有 湘ICP备18023047号-1