当前位置:首页 » 编程语言 » c语言编程总结
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言编程总结

发布时间: 2022-05-18 06:19:29

c语言编程

1、c语言和编程有什么关系?
编程就是用一种编程语言实现某些功能需求, 而c语言只是其中的一门编程语言,也就是说同
样的问题,我们可以用不同的语言来实现它,比如汇编语言c、c++、c#、java、php等很多,
但是每一种语言都有它的强势所在,都有它的应用领域!
2、c语言怎么学?有着名的新手教材没?
多看书,多做题,多思考,多调试,这四点也是我学习c语言多年来总结出来的吧,总之要想
学好c语言,不是一件容易的事情,但是只要你坚持、勤奋,相信没有人学不好它!作为新手
谭浩强教授的那本教材堪称经典吧,如果你吃透那本书以后,就可以看一些比较深入的书籍
了,比如c programe,c指针和陷阱等!如果你把这些书籍都弄明白后,你就可谓是c语言方
面的高手了!

② C语言在编程的时候应注意什么问题

1.先学习C语言的基础知识。现在正在学C语言的在校学生可以直接进入第2步学习。
2.按照《C语言程序设计入门学习六步曲》进行上机练习。
3.在上机练习时要养成良好的编程风格。点击查看C语言的编程风格

4.积极参加C、C++兴趣小组,养成和老师与同学交流习惯,从而相互收益。有时别人不经意的一句话可能使你茅塞顿开--“一句话点醒梦中人”。

5.及时总结自己的学习经验,养成写C语言日记的习惯。软件有编程日记功能。

6.从网上或教材上找一个自己感兴趣的题目(选题时根据自己的能力,可先易后难,培养自己的成就感,如果有了成就感,即使再苦再累还是感觉C语言学习是一件快乐的事,同学们喜欢打游戏,经常通宵达旦地玩游戏也乐而不疲就是这个道理)进行实战训练,提高自己的C语言综合应用能力。

7. 由于C语言灵活、强大,初学者要全面地掌握它是不可能的,因此在学习C语言的过程中,不要在细枝末节上浪费精力(比如++、--用于表达式的计算,实际上是没有意义的),但一定要熟练掌握C语言的流程控制语句、数组、函数、指针等基础知识的应用,为学习面向对象程序设计打下坚实的基础。如果这些知识你学不好,要后续学习好C++、可视化的程序设计Visual C++或C++Builder就像空中楼阁,是不现实的。
C语言程序设计入门学习六步曲

笔者在从事教学的过程中,听到同学抱怨最多的一句话是:老师,上课我也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因有三个:

一、所谓的看懂听明白,只是很肤浅的语法知识,而我们编写的程序或软件是要根据要解决问题的实际需要控制程序的流程,如果你没有深刻地理解C语言的语句的执行过程(或流程),你怎么会编写程序解决这些实际问题呢?

二、用C语言编程解决实际问题,所需要的不仅仅是C语言的编程知识,还需要相关的专业知识。例如,如果你不知道长方形的面积公式,即使C语言学得再好你也编不出求长方形的面积的程序来。

三、C语言程序设计是一门实践性很强的课程,“纸上谈兵”式的光学不练是学不好C语言的。例如,大家都看过精彩自行车杂技表演,假如,你从来没有骑过自行车,光听教练讲解相关的知识、规则、技巧,不要说上台表演、就是上路你恐怕都不行。

出现问题原因清楚了,那么如何学习呢?请你看【C语言学习六步曲】

在程序开发的过程中,上机调试程序是一个不可缺少的重要环节。“三分编程七分调试”,说明程序调试的工作量要比编程大得多。这里以如何上机调试C程序来说明C语言的学习方法。

第一步、验证性练习

在这一步要求按照教材上的程序实例进行原样输入,运行一下程序是否正确。在这一步基本掌握C语言编程软件的使用方法(包括新建、打开、保存、关闭C程序,熟练地输入、编辑C程序;初步记忆新学章节的知识点、养成良好的C语言编程风格)。
初学者最容易犯的错误是:

1、没有区分开教材上的数字1和字母l,字母o和数字0的区别,造成变量未定义的错误。另一个易错点是将英文状态下的逗号,分号;括号()双引号""输入出入成中文状态下的逗号,分号;括号(),双引号“”造成非法字符错误。

2、C语言初学者易犯语法错误:使用未定义的变量、标示符(变量、常量、数组、函数等)不区分大小写、漏掉“;”、“{”与“}”、“(”与“)”不匹、控制语句(选择、分支、循环)的格式不正确、调用库函数却没有包含相应的头文件、调用未C声明的自定义函数、调用函数时实参与形参不匹配、数组的边界超界等。

3、修改C语言语法错误时要注意以下两点:

(1)、由于C语言语法比较自由、灵活,因此错误信息定位不是特别精确。例如,当提示第10行发生错误时,如果在第10行没有发现错误,从第10行开始往前查找错误并修改之。

(2)、一条语句错误可能会产生若干条错误信息只要修改了这条错误,其他错误会随之消失。特别提示:一般情况下,第一条错误信息最能反映错误的位置和类型,所以调试程序时务必根据第一条错误信息进行修改,修改后,立即运行程序,如果还有很多错误,要一个一个地修改,即,每修改一处错误要运行一次程序。
第二步、照葫芦画瓢
在第一步输入的C程序的基础上进行试验性的修改,运行一下程序看一看程序结果发生了什么变化,分析结果变化的原因,加深新学知识点的理解。事实上这和第一步时同步进行的,实现“输入”加深知识的记忆,“修改”加深对知识的理解。记忆和理解是相辅相成的,相互促进。

例如:将最简单的Hello World!程序
#include "stdio.h"
int main()
{
printf("Hello World!\n");
return 0;
}
中的

printf("Hello World!\n");

中的Hello World!改成你的姓名,运行一下程序,看有什么变化?

再如求1+2+3...+100的和的程序

#include

main()

{

int i,sum=0;

for(i=1;i<=100;i++)
{
sum=sum+i;
}
printf("sum=%d\n",sum);
}

第1次将for(i=1;i<=100;i++)中的100改成50,运行一下程序,看有什么变化?

第2次将for(i=1;i<=100;i++)中的i++改成i=i+2,运行一下程序,看有什么变化?

找出程序结果变化的原因,就加深了对C语句的理解。

第三步、不看教材看是否能将前两步的程序进行正确地输入并运行。

