首页 > 代码库 > C语言基础续集
C语言基础续集
1. 二维数组的定义和一维数组的定义非常相似,只不过和一位数组相比多了一个维度 定义数组: 数据类型 数组名/[行数] [列数] = 初值(多个元素赋初值要加大括号) 例如: int a[5] [5] = {0}; 2. 给二维数组中的元素赋值 给第一行元素赋值 外层循环用来控制行数 for (int i = 0; i< 5; i++) { a[0][i] = i + 1; } 给第二行元素赋值 for (int i = 0; i< 5; i++) { a[2][i] = i + 1 + 5; 给第三行元素赋值 for (int i = 0; i< 5; i++) { a[0][i] = i + 1 +5*2; } 内存循环用来控制列数 for (int j = 0; j < 5; j++) { for (int i = 0; i< 5; i++) { a[0][i] = i + 1; a[j][i] = i + 1 + 5*j; printf("%-2d ",a[j][i]); } printf("\n"); } int a[4][5] ={0}; int b[5][4] = {0}; for (int i = 0; i < 4; i++) { for (int j; j < 5; j++) { b[j][i] = a [i][j]; } printf("%d ",b[j][i]); } int c[3][4] = {0}; int max = 0;//用来记录最大值 int row = 0,column = 0; row 用来记录当,column 用来记录列 3. 给二维数组赋值 遍历数组元素,求出数组元素中最大值,记录所在行与列 for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { c[i][j] =arc4random() % (30 - 10 +10) +10; printf("%d ",c[i][j]); } printf("\n"); } for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { if (max < c[i][j]) { max = c[i][j]; row = i; column = j; } } } for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { if (c[i][j] == max) { printf("行为:%d,列为:%d\n",i,j); } } } printf("max = %d,row = %d,column = %d\n", max ,row,column); 注解: 二维数组定义时,第一维下标可以不给(行数可以省略),但是第二维列数下标必须要指定(一定不可以省去,列数表示什么时候换行) 并且第一维和第二维的下标必须是常量或者是常量表达式 int a [][3] = {1,2,3,4,5,6,7}; for (int i = 0; i <3; i++) { for (int j = 0; j < 3; j++) { printf("%d ",a[i][j]); } printf("\n"); } 4. 字符串数组,存放字符串的数组叫做字符串组,只不过字符串是存储在一维的字符数组中,所以本质上是一个二维的字符数组. char str[3][10] = {"Frank","dunke","iphone"}; printf("%s",str[2]); 输入三个单词,查找并输出最长单词 char str[3][10] = {"Frank","dunke","iphone"}; int maxlength (str) = 0; if (strlen(str) > maxlength(str)) { strlength(str) = strlen(str); printf("长度%lu ", strlen(str)); } char str[3][10] = {0}; printf("请输入三个人的名字:\n"); scanf("%s%s%s",str[0],str[1],str[2]); unsigned long maxLength = 0;//unsigned 无符号 for (int i = 0;i < 3;i++) { if (strlen(str [i] )> maxLength) { maxLength = strlen(str[i]); } } printf("%lu\n",maxLength); 输出最长单词, 得到最长单词的长度之后,那最长长度和每一个字符串的长度进行对比,一旦发现相同,就立即输出该字符串. for (int i = 0;i < 3;i++) { if (strlen(str[i]) == maxLength) { printf("%s\n",str[i]); } / } 实例: 有10个联系人的通讯录(假设只有人名),按姓名(英文)从小到大排序 char str[10[10]={"Frank","Duke","Account","Kisi","Jack","IronMan","SpiderMan","Merry","Cherry","Rose"}; char tempStr [10] = {0}; 5. 存储临时字符串 数组名代表数组的首地址,是一个常量地址,不可修改. printf("请输入十个人的名字:\n"); for (int i = 0; i < 10; i++) { scanf("%s",str[i]); } for (int i = 0; i < 10 - 1; i++) { for (int j = 0; j < 10 - 1 -i; j++) { if (strcmp(str[j], str[j + 1]) > 0) { 6. 对字符串进行交换操作时,要使用strcpy函数 strcpy(tempStr,str[j]); /将str[j]字符串中的内容拷贝到临时字符数组tempStr中 strcpy(str[j], str[j + 1]); strcpy(str[j + 1] ,tempStr); } } } printf("有节操之人排行榜:\n"); //输出排好序的字符串 for (int i = 0; i < 10; i++) { printf("%s\n",str[i]); } 函数存在的意义:把main函数中复杂的逻辑进行拆分,由一个一个单独的函数来处理一个单独的模块,main函数只起到宏观调控的作用. 函数的定义:包括一下四个部分; 1.返回值类型(要返回的数据的类型). 2.函数名(给函数起一个简明的名字). 3.参数列表(用来接受传入的数据). 4.函数体(函数真正的功能,实际做的操作) 函数定义的一种格式:(无参数,无返回值) 函数名命名规范:由多个单词组成,除了第一个单词外,其余单词的首字母大写. 工程名的命名规范:有单词组成,并且每个单词的首字母都要大写(记住:是单词,不是拼音). 变量名的命名规范:有单词组成,除了第一个单词外其余单词的首字母都要大写. void buyMilk () { //函数体 printf("无法买,没有给钱\n"); } //函数定义的第二种格式: (无返回值,有参数) void buyMilkVersionTwo(float money); void buyMilkVersionTwo(float money){ printf("哈哈 ,我给你买了不过我自己喝了\n"); } //函数定义的第三种格式:(有返回值,无参数) int giveMoney() { return 1; return用于返回值,将返回的数据放在return之后即可,谁调用该函数,就将值返回给谁 ,一定要切记,不要把代码放到return的后面,会执行不到 printf("下一年好好工作,继续加油\n"); } //函数定义的四种格式:(有返回值,有参数) //求两个整数的最大值(多个参数之间用逗号进行间隔) //Control reaches end of non-void function //没有到达一个返回值不为空得函数的结尾 //原因:非空函数需要返回值,识别到return之后意味着函数功能的结束 //解决方案:返回最终的数据即可,(return操作) 函数与函数之间可以嵌套调用,但是不可以嵌套定义 Function definition is not allowed here 解释在这不允许定义函数 产生原因:函数与函数之间存在嵌套定义.(也就是在一个函数体中又定义了另一个函数; ) 解决方法:就把内部函数的定义提到函数外部让函数与函数之间形成并列关系; 例1. int maxVlueForTwo(int a ,int b) { int max = 0; if (a > b) { max = a; } else { max = b; } return max; } 例2. int maxValueForTwo(int a ,int b) { return a > b ? a : b; } int minValueForTwo(int a, int b) { return a < b ? a : b; } 求三个数的最大值 int maxValueForThree(int a ,int b,int c) { 先求a和b的最大 int max = 0; max = maxValueForTwo(a,b); max = maxValueForTwo(max, c); return max ; return maxValueForTwo(maxValueForTwo(a, b),c); } 求四个数的最大值 int maxValueForFour(int a ,int b,int c, int f) { return maxValueForTwo(maxValueForThree(a,b,c), f); } 求五个数的最大值 函数声明:和函数定义相比,只是缺少了 函数体,最后加分号. int maxValueForFive(int a ,int b,int c,int f,int e); void sayHi(){ printf("I love ios\n"); } int main(int argc, const char * argv[]) { 函数使用的三部分; 1.函数的声明; 2.函数的定义; 3.函数的调用; 函数调用] buyMilk (); 函数名 + 参数列表(实参) buyMilkVersionTwo(0.1); sayHi(); int money = giveMoney(); printf("money = %d",money); int maxValue = maxValueForTwo(12,30); printf("maxValue = %d\n",maxValue); int minValue = minValueForTwo(12, 30); printf("minValue = %d\n",minValue); 求五个数的最大值 实参:实际参数,真实的具体的数据,也就是在函数调用时给定的参数叫做实参 形参:形式参数,只用来表示接收什么类型的数据,具体的存储的数据未知,也就是在函数定义时给定的参数叫做形参 函数调用时,实参到形参的传递是一个拷贝的过程. int maxValue = maxValueForFive(10, 20,30,40,50); printf("maxValue = %d",maxValue ); return 0; } int maxValueForFive(int a ,int b,int c,int f,int e){ return maxValueForTwo(maxValueForFour(a,b,c,f),e); } 7. 头文件的导入 导入自定义的文件夹时,使用"",导入系统定义的头文件时,使用<> 8. 结构体是一种自定义的数据类型,也是用来存储多个数据的大容器,只不过结构体要比数组灵活,它可以存储不同类型的数据. 结构体的定义 struct + 结构体的名称 {大括号中填写结构体成员,多个结构体成员之间通过分号进行间隔} + ;(分号必不可少) struct student { 结构体成员 int number; //存储学号 char sex ; //存储性别 };//分号是结构体定义的结束标志,必不可少 typedef struct student Student; struct point { float x;//存储横坐标 float y;//存储竖坐标 }; 给结构体类型struct student 重新定义了一个名字Student typedef第二种格式,定义结构体的同时,typedef typedef struct rect1 { int length; 存储长度 int width; 存储宽度 } Rect1; typedef struct rectangular Rec; typedef 第一种格式,先定义结构体类型,然后再typedef typedef 类型重定义(给已有的类型重新起一个名字),新的名字和原类型具有同样的功能 typedef int Integer;
C语言基础续集
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。