当前位置:文档之家› C语言笔记(二维数组-函数)

C语言笔记(二维数组-函数)

二维数组我们以前学过的数组叫一维数组(只有一行)二维数组,有行有列0 1 2 30 1 2 3 41 5 6 7 82 9 10 11 12如何来定义二维数组格式:类型标识符数组名[行的长度][列的长度];Int a[3][4] 讨论一下究竟有多少元素?元素个数=行的长度*列的长度意义:定义了一个二维数组名为A含有12个元素,每个元素都是一个整形变量,他们是:a[0][1],a[0][2]…对于第一行而言,行的下标都是零。

规律:对于每一行而言,行的下标不会改变,列的下标改变。

给二维数组赋初值(实际上是给二维数组中的每个元素付出只)1)int a[3][4]={1,2,3,4, 5,6,7,8, 9,10,11,12} ; 必须要会认,最基本的,比如a[2][0],分组后是92)int a[3][4]={1,2,3,4},{5,6,7,8}{9,10,11,12};3)可以省略行,但不能省略列A:iint a[][4]= {1,2,3,4, 5,6,7,8, 9,10,11,12} ;B:int a[][4] ={1,2,3,4},{5,6,7,8}{9,10,11,12};4) int a[3][4]={1,2,3,4, 5,6,7,8, 9,10,11} ;可以少赋值,自动填0a[2][3]=05) int a[][4] ={1,3,4},{5,6,7,8}{9,10,11,12}; a[0][3]=0注意:1)二维数组的复制原则,是要优先满足前面的行,然后再来满足后面的行2)二维数组行的长度用来表明共有多少行,列的个数用来表明每行的元素个数二维数组的输出1)有数组就要循环我们肯定要输出三行,每行要输出四个数据第i行第j个元素:for(i=0;i<3(行的长度);i++){for(j=0;j<4(列的长度);j++){printf(“%d”,a[i][j]);}//如果内循环做完了,表示第i行就输出完了printf(“/n”);}一维字符型数组Char a[5]这个数组含有五个元素,每个元素都是一个字符型变量。

如何来定义一维字符型数组Char 数组名[长度]Char a[5]定义了一个数组a,它里面含有五个元素,每个变量都是字符型如何赋初值1)一维字符型数组从整体上看就是一个字符串,每一个元素还是字符Char a[5] abcde 思考:是挨在一起存储,还是分开存储?答:既然是数组,就会挨在一起存储,就是一个字符串。

2)关于字符串的结束符号/0A:\0虽然有两个字符,但就是一个字符,不是字符串是’\0’,不是“\0”B:每当C程序在用到字符串时,C就会偷偷在字符串的最后加上一个结束标记\0,用户是看不到的C:用户可以根据需要在字符串的任意位置加上\0D:\0告诉C程序字符串到此为止3)char a[5]={‘a’,’b’,’c’,’d’,’e’};(错误的) char a[5]={‘a’,’b’,’c’,’d’ };至少应该留一个空位来存放\0Char a[5]={“abcd”}Char a[]={“asdfghjkj”}像气球一样想吹多大吹多大(用的最多)Char a[]=“asdfghjkj”一维字符数组的输入和输出输出:A:分别输出for(i=0;i<n;)B:整体输出1)格式:Puts(数组名);只有对字符型数组才可以用puts,整实型数组输出的唯一方法是分别输出2)printf(“%s”,数组名);区别:puts可以换行,printf不能换行Eg:Char a[]={“asdf”},b[]={“asdf”};Printf(“%s”,a);Printf(“%s”,b); //结果是asdfasdfPuts(a);Puts(b); //结果是asdfasdf输入:1)整体输入:scanf(“%s”,数组名)不要加取地址符2)gets(数组名)注意:scanf不能输入空格,会被当成\0;gets可以输入任何字符,尽量采用gets如果是对于一维数组而言,他们的输入方式一般用整体输入输出,而其他数组只能分别输入和输出函数什么是函数?特征:1)必须要完成某个功能功能2)函数必须要有名字3)为了完成某个功能的代码段(块)为什么要使用函数?一个公司的发展与壮大1,是不是只有老板一个人(团队合作)财务部、销售部、公关部、策划部(各负其责,分工)2,学校:校长,主任,教师,学生(分工)生产流水线,先分工再整合答案:是为了实现模块化设计(分工)函数的分类1)按照功能分类:1.系统函数(标准函数):是C已经做好的函数,直接拿来使用即可,我们不了解函数的实现代码。

比如printf函数,不需要知道它的工作原理,因为那不是用户的任务,用户的任务是使用。

2.用户自定义函数:系统函数虽然不需要用户做,但是系统函数的功能毕竟是有限的,为了得到功能更强大的函数,所以需要用户自己编写一些函数。