在这一步要求不看教材,即使程序不能运行,看能否将其改正,使其能正确运行。目的是对前两步的记忆、理解进一步强化。

第四步、增强程序的调试能力

在教材中每章都有C语言初学者易犯的错误,按照易出错的类型,将教材中的正确的程序改成错误的程序,运行一下程序,看出现的错误信息提示,并记下错误信息,再将程序改成正确的,运行一下程序。这样反复修改,就能够学习C语言程序发生错误的原因和修改错误的能力。

注意:每次只改错一个地方,目的是显示发生该错误的真正原因,避免一次改动多个地方,搞清发生错误的真正原因,切记!!!!

注意:上机调试程序时要带一个记录本,记下英文错误提示信息和解决该错误问题的方法,积累程序调试经验,避免在编程犯同样的错误,切记!!!!。

例如,将Hello World程序中语句

printf("Hello World!\n");

中的;改成中文的分号;

运行一下程序,看有什么结果?

调试程序是一种实践性很强的事,光纸上谈兵是是没用的,就像游泳运动员只听教练讲解示范,而不亲自下水练习,是永远学不会游泳的。

即使在优秀的程序员编写程序也会犯错误的,可能事最低级的语法错误,但他能快速发现错误并改正错误,而我们C语言初学者面对错误提示,不知道发生了什么错误,如何改正,这就事差别。

第五步、研究典型的C语言程序,提高程序设计能力

C语言初学者遇到最多的困惑是:上课也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因是:所谓的看懂听明白,只是很肤浅的语法知识,而没有深刻地理解C语言的语句的执行过程(或流程)。

计算机是按照人的指令(编写的程序)去执行的,如果不知道这些C语句在计算机中是如何执行的,你怎么回灵活运用这些知识去解决实际问题呢?

解决问题的方法是要先理解C语言各种语句的流程(即计算机是如何执行这些语句的过程),然后研读现成C语言经典程序,看懂别人事如何解决问题的,以提高自己的程序设计能力。
第六步、研究课程设计源成序,提高C语言的综合应用能力.

③ 求C语言的学习心得 或者 方法总结 什么的

* 掌握C语言的基本语法和规定。 * 掌握程序设计基本算法和思路,开拓思路, * 提高上机操作能力,掌握上机调试程序的方法 * 培养自学能力,强调自主学习。 * 养成良好的程序设计习惯。 通过总结多年的教学经验,总结学生在学习过程中具有规律性的特点,可以发现,在本课程学习过程中学生经常出现下面这些问题: * 注重理论学习,忽视上机编程实践,造成"只能用笔在纸上编程"的奇怪现象。特别是一些女同学,一到机器前面就手忙脚乱,如果程序再出现错误,就更不知道该如何查找错误,如何排除错误了。 *入门时自以为难度大,产生畏难情绪,总是怕,最后因为怕学不好而导致没有学好。 *前期没有抓紧,希望通过突击完成课程学习。本课程要靠平时的积累,几乎不能靠临时突击,由于前面基础补扎实,到了后面已经无法弥补。 *太注重学习语句的语法规定,忽视了对编程的思路和方法的训练。有些同学再学习结束的感觉就是:对每一个语句的语法和每一条规定都明白,就是面对实际问题的时候不知道该如何思考,该如何编程。 *急于求成,总想编写综合性的程序,忽视基本概念,忽视基本功的训练和练习。在编写程序中发现问题,一追根源,全是概念或基础问题。 1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想 出来再参考别人的提示,你就知道自己和别人思路的差异。 2.初学者请不要看太多太多的书那会误人子弟的,先找本系统的学,很多人用了很久 都是只对部分功能熟悉而已,不系统还是不够的。 3.看帮助,不要因为很难而自己是初学者所以就不看;帮助永远是最好的参考手册, 虽然帮助的文字有时候很难看懂,总觉得不够直观。 4.不要被对象、属性、方法等词汇所迷惑;最根本的是先了解最基础知识。 5.不要放过任何一个看上去很简单的小问题--他们往往并不那么简单,或者可以引伸 出很多知识点;不会举一反三你就永远学不会。 6.知道一点东西,并不能说明你会写脚本,脚本是需要经验积累的。 7.学脚本并不难,JSP、ASP、PHP等等也不过如此--难的是长期坚持实践和不遗余力的博览 群书; 8.看再多的书是学不全脚本的,要多实践 9.把时髦的技术挂在嘴边,还不如把过时的技术记在心里; 10.学习脚本最好的方法之一就是多练习; 11.在任何时刻都不要认为自己手中的书已经足够了; 12.看得懂的书,请仔细看;看不懂的书,请硬着头皮看; 13.别指望看第一遍书就能记住和掌握什么--请看第二遍、第三遍; 14.请把书上的例子亲手到电脑上实践,即使配套光盘中有源文件; 15.把在书中看到的有意义的例子扩充;并将其切实的运用到自己的工作中; 16.不要漏掉书中任何一个练习--请全部做完并记录下思路; 17.当你用脚本到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余 下的部分粗略的完成以保证这个代码的完整性,然后分析自己的错误并重新编写和工 作。 18.别心急,写脚本确实不容易;水平是在不断的实践中完善和发展的; 19.每学到一个脚本难点的时候,尝试着对别人讲解这个知识点并让他理解----你能 讲清楚才说明你真的理解了; 20.记录下在和别人交流时发现的自己忽视或不理解的知识点; 21.保存好你做过的所有的源文件----那是你最好的积累之一; 22.对于网络,还是希望大家能多利用一下,很多问题不是非要到论坛来问的,首先 你要学会自己找答案,比如google、网络都是很好的搜索引擎,你只要输入关键字就 能找到很多相关资料,别老是等待别人给你希望,看的出你平时一定也很懒! 23.到一个论坛,你学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问 题早就有人问过了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己 的帖子没人回的。 24.虽然不是打击初学者,但是这句话还是要说:论坛论坛,就是大家讨论的地方, 如果你总期望有高手总无偿指点你,除非他是你亲戚!!讨论者,起码是水平相当的 才有讨论的说法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你 讨论呢。能找到很多相关资料,别老是等待别人给你希望,看的出你平时一定也很懒! 25.到一个论坛,你学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问 题早就有人问过了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己 的帖子没人回的。 26.虽然不是打击初学者,但是这句话还是要说:论坛论坛,就是大家讨论的地方, 如果你总期望有高手总无偿指点你,除非他是你亲戚!!讨论者,起码是水平相当的 才有讨论的说法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你 讨论呢。 别做浮躁的人 浮躁的人容易问:我到底该学什么;----别问,学就对了; 浮躁的人容易问:JS有钱途吗;----建议你去抢银行; 浮躁的人容易说:我要中文版!我英文不行!----不行?学呀! 浮躁的人分两种:只观望而不学的人;只学而不坚持的人; 浮躁的人永远不是一个

