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;
时间: 2024-08-11 00:23:05

C语言基础续集的相关文章

Oracle SQL语言基础及环境准备_超越OCP精通Oracle视频教程培训26

Oracle SQL语言基础及环境准备_超越OCP精通Oracle视频教程培训26 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第1/5套:SQL语言之基础入门及环境准备.主要学习Oracle数据库SQL语言基础介绍.PL/SQL语言介绍.数据库SQL对象与数据类型介绍.SQL语言实战环境准备等. Oracle SQL语言之基础及环境准备,课程内容详细如下: Oracle数据库SQL语言基础介绍Oracle数据

Swift语言指南(一)--语言基础之常量和变量

Swift 是开发 iOS 及 OS X 应用的一门新编程语言,然而,它的开发体验与 C 或 Objective-C 有很多相似之处. Swift 提供了 C 与 Objective-C 中的所有基础类型,包括表示整数的 Int,表示浮点数的 Double 与 Float,表示布尔值的 Bool,以及表示纯文本数据的 String. Swift 还为两个基本集合类型 Array 与 Dictionary 提供了强大的支持,详情可参考 (集合类型)Collection Types. 与 C 语言类

02 java语言基础

常量:字面值常量(字符串,字符,整数,小数,布尔,null),自定义常量,''这个不是字符常量,""这个是字符串常量 进制: 02.01_Java语言基础(常量的概述和使用)(掌握) A:什么是常量 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的分类 字符串常量 用双引号括起来的内容 整数常量 所有整数 小数常量 所有小数 字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号 布尔常量 较为特

嵌入式 Linux C语言——C语言基础

嵌入式 Linux C语言--C语言基础 一.数据类型 1.基本数据类型 数据类型是创建变量的模型.变量名是连续存储空间的别名,程序中使用变量命名存储空间,通过变量可以使用存储空间.变量所占的内存大小取决于创建变量的数据类型. 2.有符号和无符号 有符号数中数据类型的最高位用于标识数据的符号,最高位为1表示为负数,最高位为0表示为正数. 计算机中有符号数通常使用补码表示,正数的补码为正数本身,负数的补码为负数的绝对值的各位取反后加1. 计算机中无符号数通常使用原码表示,无符号数默认为正数,没有符

C#语言基础

第一部分 了解C# C#是微软公司在2000年7月发布的一种全新且简单.安全.面向对象的程序设计语言,是专门为.NET的应用而开发的.体现了当今最新的程序设计技术的功能和精华..NET框架为C#提供了一个强大的.易用的.逻辑结构一致的设计环境.其特点: 语言简洁 保留了C++的强大功能: 快速应用开发功能: 语言的的自由性: 强大的Web服务器控件: 支持跨平台: 与XML相融合: 第二部分 C#语言基础: 一.C#项目的组成结构: 1.项目后缀 .config——配置文件(存放配置参数文件)

OC语言基础知识

OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能的类. 术语:OO面向对象.OOP面向对象编程 二.类 (一)关于类 类的设计只关注三个东西:类名.属性和方法 注意:一般名词都是类,拥有相同属性和行为的对象都可以抽象为一个类,类名是标识符的一种,需要符合规范,通常类名的第一个字母大写,且不能有下划线,如果有多个单词则使用驼峰标识.在对方法进行类的

【quick-cocos2d-x】Lua 语言基础

版权声明:本文为博主原创文章,转载请注明出处. 使用quick-x开发游戏有两年时间了,quick-x是cocos2d-Lua的一个豪华升级版的框架,使用Lua编程.相比于C++,lua的开发确实快速便捷了许多,下文只是lua这门语言的一个基础知识点,没有涵盖整个Lua的内容,但是作为对lua入门的初步了解还是可以的,由于内容精简了不少,所以语言上可能会有点跳跃,但是问题不大. 要了解一门语言,首先要了解的是语言的标识符.保留字.常量和变量,命名规范和注释以及数据类型等.然后是运算符.控制流语句

C# 语言基础(简单的输出 输入语句 和 加法运算符)

int a, b; Console.Title = "C# 语言基础-第一堂课";// 标题 Console.BackgroundColor = ConsoleColor.DarkRed;//设置控制台的背景颜色 Console.WriteLine("幼儿园大班第一节课"); Console.WriteLine("请输入a的值,按回车");//输出语句,自动换行 Console.Write("a="); //输出语句,自动不换

R语言基础

##数据获取 x1=round(runif(100,min=80,max=100)) x2=round(rnorm(100,mean=80, sd=7)) x3=round(rnorm(100,mean=80,sd=18)) x3[which(x3>100)]=100 num=seq(2005138101,length=100) x=data.frame(num,x1,x2,x3) write.table(x, "grade.txt") ##数据分析 y=read.table(&