C语言

作者: 高念吖 | 来源:发表于2017-07-22 16:23 被阅读0次

    分支结构

    if(a>b){

    printf("你真美\n");

    }else{

    printf("你真帅\n");

    }

    ========================================================

    循环

    for(int i= 0;i< 100;i++)i++{

    int temp = i + 1;

    printf("%d",temp);

    }

    例:  1--100之间7的倍数

    for(int i = 0;i <100;i++){

         if(i  % 7 ==0){

        printf("%d",i);

    }

    }

    ======================================================

    多层循环的嵌套

    for(int i = 1; i < 4; I++){

    for (int j = 1;j < 4;j++){

    printf("\n";)

    }

    }

    例: /*         1 2 3

                      1 2

                      1        */

    for(int i = 1; i < 4;i++){  // 外层循环控制趟数

         for(int j = i; j <= 4 - 1; j++){ //内层循环表示每行有几个数 j = 1 代表第一个数是1

               printf("%d",j);//外层循环一次内层循环一遍,外层循环在进行下一次,

    }

    printf("\n");

    }

    ======================================================

    while循环----理解为分解版的for循环(未知次数但有循环条件)

    1,设置循环变量

    int i = 0;

    2,开始while

    while(i < 100) {

        printf("%d",i+1);

    3,设置循环增量

        i++

    }

    例: 10亿每天花一半,花多少天

    long money = 100000000;

    int   day = 0;

    while(money != 0){

         day++;

         money = money / 2;

    }

    printf("%d",day);

    ======================================================

    break 关键字

    在循环中一旦执行到break,就会结束离他最近一层循环

    for(int i = 0; i < 30; i++){

     if (i == 10){

     printf("一往而生");

     break;

    }

    printf("情不知所起");

    }

    ======================================================

    continue 一旦碰到此关键字,会跳过本次循环,继续下一次循环

    for (int i = 1; i < 10;i++) {

           if(i = =3){

           printf("把这个扔了继续下一个");

           continue;

          printf("吃地%d个包子");

    }

    ======================================================

    开关语句

    int tel = 608;

    switch (tel) {

        case  605:

       printf("欢迎致电市场部");

       break;

       case  606:

       printf("欢迎致电调研部");

       break;

       case  607:

      printf("欢迎致电教学部");

      break;

    default:

    printf("亲,你走错了");

    break;

    }

    ======================================================

    格式化输入函数

    int  s;

    printf("请输入一个数字:");

    scant("%d".&s);

    ======================================================

    数组:快速创建多个变量,缺点数组中只能存储相同类型的数据,

    数据类型: 数组名[元素个数] = {值1,值2,值3.....}

    注意: 数组的元素个数只能为整形常量 不要写变量

    int array[5] = {2,4,5,6,7};

    char a[3] = {'t','i','v'};

    可以不设置数组个数,系统会按照数组赋值自行分配

    short  b[] = {2,4,6,7};

    函数sizeof()可以帮助计算变量在内存中占得字节数

    lu (unsigned long)无符号长整型

    printf("%lu\n",sizeof(array));

    指定数组元素个数,所给数组赋的值得个数必须小于等于元素个数

    int c[5] = {22,3,4,5,43,34};

    //数组的下标

    //从0开始,最大下标是元素个数减一,

    //意义:帮助准确找到某个元素

    //使用原则:数组名[元素下标]

    printf("%d",array[2]); // 第三个元素

    array[0] = 222; //改值直接重新赋值

    //数组的输出依赖循环

    //通过循环遍历数组的每一个下标,来取出数组中的每一个元素

    //注意  初始化变量的值要从0开始

    for (int i = 0; i < sizeof(array) / 4;i++){

    printf("%d",array[i]);

    }

    //随机数----arc4random()

    //    int num1 = arc4random() % 101;

    //    printf("取出的随机数的数值为:%d\n",num1);

    //闭合区间 [10 -- 20]

    int num2 = arc4random() % (20 - 10 + 1) + 10;

    printf("取出的随机数的数值为:%d\n",num2);

    练习 :定义整形数组,包含10个元素,元素的范围是[30 ,70]数组初始值为0,给数组随机赋值,并且求出元素的和以及平均值

    int numArray[10] = {};

    int sum = 0;

    for (int i = 0; i < 10;i++){

    numArray[i] = arc4random() % (70 - 30 +1) +30;

    sum += numArray[i];

    }

    printf("数组的和为:%d,平均值为:%.2f\n",sum,sum / 10);

    练习3:定义元素个数为10�的整形数组,元素赋值随机范围[30,70],求数组中的最小值和最大值.

    int arr3[10] = {0};

    int max = 0; // 0---29都可以用来存储最大值

    int min = 71; //71以上的数都可以,用来存储最小值

    for (int i = 0; i< 10; i++) {

    arr3[i] = arc4random() % (70 - 30 + 1) + 30;

    //将随机的每一个值相比较

    //取最大

    if(max < arr3[i]){

    max = arr3[i];

    }

    //取最小

    min = min > arr3[i] ? min :arr3[i];

    }

    printf("最大值为:%d, 最小值为%d",max,min);

    练习4: 定义俩个整形数组,元素个数为10,数组取值范围随机[20,60],将这俩个数组的元素放入一个新的数组中

    int arr4[10] = {0},arr5[10] = {0},arr6[20] = {0};

    for (int i = 0; i < 10; i++) {

    arr4[i] = arc4random() % (60 - 20 + 1) + 20;

    arr5[i] = arc4random() % (60 - 20 + 1) + 20;

    //俩个元素同时赋值给第三个数组

    arr6[i] = arr4[i];

    arr6[i + 10] = arr5[i];

    printf("%d,%d\n",arr4[i],arr5[i]);

    }

    for (int i = 0; i < 20; i++) {

    printf("新数组为:%d\n",arr6[i]);

    }

    ======================================================

    //冒牌排序

    //需要双层循环,外层控制循环趟数,内层控制循环次数

    //提高效率而言外层趟数为元素个数-1,内层循环处于递减状态,为元素个数-1-i,

    //内层循环必须设置元素个数-1的操作,要防止下标越界.

    int f[6]= {23,4,54,66,33,43};

    for(int i = 0; i < 6 - 1;i++){

    for (int j = 0; j <  6 - 1 - i; j++) {

    //升序

    if (f[j] > f[j+1]) {

    //前者大于后者的话  就交换位置

    int temp = f[j];

    f[j] = f[j+1];

    f[j+1] = temp;

    }

    }

    }

    for(int i = 0; i <6;i++ ){

    printf("%d",f[i]);

    }

    ======================================================

    //字符数组,存储字符的数组

    char str1[7] = {'t','y','f','g','k','s'};

    //打印下标为3的字符

    printf("%c\n",str1[3]);

    //将小写的g改成大写的

    str1[4] = 'G';

    printf("%s\n",str1);

    //定义字符串-------

    //字符串本身就是字符数组,只是字符串的结尾是以\0结尾的,如果在字符数组中也设置了\0,那么此字符数组也可以当做字符串来输出

    char str2[] = "hello world";

    printf("%s\n",str2);

    //列举字符串情况

    //1,设置的元素个数,大于实际元素个数

    char str3[9] = {'u','l','o'};

    printf("%s\n",str3);

    //手动设置\0

    char str4[] = {'h','i','\0'};

    printf("%s\n",str4);

    //********____字符串操作函数

    //计算字符串长度,以\0结束的biaoshi

    char string[] = "you are beautiful";

    //注意长度属于计算类型,值是 >= 0 的

    unsigned long strLenght = strlen(string); //strlen 字符串长度

    printf("%lu\n",strLenght);

    //字符串拼接,讲一个字符串拼接到另一个字符串

    char string2[30] = "hello";

    char string3[] = "world";

    strcat(string2, string3); // 将字符串3拼接到字符串2后面

    printf("%s\n",string2);  //strcat 拼接

    //字符串拼接字符串拷贝 需要注意变量内存问题

    //字符串拷贝

    strcpy(string2, "hahahah");//strcpy 拷贝

    printf("%s\n",string2);

    //字符串比较,比较俩个字符串对应位置的字符,比较的是字符串整数值,对应位置的值相减,结果不为0就结束比较

    /*

    char s1[] = "abcd";

    char s2[] = "abcde";

    int result = strcmp(s1, s2); // strcmp 差值

    printf("差值为:%d\n",result);

    ======================================================

    //宏定义 纯大写  作用 给一个值起一个新名字,在程序中可以把相同的值宏定义,方便后期查阅和修改

    //命名规则:纯大写  或者 k+驼峰

    //宏定义相当于常量,前者代替后者,所以不要加分号

    #define COLORTYPE "red"

    #define kColorType "red"

    #define NUM 89

    #define A int

    #define  B A

    #define MAXVALUE(a,b) a > b ? a :

    ======================================================

    //函数允许嵌套调用,但不允许嵌套定义

    //函数 声明---定义---调用

    //声明 分号结尾  //函数声明可写可不写

    // 练习求俩个数的最大值

    .h文件声明

    int twoMaxValue(int a,int b);

    // 形参  形式参数  起占位以及提示作用

    .m文件实现

    int twoMaxValue(int a,int b){

    return a > b ? a : b;

    }

    main函数里调用

    int m = twoMaxValue(89,9);

    printf("%d",m);

    练习1:定义函数,功能为输入字符,返回字符对应的整数值

    int getCharValue (char a){

    return a;

    }

    练习:将char s[] = "asdyfsg"反向输出

    void printChar(char str[],int count){

    //如果参数列表中没有count参数,我们可以使用strlen 计算字符串长度

    unsigned long length = strlen(str); // 字符串的长度

    for (int i = 0; i < length / 2; i++){

    //交换前后字母

    char s = str[i];

    str[i] = str[length - 1 - i];

    str[length - 1 - i] = s;

    }

    printf("%s\n",str);

    }

    练习3:定义函数,功能为输出某一个数的所有约数

    void yueshu(int a){

    for (int i = 1; i <= a; i++) {

    if (a % i == 0) {

    //能整除  是约数

    printf("%d ",i);

    }

    }

    }

    练习4:定义函数,功能为找出三个整数的中间值,并返回

    int mid(int a, int b,int c){

    int f[3] = {a,b,c};

    for (int i = 0; i < 3 - 1; i++) {

    for (int j = 0; j < 3 - 1 - i ; j++) {

    if (f[j] > f[j + 1]) {

    int temp = f[j];

    f[j] = f[j+1];

    f[j+1] = temp;

    }

    }

    }

    int k = (sizeof(f) / 4 + 1) / 2;

    printf("888888888%d\n", k);

    return f[(sizeof(f) / 4 - 1) / 2];

    }

    练习5:      //数组名 以及 数组元素个数不一致

                     //封装冒泡排序(写一个冒泡函数)就需要把不一样的值暴露

    void sortArray(int array[],int count){

    for (int i = 0 ; i < count - 1; i++) {

    for (int j = 0; j < count - 1 - i; j++) {

    if (array[j] > array[j + 1]) {

    int temp = array[j];

    array[j] = array[j + 1];

    array[j + 1] = temp;

    }

    }

    }

    //输出

    for(int i = 0; i < count;i++){

    printf("%d ",array[i]);

    }

    }

    //**********************************************

    //    int temp = getCharValue('a');

    //    printf("字符对应的整数值:%d\n",temp);

    //*********************************************

    //    changeValue(23, 67);

    //*********************************************

    //    yueshu(20);

    //*********************************************

    //  int m = mid(25, 78, 39);

    //  printf("中间值为:%d\n", m);

    //*********************************************

    //int arr[4] ={34,5,65,7};

    //注意  调用函数

    //array 是要求我们放数组的地址  数组名就是该数组的地址

    //sortArray(arr, 4);

    char s[] = "dhjfhlk";

    printChar(s, 7);

    //布尔  也是整形

    BOOL d = YES; //可以赋数字也可以是yes 或者no

    printf("%d\n",d);

    相关文章

      网友评论

          本文标题:C语言

          本文链接:https://www.haomeiwen.com/subject/lsrukxtx.html