④ 学习C语言需要掌握哪些基本知识

1.入门程序

#include <stdio.h>
int main()
{
printf("Hello World!");
return 0;
}

2.数据类型

数据类型:

1.基本数据类型:

1.1. 整型:int 4个字节

1.2. 字符型:char 1个字节

1.3. 实型(浮点型)

  • 1.3.1.单精度型:float 4个字节

  • 1.3.2.双精度型:double 8个字节

  • 2.构造类型:

    2.1.枚举类型

    2.2.数组类型

    2.3.结构体类型

    2.4.共用体类型

    3.指针类型:

    4.空类型:

    3.格式化输出语句

  • %d:十进制整数;

  • %c:单个字符;

  • %s:字符串;

  • %f:6位小数;

  • #include <stdio.h>

  • int main()

  • {

  • int age = 18;

  • float height = 1.85;

  • char unit = 'm';

  • printf("小明今年%d岁 ", age);

  • printf("小明身高%f%c ", height, unit);

  • printf("小明现在在慕课网上学习IT技术 ");

  • return 0;

  • }

  • 学好C++才是入职大厂的敲门砖! 当年要是有这课,我的C++也不至于这样

    已失效

    4.常量

    值不发生改变的量成为常量;

    定义字符常量(注意后面没有;)

  • #include <stdio.h>

  • #define POCKETMONEY 10 //定义常量及常量值

  • int main()

  • {

  • printf("小明今天又得到%d元零花钱 ", POCKETMONEY);

  • return 0;

  • }

  • 5.运算符

    5.1.算数运算符:+,-,*,/,%,++,--;前++/--,先运算,再取值.后++/--,先取值,再运算;

    5.2.赋值运算符:

    5.3.关系运算符;

    5.4.逻辑运算符;

    5.5.三目运算符:

  • 表达式1 ? 表达式2 : 表达式3;

  • 6.水仙花数计算

    输出所有三位数的水仙花数字

    所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数,如:153就是一个水仙花数,153=111+555+333。

  • #include <stdio.h>


  • int main()

  • {

  • //定义三位数num,个位数sd,十位数td,百位数hd

  • int num, sd, td, hd;

  • //循环所有三位数

  • for( num=100 ; num<1000 ; num++ )

  • {

  • //获取三位数字num百位上的数字

  • hd = num/100 ;

  • //获取三位数字num十位上的数字

  • td = num/10%10 ;

  • //获取三位数字num个位上的数字

  • sd = num%10 ;

  • //水仙花数的条件是什么?

  • if(num ==hd*hd*hd+td*td*td+sd*sd*sd )

  • {

  • printf("水仙花数字:%d ", num);

  • }

  • }

  • return 0;

  • }

  • 7.打印正三角形的*

  • #include <stdio.h>

  • int main()

  • {

  • int i, j, k;

  • for(i=1; i<5; i++)

  • {

  • /* 观察每行的空格数量,补全循环条件 */

  • for( j=i ; j<5 ; j++ )

  • {

  • printf(" "); //输出空格

  • }

  • /* 观察每行*号的数量,补全循环条件 */

  • for( k=0 ; k<2*i-1 ; k++ )

  • {

  • printf("*"); //每行输出的*号

  • }

  • printf(" "); //每次循环换行

  • }

  • return 0;

  • }

  • 8.臭名远扬的goto语句

    很少使用

  • #include <stdio.h>

  • int main()

  • {

  • int sum = 0;

  • int i;

  • for(i=1; i<=10; i++)

  • {

  • printf("%d ", i);

  • if(i==3){

  • goto LOOP;//满足条件就执行goto语句

  • }

  • }

  • //执行goto

  • LOOP:printf("结束for循环了...."); //请选择合适位置添加标识符

  • return 0;

  • }

  • 9.形参与实参

    形参:形参是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数;

    实参:实参是在调用时传递该函数的参数。

    函数的形参和实参具有以下特点:

  • 形参只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。

  • 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值等办法使实参获得确定值。

  • 在参数传递时,实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误。

  • 10.函数返回值注意

    注意:void函数中可以有执行代码块,但是不能有返回值,另void函数中如果有return语句,该语句只能起到结束函数运行的功能。其格式为:return;

    11.递归

  • #include <stdio.h>


  • int getPeachNumber(int n) //这里要定义n,要不编译器会报错!

  • {

  • int num;

  • if(n==10)

  • {

  • return 1;

  • }

  • else

  • {

  • num = (getPeachNumber(n+1)+1)*2;

  • printf("第%d天所剩桃子%d个 ", n, num);

  • }

  • return num;

  • }

  • int main()

  • {

  • int num = getPeachNumber(1);

  • printf("猴子第一天摘了:%d个桃子。 ", num);

  • return 0;

  • }

  • 12.变量存储类别 !

    12.1.生存周期划分存储方式

    C语言根据变量的生存周期来划分,可以分为静态存储方式和动态存储方式。

    静态存储方式:是指在程序运行期间分配固定的存储空间的方式。静态存储区中存放了在整个程序执行过程中都存在的变量,如全局变量。

    动态存储方式:是指在程序运行期间根据需要进行动态的分配存储空间的方式。动态存储区中存放的变量是根据程序运行的需要而建立和释放的,通常包括:函数形式参数;自动变量;函数调用时的现场保护和返回地址等。

    12.2.存储类型划分

    C语言中存储类别又分为四类:自动(auto)、静态(static)、寄存器的(register)和外部的(extern) ;

  • 用关键字auto定义的变量为自动变量,auto可以省略,auto不写则隐含定为“自动存储类别”,属于动态存储方式。

  • 用static修饰的为静态变量,如果定义在函数内部的,称之为静态局部变量;如果定义在函数外部,称之为静态外部变量。

  • 注意:静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放;静态局部变量在编译时赋初值,即只赋初值一次;如果在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)

  • 为了提高效率,C语言允许将局部变量的值放在CPU中的寄存器中,这种变量叫“寄存器变量”,用关键字register作声明。

  • 注意:只有局部自动变量和形式参数可以作为寄存器变量;一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量;局部静态变量不能定义为寄存器变量。

  • 用extern声明的的变量是外部变量,外部变量的意义是某函数可以调用在该函数之后定义的变量。

  • #includ <stdio.h>

  • //来源公众号:C语言与CPP编程

  • int main()

  • {

  • //定义外部局部变量

  • extern int x;

  • return 0;

  • }

  • int x=100;

  • 13.内部函数外部函数 !

    在C语言中不能被其他源文件调用的函数称为内部函数 ,内部函数由static关键字来定义,因此又被称为静态函数,形式为:

    static [数据类型] 函数名([参数])

    这里的static是对函数的作用范围的一个限定,限定该函数只能在其所处的源文件中使用,因此在不同文件中出现相同的函数名称的内部函数是没有问题的。

    在C语言中能被其他源文件调用的函数称为外部函数 ,外部函数由extern关键字来定义,形式为:

    extern [数据类型] 函数名([参数])

    C语言规定,在没有指定函数的作用范围时,系统会默认认为是外部函数,因此当需要定义外部函数时extern也可以省略。 extern可以省略; 14.数组 数组:一块连续的,大小固定并且里面的数据类型一致的内存空间, 数组的声明:数据类型 数组名称[长度n]

  • 数据类型 数组名称[长度n] = {元素1,元素2,元素3,......};

  • 数据类型 数组名称[] = {元素1,元素2,元素3,......};

  • 数类类型 数组名称[长度n]; 数组名称[0] = 元素1;数组名称[1] = 元素2;...... 注意: 1、数组的下标均以0开始; 2、数组在初始化的时候,数组内元素的个数不能大于声明的数组长度; 3、如果采用第一种初始化方式,元素个数小于数组的长度时,多余的数组元素初始化为0; 4、在声明数组后没有进行初始化的时候,静态(static)和外部(extern)类型的数组元素初始化元素为0,自动(auto)类型的数组的元素初始化值不确定。

  • 15.数组遍历

  • #include <stdio.h>


  • int main()

  • {

  • int arr[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

  • int i;

  • for(i=0;i<10;i++)

  • {

  • printf("%d ",arr[i]);

  • }

  • return 0;

  • }

  • 数组的冒泡排序

  • 冒泡排序的思想:相邻元素两两比较,将较大的数字放在后面,直到将所有数字全部排序。

  • 字符串与数组

  • 在C语言中,是没有办法直接定义子字符串数据类型的,需使用数组来定义所要的字符串,形式如下:

  • char 字符串名称[长度] = "字符串内容";

  • char 字符串名称[长度] = {'字符串1','字符串2',....,'字符串n',''};

  • 注:

  • []中的长度可以省略不写;

  • 采用第二种方式最后一个元素必须是'',表示结束;

  • 第二种方式不能写中文!; 输出字符串时,要使用:printf("%s",字符数组名);或puts(字符数组名);

  • 16.字符串函数

  • strlen(s):获取字符串s的长度;

  • strcmp(s1,s2):比较字符串;比较的时候会把字符串转换成ASCII码再进行比较,返回结果为0表示s1和s2的ASCII码值相等,返回结果为1表示s1比s2的ASCII码大,返回结果为-1表示s1比s2的ACSII码小;

  • strcpy(s1,s2):字符串拷贝;s2会取代s1中的内容;

  • strcat(s1,s2)将s2拼接到s1后面;注意:s1的length要足够才可以!

  • atoi(s1)将字符串转为整数!

  • 17.多维数组

    数据类型 数组名称[常量表达式1]...[常量表达式n];

    多维数组的初始化与一维数组的初始化类似也是分两种:

  • 数据类型 数组名称[常量表达式1][常量表达式2]...[常量表达式n] = {{值1,..,值n},{值1,..,值n},...,{值1,..,值n}};

  • 数据类型 数组名称[常量表达式1][常量表达式2]...[常量表达式n]; 数组名称[下标1][下标2]...[下标n] = 值;

  • 多维数组初始化要注意以下事项:

  • 采用第一种始化时数组声明必须指定列的维数。因为系统会根据数组中元素的总个数来分配空间,当知道元素总个数以及列的维数后,会直接计算出行的维数;

  • 采用第二种初始化时数组声明必须同时指定行和列的维数。

  • 18.多维度数组的遍历

    使用嵌套循环

    注意:多维数组的每一维下标均不能越界!

    19.结构体

    C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。

    结构用于表示一条记录,假设您想要跟踪图书馆中书本的动态,您可能需要跟踪每本书的下列属性:

  • Title

  • Author

  • Subject

  • Book ID

  • 定义结构

    为了定义结构,您必须使用 struct 语句。struct 语句定义了一个包含多个成员的新的数据类型,struct 语句的格式如下:

  • struct tag {

  • member-list

  • member-list

  • member-list

  • ...

  • } variable-list ;

  • tag 是结构体标签。

    member-list 是标准的变量定义,比如 int i; 或者 float f,或者其他有效的变量定义。

    variable-list 结构变量,定义在结构的末尾,最后一个分号之前,您可以指定一个或多个结构变量。下面是声明 Book 结构的方式:

  • struct Books

  • {

  • char title[50];

  • char author[50];

  • char subject[100];

  • int book_id;

  • } book;

  • 在一般情况下,tag、member-list、variable-list 这 3 部分至少要出现 2 个。以下为实例:

  • //此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c

  • //同时又声明了结构体变量s1

  • //这个结构体并没有标明其标签

  • struct

  • {

  • int a;

  • char b;

  • double c;

  • } s1;


  • //此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c

  • //结构体的标签被命名为SIMPLE,没有声明变量

  • struct SIMPLE

  • {

  • int a;

  • char b;

  • double c;

  • };

  • //用SIMPLE标签的结构体,另外声明了变量t1、t2、t3

  • struct SIMPLE t1, t2[20], *t3;


  • //也可以用typedef创建新类型

  • typedef struct

  • {

  • int a;

  • char b;

  • double c;

  • } Simple2;

  • //现在可以用Simple2作为类型声明新的结构体变量

  • Simple2 u1, u2[20], *u3;

  • 访问结构成员

    为了访问结构的成员,我们使用成员访问运算符(.)。成员访问运算符是结构变量名称和我们要访问的结构成员之间的一个句号。您可以使用 struct 关键字来定义结构类型的变量。下面的实例演示了结构的用法:

  • #include <stdio.h>

  • #include <string.h>

  • //来源公众号:C语言与CPP编程


  • struct Books

  • {

  • char title[50];

  • char author[50];

  • char subject[100];

  • int book_id;

  • };


  • int main( )

  • {

  • struct Books Book1; /* 声明 Book1,类型为 Books */

  • struct Books Book2; /* 声明 Book2,类型为 Books */


  • /* Book1 详述 */

  • strcpy( Book1.title, "C Programming");

  • strcpy( Book1.author, "Nuha Ali");

  • strcpy( Book1.subject, "C Programming Tutorial");

  • Book1.book_id = 6495407;


  • /* Book2 详述 */

  • strcpy( Book2.title, "Telecom Billing");

  • strcpy( Book2.author, "Zara Ali");

  • strcpy( Book2.subject, "Telecom Billing Tutorial");

  • Book2.book_id = 6495700;


  • /* 输出 Book1 信息 */

  • printf( "Book 1 title : %s ", Book1.title);

  • printf( "Book 1 author : %s ", Book1.author);

  • printf( "Book 1 subject : %s ", Book1.subject);

  • printf( "Book 1 book_id : %d ", Book1.book_id);


  • /* 输出 Book2 信息 */

  • printf( "Book 2 title : %s ", Book2.title);

  • printf( "Book 2 author : %s ", Book2.author);

  • printf( "Book 2 subject : %s ", Book2.subject);

  • printf( "Book 2 book_id : %d ", Book2.book_id);


  • return 0;

  • }

  • 学好C++才是入职大厂的敲门砖! 当年要是有这课,我的C++也不至于这样

    已失效

    20.共用体

    共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。

  • #include <stdio.h>

  • #include <string.h>


  • union Data

  • {

  • int i;

  • float f;

  • char str[20];

  • };


  • int main( )

  • {

  • union Data data;


  • printf( "Memory size occupied by data : %d ", sizeof(data));


  • return 0;

  • }

  • 21.指针

  • #include <stdio.h>


  • int main ()

  • {

  • int var = 20; /* 实际变量的声明 */

  • int *ip; /* 指针变量的声明 */


  • ip = &var; /* 在指针变量中存储 var 的地址 */


  • printf("Address of var variable: %p ", &var );


  • /* 在指针变量中存储的地址 */

  • printf("Address stored in ip variable: %p ", ip );


  • /* 使用指针访问值 */

  • printf("Value of *ip variable: %d ", *ip );


  • return 0;

  • }

  • 22.文件读写

    写入文件

  • #include <stdio.h>


  • int main()

  • {

  • FILE *fp = NULL;


  • fp = fopen("/tmp/test.txt", "w+");

  • fprintf(fp, "This is testing for fprintf... ");

  • fputs("This is testing for fputs... ", fp);

  • fclose(fp);

  • }

  • 读取文件

  • #include <stdio.h>


  • int main()

  • {

  • FILE *fp = NULL;

  • char buff[255];


  • fp = fopen("/tmp/test.txt", "r");

  • fscanf(fp, "%s", buff);

  • printf("1: %s ", buff );


  • fgets(buff, 255, (FILE*)fp);

  • printf("2: %s ", buff );


  • fgets(buff, 255, (FILE*)fp);

  • printf("3: %s ", buff );

  • fclose(fp);


  • }

  • C语言与C++学习路线

    23.排序算法

    十大经典排序算法(动态演示+代码)

    24.查找算法

    九种查找算法

    25.面试知识

    C语言与C++面试知识总结

    26.字符串操作

    字符串操作的全面总结

    27.C语言常用标准库解读

    C语言常用标准库解读

    28. C语言最常用的贪心算法

    C语言最常用的贪心算法就这么被攻克了

    29. 常见的C语言内存错误及对策

    常见的C语言内存错误及对策

    30. C语言实现面向对象的原理

    C语言实现面向对象的原理

    31. C语言/C++内存管理

    看完这篇你还能不懂C语言/C++内存管理?

    32. 再谈C语言指针

    再谈指针:大佬给你拨开 C 指针的云雾

    C语言函数指针之回调函数

    C语言指针详解(文末有福利)

    33. C语言预处理命令

    长文详解:C语言预处理命令

    34. C语言高效编程与代码优化

    C语言高效编程与代码优化

    35. C语言结构体

    C语言之结构体就这样被攻克了!值得收藏!

    36. 原码, 反码, 补码 详解

    原码, 反码, 补码 详解

    37. C语言宏定义

    简述C语言宏定义的使用

    38. c语言之共用体union、枚举、大小端模式

    c语言之共用体union、枚举、大小端模式

⑤ C语言实训总结

在初学C语言的一个学期后,我们进行了C语言实训阶段,尝试自己编写一个比较复杂的程序系统。在为期两周的时间中,我们同组的同学共同的感受是:C语言实训和平时上课所接触的程序是有很大不同的,所经受的考验和克服的困难是平时所无法比拟的。好在同组的搭档们精诚合作,分工明确,有问题共同解决,攻克了C语言实训的复杂程序。在这里,我作为其中的参与者,自然感触良多。

刚开始接触到C的时候,我已经学过一些有关VB的内容,这个在算法和思维上稍微有点帮助。回想本学期的学习,首先,最基本的,是C的数据格式,让我们知道整数,浮点数以及字符常量在C中的运用。然后,在学会了数据转化,以及熟练的可以对各种数据处理之后,我开始进行有关数据结构,像数组,结构体等的学习,因为有的东西从现有的知识来看都是非常简单的,还没有联系到指针等等一些复杂的概念。可是,仅仅学会这些是远远不够的,C语言中,还有很多更加经典、重要、实用的知识。

说说函数。虽说很多程序语言都有函数这一内容,但我觉得C语言的函数是最有魅力的了。学习函数的方法是比较简单的,只有两个字“牢记”,即:牢记函数的功能,牢记函数的用途以及如何输入输出。函数从本质上讲是一段通用程序,用它可以帮助我们节约很多编程的时间,学习C语言的“高人”都说,一个聪明的编程者在编写程序前往往总是先找自己所编写的程序中有多少是可以用函数来代替的。比如,大家可以作一个比较字符串的实验,用C语言中的strcmp()函数只要一句话,而自己编写的话,30句都很难实现,可想而知函数的实用和快捷。在我们C语言实训的代码中,函数更是得到了充分的应用,可以说,实训题目的复杂代码,就是用无数个函数的调用和嵌套积累出来的。

要注意的是,有的同学刚刚开始的时候,都是被一些大的程序激励的,所以当开始的时候看到繁琐的数据转化和简单的算法,都觉得很无聊,都想自己做几个自己满意的程序来看看,虽然这种想法很好,但是,我们说,没有基础,纯粹是搬照一些现成设计方法,是不足取的。要知道,程序设计讲究的是个人的思维的,假如刚开始就被一些现成的思想束缚住,以后就会觉得很无趣。
我们知道,指针其实是C语言的灵魂,许多的数据结构在我们学到这里之前都可以说是精通了。所以我们的任务就是,让数据结构在指针中运行。当然,刚刚开始接触到这些新的东西,是一件非常痛苦的事情,所以我们一定要用非常形象的思维去看待指针,不能太固化。所以,新的东西,比如结构体在指针中的表现方法,数组及多维数组在结构体中的运用,都一点一点的加了进来,同时丰满了我们对原来C的数据机构,数据表示的理解。当我们完成了这三步的学习,我们已经可以自豪的说,我们的基础都扎实了,可以进一步的学习有关算法,设计概念等等深层次的东西了。
但是,指针,结构体,这些太抽象的东西,在学习C语言的时候我们就有点“似懂非懂”,可是在眼下的C语言实训中,像这么重要的C语言知识,一定要达到能熟练掌握,实际运用的程度。在实训的大程序中,结构体在指针中的表现方法,数组及在结构体中的运用等具体的技术环节,都得到了体现,不会指针,我们的工作是没法展开的。所以,在实训期间,大家在巩固基本知识的基础上,逐块攻克实训课题,克服了困难,自信心得到了提高。

最后,谈谈我们组的程序软件。商店商品管理系统,是一个比较利于应用,解决实际问题,方便实际管理的程序。设计代码比较复杂,结构比较严谨。在程序编写的1周左右的时间里,组员们遇到了上述的困难,包括程序设计构思,甚至是指针等某些知识点的欠缺,导致的工作中出现的困难。但是,当大家一起团结协作,解决了这些困难之后,发现自己也可以编写复杂的、应用性的程序了,更发现自己对C语言这门学科的兴趣也提高了。

当然,我们编写的商店商品管理系统,还存在很多疏漏和不合理之处。比如,程序复杂冗长,如果时间充裕,我们将在不改变程序运行结果的基础上,简化程序,使每一句更加精辟,总体上更加简化。另外,在程序的外观上,我们由于时间问题,没有做更多的修饰,运行起来显得比较死板、枯燥乏味。如果增添一些色彩和其他效果,我们的程序也许会更加完美。

以上就是我的C语言实训个人总结

⑥ c语言课程的总结

1.先学习C语言的基础知识。现在正在学C语言的在校学生可以直接进入第2步学习。
2.按照《C语言程序设计入门学习六步曲》进行上机练习。
3.在上机练习时要养成良好的编程风格。点击查看C语言的编程风格

4.积极参加C、C++兴趣小组,养成和老师与同学交流习惯,从而相互收益。有时别人不经意的一句话可能使你茅塞顿开--“一句话点醒梦中人”。

5.及时总结自己的学习经验,养成写C语言日记的习惯。软件有编程日记功能。

6.从网上或教材上找一个自己感兴趣的题目(选题时根据自己的能力,可先易后难,培养自己的成就感,如果有了成就感,即使再苦再累还是感觉C语言学习是一件快乐的事,同学们喜欢打游戏,经常通宵达旦地玩游戏也乐而不疲就是这个道理)进行实战训练,提高自己的C语言综合应用能力。

7. 由于C语言灵活、强大,初学者要全面地掌握它是不可能的,因此在学习C语言的过程中,不要在细枝末节上浪费精力(比如++、--用于表达式的计算,实际上是没有意义的),但一定要熟练掌握C语言的流程控制语句、数组、函数、指针等基础知识的应用,为学习面向对象程序设计打下坚实的基础。如果这些知识你学不好,要后续学习好C++、可视化的程序设计Visual C++或C++Builder就像空中楼阁,是不现实的。
C语言程序设计入门学习六步曲

笔者在从事教学的过程中,听到同学抱怨最多的一句话是:老师,上课我也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因有三个:

一、所谓的看懂听明白,只是很肤浅的语法知识,而我们编写的程序或软件是要根据要解决问题的实际需要控制程序的流程,如果你没有深刻地理解C语言的语句的执行过程(或流程),你怎么会编写程序解决这些实际问题呢?

二、用C语言编程解决实际问题,所需要的不仅仅是C语言的编程知识,还需要相关的专业知识。例如,如果你不知道长方形的面积公式,即使C语言学得再好你也编不出求长方形的面积的程序来。

三、C语言程序设计是一门实践性很强的课程,“纸上谈兵”式的光学不练是学不好C语言的。例如,大家都看过精彩自行车杂技表演,假如,你从来没有骑过自行车,光听教练讲解相关的知识、规则、技巧,不要说上台表演、就是上路你恐怕都不行。

出现问题原因清楚了,那么如何学习呢?请你看【C语言学习六步曲】

在程序开发的过程中,上机调试程序是一个不可缺少的重要环节。“三分编程七分调试”,说明程序调试的工作量要比编程大得多。这里以如何上机调试C程序来说明C语言的学习方法。

第一步、验证性练习

在这一步要求按照教材上的程序实例进行原样输入,运行一下程序是否正确。在这一步基本掌握C语言编程软件的使用方法(包括新建、打开、保存、关闭C程序,熟练地输入、编辑C程序;初步记忆新学章节的知识点、养成良好的C语言编程风格)。
初学者最容易犯的错误是:

1、没有区分开教材上的数字1和字母l,字母o和数字0的区别,造成变量未定义的错误。另一个易错点是将英文状态下的逗号,分号;括号()双引号""输入出入成中文状态下的逗号,分号;括号(),双引号“”造成非法字符错误。

2、C语言初学者易犯语法错误:使用未定义的变量、标示符(变量、常量、数组、函数等)不区分大小写、漏掉“;”、“{”与“}”、“(”与“)”不匹、控制语句(选择、分支、循环)的格式不正确、调用库函数却没有包含相应的头文件、调用未C声明的自定义函数、调用函数时实参与形参不匹配、数组的边界超界等。

3、修改C语言语法错误时要注意以下两点:

(1)、由于C语言语法比较自由、灵活,因此错误信息定位不是特别精确。例如,当提示第10行发生错误时,如果在第10行没有发现错误,从第10行开始往前查找错误并修改之。

(2)、一条语句错误可能会产生若干条错误信息只要修改了这条错误,其他错误会随之消失。特别提示:一般情况下,第一条错误信息最能反映错误的位置和类型,所以调试程序时务必根据第一条错误信息进行修改,修改后,立即运行程序,如果还有很多错误,要一个一个地修改,即,每修改一处错误要运行一次程序。
第二步、照葫芦画瓢
在第一步输入的C程序的基础上进行试验性的修改,运行一下程序看一看程序结果发生了什么变化,分析结果变化的原因,加深新学知识点的理解。事实上这和第一步时同步进行的,实现“输入”加深知识的记忆,“修改”加深对知识的理解。记忆和理解是相辅相成的,相互促进。

例如:将最简单的Hello World!程序
#include "stdio.h"
int main()
{
printf("Hello World!\n");
return 0;
}
中的

printf("Hello World!\n");

中的Hello World!改成你的姓名,运行一下程序,看有什么变化?

再如求1+2+3...+100的和的程序

#include <stdio.h>

main()

{

int i,sum=0;

for(i=1;i<=100;i++)
{
sum=sum+i;
}
printf("sum=%d\n",sum);
}

第1次将for(i=1;i<=100;i++)中的100改成50,运行一下程序,看有什么变化?

第2次将for(i=1;i<=100;i++)中的i++改成i=i+2,运行一下程序,看有什么变化?

找出程序结果变化的原因,就加深了对C语句的理解。

第三步、不看教材看是否能将前两步的程序进行正确地输入并运行。

在这一步要求不看教材,即使程序不能运行,看能否将其改正,使其能正确运行。目的是对前两步的记忆、理解进一步强化。

第四步、增强程序的调试能力

在教材中每章都有C语言初学者易犯的错误,按照易出错的类型,将教材中的正确的程序改成错误的程序,运行一下程序,看出现的错误信息提示,并记下错误信息,再将程序改成正确的,运行一下程序。这样反复修改,就能够学习C语言程序发生错误的原因和修改错误的能力。

注意:每次只改错一个地方,目的是显示发生该错误的真正原因,避免一次改动多个地方,搞清发生错误的真正原因,切记!!!!

注意:上机调试程序时要带一个记录本,记下英文错误提示信息和解决该错误问题的方法,积累程序调试经验,避免在编程犯同样的错误,切记!!!!。

例如,将Hello World程序中语句

printf("Hello World!\n");

中的;改成中文的分号;

运行一下程序,看有什么结果?

调试程序是一种实践性很强的事,光纸上谈兵是是没用的,就像游泳运动员只听教练讲解示范,而不亲自下水练习,是永远学不会游泳的。

即使在优秀的程序员编写程序也会犯错误的,可能事最低级的语法错误,但他能快速发现错误并改正错误,而我们C语言初学者面对错误提示,不知道发生了什么错误,如何改正,这就事差别。

第五步、研究典型的C语言程序,提高程序设计能力

C语言初学者遇到最多的困惑是:上课也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因是:所谓的看懂听明白,只是很肤浅的语法知识,而没有深刻地理解C语言的语句的执行过程(或流程)。

计算机是按照人的指令(编写的程序)去执行的,如果不知道这些C语句在计算机中是如何执行的,你怎么回灵活运用这些知识去解决实际问题呢?

解决问题的方法是要先理解C语言各种语句的流程(即计算机是如何执行这些语句的过程),然后研读现成C语言经典程序,看懂别人事如何解决问题的,以提高自己的程序设计能力。
第六步、研究课程设计源成序,提高C语言的综合应用能力.

⑦ C语言知识总结

c语言概要
第一章、 概述
1、 c语言的基本知识
1.1、 c语言的执行步骤
编辑-程序代码的录入,生成源程序*.c
编译-语法分析查错,翻译生成目标程序*.obj
(语法或逻辑错误,从第一个开始改,变量定义,语句格式,表达式格式等)
链接-与其他目标程序或库链接装配,生成可执行程序*.exe
执行
1.2、 main函数的基本知识
main()函数的位置
c程序总是从main( )函数开始执行
一个c程序可以包含一个主函数,即main()函数;也可以包含一个main()函数和若干其它函数
1.3、 c程序的结构
函数与主函数
程序由一个或多个函数组成
必须有一个且只能有一个主函数main()
程序执行从main开始,在main中结束,其他函数通过嵌套调用得以执行
程序语句
C程序由语句组成
用“;”作为语句终止符
注释
//

/* */ 为注释,不能嵌套
不产生编译代码
1.4、c 程序书写的规则
习惯用小写字母,大小写敏感
不使用行号,无程序行概念:通常一个语句占一行
可使用空行和空格
常用锯齿形的书写格式;同一层次结构的语句上下对齐。
第二章、基本数据类型与运算
2.1、c程序的数据类型
注意类型和变量含义的不同(类型是固定好的名字,变量是自己起的名字)
变量占用的存储空间
数据类型
基本类型:整型、字符型、浮点型(单精度型,双精度型)
构造类型:数组类型、结构体类型
指针类型
空类型
注意基本类型赋初值的方式
基本数据类型的表示形式
整形数据
十进制:以非0数字开头,如:123,-9,0
八进制;以0数字开头,如:0123,067
十六进制:以0x开头,如:0x123,0xff
实型数据
十进制:必须带小数点,如:123.0,-9.0
指数形式;如:1.23E3,0.9e-2,5e2
字符型数据
普通字符:如:’a’,’2’,’H’,’#’
转义字符:如:’\n’,’\167’,’\xlf,’\\’
(实现几列的对齐:指定宽度。如%100\ ‘\t’制表位)
(字符串长度。“abc\n\t\\” strlen 6; sizeof 7)
基本数据类型的存储长度
整型
Int 字节数 2 位数 16 数的表示范围 -32768—32767
Short 2 16 -32768—32767
Long 4 32 -2147483648—2147483647
实型
Float 4 32 3.4e-38---3.4e38
Double 8 64 1.7e-308---1.7e308
字符型
Char 1 8 -128----127
2.2、标识符命名规则
C语言标志符命名规则
标识符有数字,字母,下划线组成
标识符的首字符必须为字母和下划线
标识符不能为c语言的保留字(关键字)
如:auto extern sizeof float static case for struct char goto switch continue in typedef const if union default long unsigned do register void double return else short while enum signed
算术运算符 + - * / %
关系运算符 > < == >= <= !=
逻辑运算符 ! && ||
位运算符 << >> ~ | ^ &
赋值运算符 = 及其扩展赋值运算符
条件运算符 ? :
逗号运算符 ,
指针运算符 * &
求字节数运算符 sizeof
强制类型转换运算符 (类型)
分量运算符 . ->
下标运算符 [ ]
其他 如函数调用运算符()
运算符的优先级
由高到低:单目运算符,算数运算符,关系运算符,赋值运算符
说明:单目运算符:自增运算符,自减运算符,类型装换运算符。结合方向:自右至左
如:++--I 先—i.。
算术运算 结合方向自左至右
2.3基本运算和表达式
关系表达式和逻辑表达式
(a>b)&&(x>y) (a==b)||(x==y) !=a||(a>b)
A&&b.a为0.不执行b
A||b a为1.不执行b
在 c 中逻辑运算结果:1代表“真”,0代表“假”;
判断一个表达式是否真:0代表“假”,非0代表“真”
条件表达式 逗号表达式
如:k=5,k++
逗号值为5;k为6.
表达式1?表达式2 :表达式3
K=5>6 ? 1 : 0
2.4、混合运算的数据类型转换
2/3+0.5 双精度浮点型
第三章、顺序结构程序设计
3.1、c语句的分类
简单语句
表达式语句 表达式+分号
空语句 只有分号的语句
复合语句 用花括号将若干语句括起来
流程控制语句
选择语句 if ,switch
循环语句 while, do while , for
转移语句 break ,continue ,return goto
3.2、格式输入函数scanf
一般形式:scanf(“格式控制字符串“,地址列表);
使用scanf函数时,需要注意:
格式字符的个数必须与输入项的个数相同,数据类型必须一一对应,非格式字符串(说明性的)要原封不动的输入。
输入实行数据时,可以不带小数点,即按整型数据输入
数值型数据与字符或字符串混合输入时,需要注意输入方式。
3.3、格式输出函数printf
Printf(“格式控制字符串“,输出列表);
指定输出格式,由格式字符串和非格式字符串两种组成,非格式字符串照原样输出。
%[标志][输出最小宽度][.精度][长度]类型
标志:- 左对齐;+ 右对齐;
%f, %d, %c, %s
3.4、其他输入输出函数
Putchar getchar puts gets
第四章、选择结构程序设计
If选择结构
单分支
If(表达式)
语句
双分支
If(表达式)
语句1
Else
语句2
多分支
If (表达式1)
语句1
Else if(表达式2)
语句2
。。。
Else if(表达式m)
语句m
Else
语句n
Switch(表达式)
{
Case 常量表达式1:语句1;break;
Case 常量表达式2:语句2;break;
。。。
Case 常量表达式m:语句m;break;
Default:语句n;break;
}
注意break的使用
第五章、循环结构程序设计
循环三要素
初始条件 ;终止条件 ;在初始条件和终止条件间反复做某件事情(循环体)
While(表达式)
语句

Do
语句
While(表达式);

For(循环体变量赋初值;循环条件;循环变量增量)
( for( ) ; // ; 进行时间延迟。在信息交换等时用。如for(i=0,i<100) ; 互相通讯的时间延迟。 Delay )
Break语句 :不能用于循环语句和switch语句之外的任何其他语句;跳出循环。
Continue语句 :跳过循环体中剩余的语句而强行执行下一次循环;跳出本次循环。
第六章、函数与编译预处理
6.1、函数的定义和调用
类型标识符 函数名 (形式参数列表)
{ 声明部分
语句
}
例:
Int max (int x,int y)
{int z;<br>Z=x>y?x:y;<br>Return(z);}
6.2、局部变量和全局变量
注意函数中静态变量的定义和使用
6.3、变量的存储类型
局部变量的存储类型
自动变量(auto) 动态存储
局部静态变量(static) 静态存储
寄存器变量(register) 静态存储
全局变量的存储类型
自动变量(auto) 动态存储
外部变量 (extern) 静态存储
全局静态变量(static )静态存储
Extern 外部引用
Static 不能用extern 引用。
第七章、数组
7.1、一维数组的定义和使用
特别需要注意循环体的初值,终止条件
例:
Main()
{
Int I,a[10];
For(i=0;i<=9;i++)
A=I;
For(i=9;i>=0;i--)
Printf(“%d”,a);
}
注意下标问题
7.2、二维数组的定义和使用
二维数组的初始化
例如:
Int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
Int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
Int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12};
Int a[ ][4]={{1,2,3,4},{5},{9,10,11,12}};
例如:int a[3][3]={{1},{2},{3}};
是对每一行的第一列元素赋值,未赋值的元素取0
7.3、字符数组和 字符串
字符串用字符数组来处理,结束标志符 ‘\0’
如:char c[ ]={“I am happy”};
用字符串常量使字符数组初值化
Char c[ ]={‘I’,’ ‘,’a’,’m’,’ ‘,’h’,’a’,’p’,’p’,’y’,’\0’};
第八章、指针
8.1、地址和指针的概念
Int I;
Int *i_point;
8.2、指针变量和变量的地址
操作符:* &
8.3、指针和一维数组
若有定义
Int a[10];
Int *p=a;
分析下面表达式的含义:
A, &a,
*(a+i), a+I,
*(p+i), p+i
A=*(a+i)=*(P+i)
&a=a+i=p+i
8.4、指针与字符串
Main()
{
Char string[ ]=”I love china!”;
Printf(“%s\n”,string);
}
Main()
{ char *string=”I love china!”;
Printf(“%s\n”,string);
}
8.5、指针变量作为函数参数
形参的定义方式;实参的形式;参数的传递方式。
第九章、结构体
9.1、结构体类型和变量的定义
Struct 结构体名
{成员列表};
Struct student
{char stuNO[8];<br>Char name[20];<br>Char sex;<br>Int age;<br>Float score;<br>Char addr[30];<br>};

Stuct student
{char stuNO[8];<br>Char name[20];<br>Char sex;<br>Int age;<br>Float score;<br>Char addr[30];<br>};
Struct student stu1, stu2;
9.2、结构体变量的引用
一般形式为:
结构体变量名.成员名
9.3、结构体数组
结构体数组 结构体数组元素.成员名
指向结构体的指针变量
(*p).成员名
p->成员名
其他
Strcpy(字符数组1,字符串2)
Strcat(字符数组1,字符数组2)
Strcmp(字符串1,字符串2)
Strlen(字符数组)