2)按有无参数分类:1.有参函数:printf(“123456”);2.无参函数:getchar();总结:系统函数:有参数,无参数无参函数:有参数,无参数如何定义函数?1,无参数的定义格式:Void 函数名(){ 代码}说明:A:函数名可由用户自取,与变量名一致但要符合C程序的语法规则B:无参函数括号里什么都不写,但是括号必须写C:函数要先定义在使用,如果只定义不使用没有意义,不定义就是用是错误的。

D:一个程序中,可以有多个自定义函数,但是main函数有且仅有一个(老大只有一个,小弟可以很多)E:一般是在main函数中调用用户自定义函数。

F:一般都是把用户自定函数写在上边,而把用户自定义函数写在最下边G:程序永远都是从main函数开始执行,在main函数中如果遇到用户自定义函数,流程回马上转到用户自定义函数执行,执行完成后在转到main函数H:使用函数可以实现代码重用。

比如:void p() (只是在定义函数(生产),并不是在使用函数(使用)){ printf(“*****\n”);}无参函数的使用(术语:调用)格式:函数名()#include”studio.h”Void p() //以后p就代表这两行星{printf(“*******”);printf(“*******”);}main(){ p(); } //是main函数在调用p函数分工,main只是调用p,*是p打印的。

Eg:编写一个程序,打印出:************Hello! Hello! Hello! Hello!************#include”studio.h”Void a(){printf(“************\n”);}Void b(){printf(“H ello! Hello! Hello! Hello!”)}Main(){a();b();a();} 很酷Eg:编写一个程序,找出所有的水仙花数,它是一个三位数,各个位上的立方之后等于这个数本身。

153=1+125+271.变量:每个位共三个,立方和一个,数值一个。

共五个2.算法分析:1)数位变量:int a[9]={1,2,3,4,5,6,7,8,9},b[10]={1,2,3,4,5,6,7,8,9,0}, c[10]={1,2,3,4,5,6,7,8,9,0};2)求和:定义s1变量,为了不失一般性s1=a[i]*100+b[j]*10+c[k];3)立方和:定义s2变量,s2= a[i]* a[i]* a[i]+ b[j]* b[j]* b[j]+ c[k]* c[k]* c[k];3.代码:#include”studio.h”Main(){Int a[9]={1,2,3,4,5,6,7,8,9},b[10]={1,2,3,4,5,6,7,8,9,0},c[10]={1,2,3,4,5,6,7,8,9,0},s1,s2,i,j,k;for(i=0;i<9;i++)for(j=0;j<9;j++)for(k=0;k<9;k++){s1=a[i]*100+b[j]*10+c[k];s2= a[i]* a[i]* a[i]+ b[j]* b[j]* b[j]+ c[k]* c[k]* c[k];if(s1!=s2)printf(“%5d”,s1);}}遍历所有的三位数,分离出来十位个位百位,之后进行判断。

#include”studio.h”Void flower(){Int i,s,a,b,c;For(i=100;i<1000;i++){a=i/100;b=i/10%10;c=i%10;s=a*a*a+b*b*b+c*c*c;if(s!=i)printf(“%6d”,i);}}Main(){Flower();Eg:编写一个程序,打印以下图形:************************************变量:i,j,k,Viod top(){Printf(“*****\n”);Printf(“***\n”);Printf(“*\n”);}Void bottom(){Printf(“*\n”);Printf(“***\n”);Printf(“*****\n”);}Main(){Top();Bottom();Top();Bottom()}有参函数的定义及使用有参函数的定义:格式:类型标识符(参数列表)代码;(在处理)Return 处理的结果}Int sum(int a,int b) []{ int s;//没有写在括号里,不是参数,s是在函数里面帮忙的S=a+b;Return s;//表示返回}1.sum函数他的功能是为了求出两个整数的和2.sum函数需不需要数据支持?需要ps:如F(x,y)=x+y1)在定义函数时,写在参数列表括号中的变量被称为参数2)可见函数的参数依然是变量3)虽然参数是变量但是在定义时即使类型相同也要分别定义,而且参数与参数之间要用逗号隔开。

4)函数为什么要有参数?1.绞肉机有功能:把肉搅碎2.数据支持:需要用户(外界)向它提供肉,绞肉机不能自己为自己提供肉空调,有功能降低温度。

但是需要用户外界向它提供电量A:函数都是为了完成某种功能B:既然函数要完成功能的话,需要数据支持C: 函数不能自己为自己提供数据,就需要向外界获取数据D:而函数正是通过参数向外界获取数据的E:在定义时要写在括号里面,而不是函数里面总结:函数的参数是函数与外界发生数据交换的一个纽带5)函数类型;是函数处理之后结果的类型6)函数在处理完之后,会有一个结果,函数不能自己把结果消化掉,return语句来把处理之后的结果返回给外界。

格式:return 处理结果;7)参数类型与函数类型没有任何关系有参函数的应用举例一般都是在main函数中使用格式:变量名=函数名(值列表)注意:1)对于有return 语句的函数而言,这些函数都会返回值,也就是说在调用时会得到一个值。

相关主题