久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

C語言學習過程代碼記錄

 新用戶0175WbuX 2022-01-31

  #define _CRT_SECURE_NO_WARNINGS 1

  #include

  #include

  #include

  #include

  #include

  #include

  #include

  //int main()

  //{

  // printf("hello Word

  ");

  // return 0;

  //}

  //

  //int main()

  //{

  // int num1=0;

  // int num2=0;

  // int sum=0;

  // scanf("%d%d", &num1, &num2);

  // sum=num1 + num2;

  // printf("sum=%d

  ", sum);

  // return 0;

  //}

  //--------------枚舉常量-----------------

  // enum Sex//enum為枚舉關鍵字

  //{

  // MALE, //成為枚舉常量

  // FEMALE,

  // SECRET

  //};

  //int main()

  //{

  // //enum Sex a=SECRET;

  // printf("%d

  ", MALE);//值為0

  // printf("%d

  ", FEMALE);//值為1

  // printf("%d

  ", SECRET);//值為2

  // return 0;

  //}

  //--------字符串---------

  //int main()

  //{

  // char arr1[]="abc";

  // char arr2[]={ 'a', 'b', 'c' };

  // printf("%s

  ", arr1);

  // printf("%s

  ", arr2);

  // //strlen全稱是string length,計算字符串長度的,遇到\0停止計算,,且\0不算作長度

  // printf("%d

  ", strlen(arr1));//結果是3

  // printf("%d

  ", srelen(arr2));//結果任意值

  // return 0;

  //}

  //-------轉義字符-----------

  //int main()

  //{

  // //printf("c: est\32 est.c");

  // //printf("\32");

  // //printf("c:\ est\\32\ est.c");

  // //printf("%d

  ", strlen("c: est\32 est.c"));//打印結果為13,即長度為13

  // printf("%d

  ", strlen("\x61"));//打印結果為1即長度為1

  // return 0;

  //}

  //-------------------------------

  //int main()

  //{

  // int input=0;

  // printf("加入比特

  ");

  // printf("你要好好學習嗎(1/0)

  ");

  // scanf("%d", &input);

  // if (input==1)

  // printf("一份好工作

  ");

  // else

  // printf("賣紅薯

  ");

  //

  // return 0;

  //}

  //-----------------------------

  //int main()

  //{

  // int line=0;

  // printf("加入比特

  ");

  // while (line < 20000)

  // {

  // printf("敲一行代碼:%d

  ",line);

  // line++;

  // }

  // if (line >=20000)

  // printf("ding~找到一個好工作d=====( ̄▽ ̄*)b

  ");

  //

  // return 0;

  //}

  //------------------------

  //int Add(int x, int y)

  //{

  // int z=x + y;

  // return z;

  //}

  //int main()

  //{

  // int a=100;

  // int b=200;

  // int sum=0;

  // sum=Add(a, b);

  // printf("sum=%d

  ", sum);

  //

  // return 0;

  //}

  //*************交換兩個數(shù)******************

  //int main()

  //{

  // //交換兩個整形變量

  // int a=3;

  // int b=5;

  // int c=0;//空瓶

  // printf("交換前:a=%d b=%d

  ", a, b);

  // c=a;

  // a=b;

  // b=c;

  // printf("交換后:a=%d b=%d

  ", a, b);

  // return 0;

  //}

  //-------不使用第三個變量-----------

  //int main()

  //{

  // int a=3;

  // int b=5;

  // printf("交換前:a=%d b=%d

  ", a, b);

  // a=a + b;//a放的是和,b還是原來的b

  // b=a - b;//b得到原來的a

  // a=a - b;//a得到原來的b

  // printf("交換后:a=%d b=%d

  ", a, b);

  // return 0;

  //}

  //---------優(yōu)化--------

  //int main()

  //{

  // int a=3;//二進制:011

  // int b=5;//二進制:101

  // printf("交換前:a=%d b=%d

  ", a, b);//^是按位異或:相同為0不同為1

  // //

  // a=a^b;//此處a=110 b=101

  // b=a^b;//此處a=110 b=011

  // a=a^b;//此處a=101 b=011

  // printf("交換后:a=%d b=%d

  ", a, b);

  // return 0;

  //}

  //**************找出單身狗*****************

  //int main()

  //{

  // int arr[]={ 1, 2, 3, 4, 5, 1, 2, 3, 7, 5, 4 ,7,8};

  // int i=0;

  // int sz=sizeof(arr) / sizeof(arr[0]);//計算數(shù)組元素個數(shù)

  //

  // for (i=0; i < sz; i++)//從下標0開始取出一個數(shù)

  // {

  // int j=0;

  // int count=0;//定義計數(shù)器

  // for (j=0; j < sz; j++)//數(shù)組的每個數(shù)與取出的一個數(shù)對比

  // {

  // if (arr[i]==arr[j])

  // {

  // count++;

  // }

  // }

  // if (count==1)//計數(shù)器為2說明有兩個相同數(shù)字,,為1則就為單身狗

  // {

  // printf("單身狗:%d

  ", arr[i]);

  // break;

  // }

  // }

  //

  // return 0;

  //}

  //---------優(yōu)化------------

  //3^3=0;5^5=0;所以可得a^a=0;0^5=5;0^3=3;所以可得0^a=a; 即相同數(shù)字異或為0,,任何數(shù)和0異或等于任何數(shù)本身

  //符合交換律:3^5^3=3^3^5=5

  //int main()

  //{

  // int arr[]={ 1, 2, 3, 4, 5, 1, 2, 3, 7, 5, 4 ,7,8};

  // int i=0;

  // int ret=0;

  // int sz=sizeof(arr) / sizeof(arr[0]);//計算數(shù)組元素個數(shù)

  //

  // for (i=0; i < sz; i++)//從下標0開始取出元素

  // {

  // ret=ret^arr[i];//逐個異或

  // }

  // printf("單身狗:%d

  ", ret);

  // return 0;

  //}

  //--------------------------------------------

  //int main()

  //{

  // int a=0;//申請了4個字節(jié)的空間

  // //printf("%p

  ", &a);

  // int* p=&a;//p是一個變量-指針變量,;int*表示是整形的指針類型

  // *p=20;//* - 解引用操作符/間接訪問操作符

  // printf("a=%d

  ", a);

  //

  // return 0;

  //}

  //int main()

  //{

  // //printf("%d

  ", sizeof(char*));//地址大小都是4個字節(jié)

  // //printf("%d

  ", sizeof(short*));//4個字節(jié)

  // //printf("%d

  ", sizeof(int*));//4個字節(jié)

  // //printf("%d

  ", sizeof(double*));//4個字節(jié)

  // double d=3.14;

  // double* pd=&d;

  // printf("%d

  ", sizeof(pd));//地址的大小和操作系統(tǒng)有關,32位的為4個字節(jié),,64位的為8個字節(jié)

  // //*pd=5.5;

  // //printf("%lf

  ", d);

  // //printf("%lf

  ", *pd);

  // return 0;

  //}

  ////**********************結構體*************************

  //struct Book//結構體的類型

  //{

  // char name[20];//書名

  // short price;//價格

  //};//這里的分號不可缺少?。。,。,。?!

  //

  //int main()

  //{

  // //利用結構體類型--創(chuàng)建一個該類型的結構體變量

  // struct Book b1={ "C語言程序設計", 55 };

  // printf("書名:%s

  ", b1.name);//此處的.為屬性操作符,,用于訪問結構體成員

  // printf("價格:%d元

  ", b1.price);

  // b1.price=15;

  // printf("修改后的價格:%d元

  ", b1.price);

  //

  // ------------------------------------------

  // struct Book b1={ "C語言程序設計", 55 };

  // struct Book* pb=&b1;//*表明是指針變量

  // //利用指針打印出書名和價格 //.操作符 結構體變量.成員(需要結合解引用,,麻煩)

  // printf("%s

  ", (*pb).name);//解引用 ↑

  // printf("%d

  ", (*pb).price);// ↓

  // //也可以不利用解引用打印直接利用pb打印 //->操作符 結構體指針->成員

  // printf("%s

  ", pb->name);

  // printf("%d

  ", pb->price);

  //

  // return 0;

  //}

  //******************選擇結構和循環(huán)結構***************

  //int main()

  //{

  // int age=127;

  // /*if (age < 18)

  // printf("未成年

  ");

  // else

  // printf("已成年

  ");*/

  //

  //

  // /*if (age < 18)

  // printf("未成年

  ");

  // else if (age < 28)

  // printf("青年

  ");

  // else if (age < 50)

  // printf("壯年

  ");

  // else if (age < 90)

  // printf("老年

  ");

  // else

  // printf("長壽

  ");*/

  //

  //-----------------------------

  // if (age < 18)

  // printf("未成年

  ");

  // else if (age >=18 && age < 28)

  // printf("青年

  ");

  // else if (age >=28 && age < 50)

  // printf("壯年

  ");

  // else if (age >=50 && age < 90)

  // printf("老年

  ");

  // else

  // printf("長壽

  ");

  //

  // return 0;

  //}

  //------------練習:判斷一個數(shù)是否為奇數(shù)----------

  //int main()

  //{

  // int i=0;

  // while (i <=100)

  // {

  // if (i % 2==1)

  // printf("%d ", i);

  // i++;

  // }

  // return 0;

  //}

  //----------switch語句---------

  //int main()

  //{

  // int day=0;

  // scanf("%d", &day);

  // switch (day)

  // {

  // case 1:

  // printf("星期一

  ");

  // break;

  // case 2:

  // printf("星期二

  ");

  // break;

  // case 3:

  // printf("星期三

  ");

  // break;

  // case 4:

  // printf("星期四

  ");

  // break;

  // case 5:

  // printf("星期五

  ");

  // break;

  // case 6:

  // printf("星期六

  ");

  // break;

  // case 7:

  // printf("星期七

  ");

  // break;

  // default:

  // printf("輸入錯誤

  ");

  // }

  // return 0;

  //}

  //---------練習,輸出1-100之間的奇數(shù)-------

  //int main()

  //{ //-----第一種------

  // /*int i=0;

  // while (i <=100)

  // {

  // if (i % 2==1)

  // printf("%d ", i);

  // i++;

  // }

  //*/

  // //-----第二種------

  // /*int i=0;

  //

  // for ( ;i<100; i++)

  // {

  // if (i % 2==1)

  // printf("%d ", i);

  // }*/

  //

  // return 0;

  //}

  //************學習while循環(huán)************

  //打印1-10個數(shù)字

  //int main()

  //{

  // int i=1;

  // while (i <=10)

  // {

  // printf("%d ", i);

  // i++;

  // }

  // return 0;

  //}

  //-------break-----

  //int main()

  //{

  // int i=1;

  // while (i <=10)

  // {

  // if (i==5)

  // break;

  // printf("%d ", i);

  // i++;

  // }

  // return 0;//打印結果為1 2 3 4結束

  //}

  //---------continue------

  //int main()

  //{

  // int i=1;

  // while (i <=10)

  // {

  // if (i==5)

  // continue;

  // printf("%d ", i);

  // i++;

  // }

  // return 0;//打印結果為1 2 3 4死循環(huán)

  //}

  //int main()

  //{

  // //int ch=0;

  // //while ((ch=getchar()) !=EOF) //getchar()獲取字符,putchar()輸出字符 //EOF 即end of file 文件結束標志,,本質是-1

  // //{ //獲取不到EOF一直執(zhí)行循環(huán),,輸入ctrl+z可以輸入EOF

  // // putchar(ch);

  // //}

  //

  // //int ret=0;

  // //int ch=0;

  // //char passward[20]={ 0 };

  // //printf("請輸入密碼:");//輸入密碼后,密碼和所按的回車即

  也被存儲在輸入緩沖區(qū)

  // //scanf("%s", passward);//此時輸入密碼,,并把密碼存放在passward數(shù)組中,,此時輸入緩沖區(qū)中還剩下

  // ////此時若無getchar();語句,則

  被取走

  // ////被取走的

  的ASCLL碼值為10

  // //printf("請確認(Y/N):");

  // ////getchar();//清空輸入緩沖區(qū),,即把

  取走以免

  的ASCLL碼值進入判斷語句

  // //// //但是當緩沖區(qū)字符超過一個就失效了

  // //while ((ch=getchar()) !='

  ')//循環(huán)取,,直至取到

  停止

  // //{

  // // ;

  // //}

  // //

  // // ret=getchar();//此時輸入緩沖區(qū)為空取不到值,等待用戶輸入

  // //if (ret=='Y')

  // //{

  // // printf("確認成功

  ");

  // //}

  // //else

  // //{

  // // printf("放棄確認

  ");

  // //}

  //

  //

  //

  // int ch=0;

  // while ((ch=getchar()) !=EOF)

  // {

  // if (ch<'0' || ch>'9')//小于0或者大于9的跳過打印,,在0-9內打印

  // continue;//跳過本次循環(huán)體

  // putchar(ch)

  // } //只輸出數(shù)字

  //

  // return 0;

  //}

  //**************學習For循環(huán)*************

  //int main()

  //{

  //for循環(huán)本質是優(yōu)化while循環(huán)

  //while循環(huán)的組成:

  //int i=0; ←初始化

  //while (i < 10) ←判斷部分

  //{

  // ..... ←循環(huán)部分

  // i++;←調整部分

  //}

  //-------------用for循環(huán)打印1-10-------------

  //int i=0;

  //// 初始化 判斷 調整 //判斷部分本質是判別真假即0或者非零,,謹記!?。,。。,。,。?!

  //// ↓ ↓ ↓

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

  //{

  // printf("%d ", i); //←循環(huán)

  //}

  //-----for循環(huán)和while循環(huán)中的continue對比-----

  //int i=0;

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

  //{

  // if (i==5)

  // continue;//←執(zhí)行到此語句時跳過本次循環(huán)體,,然后執(zhí)行調整部分i++

  // printf("%d ", i);

  //}//打印結果為1 2 3 4 6 7 8 9 (結束循環(huán))

  //--------對比while循環(huán)------

  //int i=1;

  //while (i <=10)

  //{

  // if (i==5)

  // continue;//←執(zhí)行到此語句時跳過本次循環(huán)體,i++也在循環(huán)體中被跳過,,進入死循環(huán)

  // printf("%d ", i);

  // i++;

  //}//打印結果為1 2 3 4(仍然在循環(huán)中)

  //----------不可在for循環(huán)體內修改循環(huán)變量,,防止失控----------

  //int i=0;

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

  //{

  // if (i=5) //修改了變量i,進入死循環(huán)

  // printf("haha

  ");

  // printf("hehe

  ");

  //}

  // return 0;

  //}

  //

  //-------注意盡量不要省略條件---------

  //int main()

  //{

  // int i=0;

  // int j=0;

  // for (; i < 10; i++)// i=0 1 2 3 4 5 6 7 8 9 10 循環(huán)結束

  // {

  // for (; j < 10; j++)//j=0 1 2 3 4 5 6 7 8 9 10 10 10 10 10 10 10 10 10 10

  // {

  // printf("hehe

  ");

  // }

  // }

  // //只打印10個hehe

  // //第二個for循環(huán)缺少初始化,,所以j的值保留了

  // //造成的結果只有i=0的時候打印了10個hehe,,其余全部因j=10跳出了循環(huán)不打印

  // return 0;

  //}

  //----------練習:判斷循環(huán)多少次------

  //int main()

  //{

  // int i=0;// 此處k賦值為1,1為非零恒為真,,所以死循環(huán)

  // int k=0;// ↓

  // for (i=0, k=0; k=1; i++, k++)//若改為for(i=0,k=0;k=1;i++,k++)恒為真,,死循環(huán)

  // printf("1

  "); //若改為for(i=0,k=0;k==0;i++,k++)則循環(huán)一次

  // return 0;

  //}

  //-------------------

  //int main()

  //{

  // int i=0;// 此處k賦值為0,0恒為假,,所以不進入循環(huán)

  // int k=0;// ↓

  // for (i=0, k=0; k=0; i++, k++)

  // printf("1

  ");

  // return 0;

  //}

  //-------------

  //int main()

  //{

  // int i=0;// 此處判斷k值為0則條件成立,,當k的值是0時為真,所以循環(huán)一次

  // int k=0;// ↓

  // for (i=0, k=0; k==0; i++, k++)

  // printf("1

  ");

  // return 0;

  //}

  //*************學習do-while循環(huán)**************

  //int main()

  //{

  //打印1-10

  /*int i=1;

  do

  {

  printf("%d ", i);

  i++;

  } while (i <=10);*/

  //-----break和continue的用法----

  //int i=1;

  //do

  //{

  // if (i==5)

  // //break; 打印結果1234結束

  // //continue; 打印結果1234未結束循環(huán)

  // printf("%d ", i);

  // i++;

  //} while (i <=10);

  //--------------------*****練習********----------------------

  //求n的階乘

  //int main()

  //{

  // int i=0;

  // int ret=1;

  // int n=0;

  // scanf("%d", &n);

  // for (i=1; i<=n; i++)

  // {

  // ret=ret*i;

  // }

  // printf("ret=%d

  ", ret);

  // return 0;

  //}

  //---------求1!+2!+3!+4!--------------

  //int main()

  //{

  // int i=0;

  // int ret=1;//若等于0則乘多少都為0

  // int n=0;

  // int sum=0;

  // //1+2+6+24=33

  // for (n=1; n <=4; n++)//n的階乘相加4次

  // {

  // ret=1;//初始化,,防止重復運算導致錯誤

  // //初始化運行過程n=1時:循環(huán)1次,,ret初始值為1結束值為1;ret=1*1=1(為1!)

  // //n=2時:循環(huán)2次,,ret初始值為1結束值為1,;ret=1*1*2=2(為2!)

  // //n=3時:循環(huán)3次,,ret初始值為1結束值為1;ret=1*1*2*3=6(為3!)

  // //n=4時:循環(huán)4次,,ret初始值為1結束值為1,;ret=1*1*2*3*4=24(為4!)

  // //若不初始化n=1時:循環(huán)1次,ret初始值為1結束值為1,;ret=1*1=1

  // //n=2時:循環(huán)2次,,ret初始值為1結束值為2;ret=1*1*2=2

  // //n=3時:循環(huán)3次,,ret初始值為2結束值為12,;ret=2*1*2*3=12

  // //n=4時:循環(huán)4次,ret初始值為12結束值為288,;ret=12*1*2*3*4=288

  // for (i=1; i <=n; i++)//n的階乘

  // {

  // ret=ret*i;

  // }

  // sum=sum + ret;//把每個數(shù)字的階乘相加

  // }

  // printf("sum=%d

  ", sum);//sum=33

  // return 0;

  //}

  //-------求1,!+2!+3!+...+10!----------

  //int main()

  //{

  // int i=0;

  // int ret=1;

  // int n=0;

  // int sum=0;

  // for (n=1; n <=10; n++)//n的階乘相加10次

  // {

  // ret=1;//初始化,防止重復運算導致錯誤

  // for (i=1; i<=n; i++)//n的階乘

  // {

  // ret=ret*i;

  // }

  // sum=sum + ret;

  // }

  // printf("sum=%d

  ", sum);

  // return 0;

  //}

  //------優(yōu)化-------

  //int main()

  //{

  // int ret=1;

  // int n=0;

  // int sum=0;

  // for (n=1; n <=4; n++)

  // {

  // ret=ret*n;//循環(huán)到幾就是幾的階乘

  // sum=sum + ret;//依次相加

  // }

  // printf("sum=%d

  ", sum);

  //}

  //--------折半查找------

  //int main()

  //{

  // int arr[]={ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12 };//有序數(shù)組

  // int k=7;

  // int left=0;//左下標

  // // 計算數(shù)組arr所占的字節(jié)

  // // (此處為44個字節(jié)) 單個元素所占的字節(jié)數(shù),,此處為下標是0的元素所占的字節(jié)(4個字節(jié))

  // // ↓ ↓

  // int sz=sizeof(arr) / sizeof(arr[0]);//計算出sz數(shù)組的總長度,為11

  // int right=sz - 1;//右下標

  // while (left <=right)

  // {

  // int mid=(left + right) / 2;//中間值

  // if (arr[mid] > k)//說明要找的k在mid的左邊

  // {

  // right=mid - 1;//右下標移到中間值左移一個

  // }

  // else if (arr[mid] < k)//說明要找的k在mid的右邊

  // {

  // left=mid + 1;//左下標移到中間值右移一個

  // }

  // else

  // {

  // printf("找到了,,下標是%d

  ", mid);

  // break;

  // }

  // }

  // if (left>right)

  // printf("找不到

  ");

  //

  //

  //

  // return 0;

  //}

  //-------打印一串字符,,從兩端到中間依次顯示---

  //int main()

  //{

  // char arr1[]="welcome to bit!!!!!!!";

  // char arr2[]="#####################";

  // int left=0;

  // //int right=sizeof(arr) / sizeof(arr[0]) - 2; //減去2是因為字符串結尾有

  ,

  // int right=strlen(arr1) - 1;

  // while (left <=right)

  // {

  // arr2[left]=arr1[left];//替換左下標

  // arr2[right]=arr1[right];//替換右下標

  // left++;//左下標右移一個

  // right--;//右下標左移一個

  // system("cls");//執(zhí)行系統(tǒng)命令的一個函數(shù)-cls,效果為清空屏幕

  // printf("%s

  ", arr2);

  // Sleep(1000);//休息1秒

  // }

  //

  // return 0;

  //}

  //--------模擬用戶登錄,,用戶只能登陸三次-----

  //int main()

  //{

  // int i=0;

  // int a=3;

  // char passward[20]={ 0 };

  // for (i=0; i < 3; i++)

  // {

  // printf("請輸入密碼:");

  // scanf("%s", passward);

  // if (strcmp(passward, "123456")==0)

  // //strcmp函數(shù)是string compare(字符串比較)的縮寫,,用于比較兩個字符串并根據(jù)比較結果返回整數(shù)。

  // //形式為strcmp(str1,str2),,若str1=str2,,則返回零;若str1str2,,則返回正數(shù),。

  //

  // {

  // printf("登陸成功

  ");

  // break;

  // }

  // else

  // {

  // a--;

  // printf("密碼錯誤請重試,還剩余%d次機會

  ",a);

  // }

  // }

  // if (i==3)

  // printf("三次機會已用光,,退出程序

  ");

  //

  // return 0;

  //}

  //-------作業(yè)--------

  //static關鍵字使得局部變量變得靜態(tài),,離開了作用范圍不被重置初始化

  //就相當于int b出了sum函數(shù)就失憶了,每次回來都是3,;

  //但static int b不在失憶,,能記得上一次的數(shù)值所以能累加起來數(shù)值

  //int sum(int a)//a每次循環(huán)都是2

  //{

  // int c=0;

  // static int b=3;//靜態(tài)局部變量,延長生命周期到整個main函數(shù)

  // c +=1;//c每次循環(huán)都是0,,所以這里的c一直就是1

  // b +=2;//b每次循環(huán)都加2

  // return (a + b + c);

  //}

  //int main()

  //{

  // int i;

  // int a=2;

  // for (i=0; i < 5; i++)

  // {

  // printf("%d,", sum(a));

  // }

  // return 0;//結果8,,10,12,,14,,16

  //}

  //-------三個數(shù)字從大到小輸出-------

  //int main()

  //{

  // int a=0;//a放最大值

  // int b=0;//b次之

  // int c=0;//c放最小值

  // int nmb=0;//中間值

  // scanf("%d %d %d", &a, &b, &c);//輸入時的間隔符號要注意格式與函數(shù)內保持一致,,否則間隔符就參與排序

  // if (a < b)//若b比a大,就交換一下把較大的值放到a里

  // {

  // nmb=a;

  // a=b;

  // b=nmb;

  // }

  // if (a < c)//若c比a大,,就交換一下把較大的值放到a里

  // {

  // nmb=a;

  // a=c;

  // c=nmb;

  // } //此時,,三個數(shù)中最大的值放到了a里,在比較b和c的值就可以了

  // if (b < c)//若c比b大,,就交換一下把較大的值放到b里

  // {

  // nmb=b;

  // b=c;

  // c=nmb;

  // }

  //

  // printf("%d %d %d", a, b, c);

  //

  //

  // return 0;

  //}

  //--------打印1-100之間的所有的3的倍數(shù)-------

  //int main()

  //{

  // int i=0;

  // int a=1;

  // for (i=0; i < 100; i++)

  // {

  // if (a % 3==0)

  // {

  // printf("%d ", a);

  //

  // }

  // a++;

  // }

  //

  // return 0;

  //}

  //-----求最大公約數(shù)-輾轉相除法--------

  //求兩個數(shù)最大公約數(shù)就是兩個數(shù)取模為0的數(shù),,若不為0用較小的數(shù)和余數(shù)再次瘦身取模,一直循環(huán)到取模為0的數(shù)

  //int main()

  //{

  // int m=0;

  // int n=0;

  // int r=0;

  // scanf("%d%d", &m, &n);

  // while (m%n)//取余結果不為零的進入循環(huán)體調整各參數(shù)位置,,即開始輾轉

  // {

  // r=m%n;//把余數(shù)儲存

  // m=n;//較小的數(shù)存到m

  // n=r;//余數(shù)存到n,,為進入下一個循環(huán)做好準備,在下一次循環(huán)中即為較小的數(shù)對余數(shù)取模

  // }

  //

  // printf("%d

  ", n);

  //

  // return 0;

  //}

  //-------打印1000年到2000年之間的閏年---

  //判斷是否為閏年的依據(jù)

  //1.能被4整除并且不能被100整除

  //2.能被400整除

  //int main()

  //{

  // int year=0;

  // int a=0;//定義計數(shù)器

  // for (year=1000; year <=2000; year++)

  // {

  // if (year % 4==0 && year % 100 !=0)//&&邏輯與:需兩邊都滿足

  // {

  // printf("%d ", year);

  // a++;

  // }

  // else if (year % 400==0)

  // {

  // printf("%d ", year);

  // a++;

  // }

  // }

  //}

  // printf("

  閏年數(shù)為:%d

  ", a);

  //// //------進化版----

  // int main()

  // {

  // int year=0;

  // int a=0;//定義計數(shù)器

  // for (year=1000; year <=2000; year++)

  // {

  // if ((year % 4==0 && year % 100 !=0) || (year % 400==0))//||邏輯或:兩邊滿足一個即可

  // {

  // printf("%d ", year);

  // a++;

  // }

  // }

  // printf("

  閏年數(shù)為:%d

  ", a);

  //

  // return 0;

  // }

  //-----打印100-200之間的素數(shù)----

  //判斷素數(shù)規(guī)則:1.試除法,,產生2到i-1個數(shù)字

  //素數(shù):只能被1和本身整除的數(shù)

  //int main()

  //{

  // int i=0;

  // int j=0;

  // int a=0;//計數(shù)器

  // for (i=100; i <=200; i++)

  // {

  // for (j=2; j < i; j++)

  // {

  // if (i%j==0)//判斷2到i本身之間的數(shù)有無可整除的數(shù)

  // {

  // break;

  // }

  // }

  // if (i==j)

  // {

  // a++;

  // printf("%d ", i);

  // }

  // }printf("

  素數(shù)個數(shù)為:%d

  ", a);

  // return 0;

  //}

  //-------優(yōu)化------

  //如果i=a*b,那么a或者b中至少有一個數(shù)字小于等于開平方i

  // int main()

  //{

  // int i=0;

  // int j=0;

  // int a=0;//計數(shù)器

  // for (i=100; i <=200; i++) //for(i=101;i<=200;i+=2) 因為偶數(shù)不可能是素數(shù),,直接跳過偶數(shù)

  // { //在開平方i之前找就可以了

  // for (j=2; j <=sqrt(i); j++)//sqrt() 為非負實數(shù)平方根函數(shù)//是數(shù)學庫函數(shù)

  // {

  // if (i%j==0)

  // {

  // break;

  // }

  // }

  // if (j>sqrt(i))

  // {

  // a++;

  // printf("%d ", i);

  // }

  // }printf("

  素數(shù)個數(shù)為:%d

  ", a);

  //

  // return 0;

  //}

  //--------作業(yè):找出1-100所有含有9的數(shù)字-----

  //int main()

  //{

  // int i=0;

  // int a=0;//計數(shù)器

  // for (i=1; i <=100; i++)

  // {

  // if (i % 10==9 )//說明個位為9

  // {

  // a++;

  // printf("%d ", i);

  // }

  // else if (i / 10==9)//說明十位為9

  // {

  // a++;

  // printf("%d ", i);

  // }

  // }

  // printf("

  個數(shù)為:%d

  ", a);

  //

  // return 0;

  //}

  //----分數(shù)求和;計算1/1-1/2+1/3-1/4+1/5.....+1/99-1/100的值-----

  //int main()

  //{

  // int i=0;

  // double sum=0.0;//求和結果采用浮點型存儲

  // int flag=1;

  // for (i=1; i <=100; i++)

  // {

  // sum +=flag*1.0 / i;//要得到小數(shù),,要保證除號兩端必須至少有一個浮點數(shù)

  // flag=-flag;//改變正負符號

  // }

  // printf("%lf

  ", sum);//打印浮點數(shù)要用%lf

  //

  // return 0;

  //}

  //-------求最大值:求10個整數(shù)中最大值------

  //int main()

  //{

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

  // int i=0;

  // int max=arr[0];//假設數(shù)組中第一個為最大值

  // int sz=sizeof(arr) / sizeof(arr[0]);

  // for (i=1; i < sz; i++)

  // {

  // if (arr[i]>max)

  // max=arr[i];

  // }

  // printf("max=%d

  ", max);

  //

  // return 0;

  //}

  //-------乘法口訣,,打印9*9乘法口訣----

  //int main()

  //{

  // int i=0;//行數(shù)

  // for (i=1; i <=9; i++)//行數(shù) 打印9行

  // {

  // int j=0;//列數(shù)

  // for (j=1; j <=i; j++)//有幾行就打印幾列

  // {

  // printf("%d*%d=%-2d ", i, j, i*j);//%2d 打印兩位靠右對齊,%-2d 打印兩位靠左對齊

  // }

  // printf("

  ");//每行末尾回車

  // }

  //

  // return 0;

  //}

  //------二分查找,;在一個整形有序數(shù)組中查找某個數(shù),,找到打印下標,找不到打?。赫也坏?-----

  //int main()

  //{

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

  // int k=0;

  // printf("請輸入要查找的值:");

  // scanf("%d", &k);

  // int sz=sizeof(arr) / sizeof(arr[0]);

  // int right=sz-1;

  // int left=0;

  // while (left <=right)

  // {

  // int mid=(left+right)/2;

  // if (k > arr[mid])

  // {

  // left=mid + 1;

  // }

  // else if (k < arr[mid])

  // {

  // right=mid - 1;

  // }

  // else

  // {

  // printf("找到了下標為:%d

  ", mid);

  // break;

  // }

  // }

  // if (left>right)

  // printf("找不到

  ");

  //

  //

  // return 0;

  //}

  //-------猜數(shù)字游戲:1.電腦會生成一個隨機數(shù)2.猜數(shù)字----------

  // rand()需要調用#include 頭文件

  //使用time()函數(shù)需要引用頭文件#include

  //void menu()

  //{

  // printf("****************************

  ");

  // printf("***** 1.play 0.exit *****

  ");

  // printf("****************************

  ");

  //}

  //void game()

  //{

  // //游戲本體

  //

  // int ret=0;

  // int guess=0;//接收猜的數(shù)字

  // //1.生成一個隨機數(shù),,

  // ret=rand() % 100 + 1;//把隨機數(shù)限定到1-100之間,若不限定的范圍為0-32767之間

  // //rand()生成隨機數(shù)函數(shù),,需要sranf()函數(shù)設置隨機起點

  // //2.猜數(shù)字

  // while (1)

  // {

  // printf("請猜數(shù)字:");

  // scanf("%d", &guess);

  // if (guess > ret)

  // {

  // printf("猜大了

  ");

  // }

  // else if (guess < ret)

  // {

  // printf("猜小了

  ");

  // }

  // else

  // {

  // printf("恭喜你,,猜對了!

  ");

  // break;

  // }

  // }

  //

  //}

  //

  //

  //int main() //時間戳:當前計算機的時間減去計算機的起始時間(1970年1月1日0時0分0秒)=(xxxxx)秒即為時間戳

  //

  //{

  // int input=0;

  //// 強制轉換為無符號整型

  //// ↓

  // srand((unsigned int)time(NULL));//在調用rand()函數(shù)生成隨機數(shù)之前,,需要使用srand()函數(shù)來為rand()函數(shù)設置隨機數(shù)的起點,,用時間戳作為srand函數(shù)的參數(shù)來設置隨機數(shù)的生成起始點;注:隨機數(shù)起點不要頻繁設置,,頻繁設置隨機效果不好,,所以要放在循環(huán)外面

  //// ↑ ↑

  //// ↑ time()函數(shù)返回時間戳 ————> time(time_t*timer)函數(shù) ; time()函數(shù)返回的值是time_t類型,。

  //// srand()函數(shù)的參數(shù)需為unsigned int即無符號整型 ↑ ↑

  // do // time()函數(shù)的參數(shù)類型為time_t*的指針 time_t的本質是long長整型

  // {

  // menu();

  // printf("請選擇:");

  // scanf("%d", &input);

  // switch (input)

  // {

  // case 1:

  // game();//進入到游戲

  // break;

  // case 0:

  // printf("退出游戲

  ");

  // break;

  // default:

  // printf("選擇錯誤

  ");

  // break;

  // }

  // }

  // while (input);

  //

  // return 0;

  //}

  //*******************goto語句**********************

  //適合的場景是多層循環(huán)內跳出

  //int main()

  //{

  // again://要用冒號結尾!!!!!!

  // printf("hello

  ");

  // goto again;//again相當于標記,,執(zhí)行進程跳轉到標簽處

  // //----或者----

  // printf("hello

  ");

  // goto a;

  // printf("你好

  ");//這里的作用是跳過本語句

  //a:

  // printf("hehe

  ");

  //

  // return 0;

  //}

  //-*************自動關機程序*************************-

  //sysem()函數(shù)需要頭文件#include

  //int main()

  //{

  // char input[20]={ 0 };

  // system("shutdown -s -t 60");//sysem()是執(zhí)行系統(tǒng)命令的函數(shù)//shutdown -s -t 60 是60秒關機的指令

  //again:

  // printf("你的電腦將在一分鐘內關機,請輸入:我是豬,,以取消關機

  請輸入:");

  // scanf("%s", input);

  // if (strcmp(input, "我是豬")==0)//strcmp()比較兩個字符串的函數(shù)

  // {

  // system("shutdown -a");

  // }

  // else

  // {

  // goto again;//用while(1)循環(huán)也可以實現(xiàn)

  // }

  //

  //

  // return 0;

  //}

  //----------或者用while實現(xiàn)----------

  //int main()

  //{

  // char input[20]={ 0 };

  // system("shutdown -s -t 60");//sysem()是執(zhí)行系統(tǒng)命令的函數(shù)//shutdown -s -t 60 是60秒關機的指令

  // while (1)

  // {

  // printf("你的電腦將在一分鐘內關機,,請輸入:我是豬,以取消關機

  請輸入:");

  // scanf("%s", input);

  // if (strcmp(input, "我是豬")==0)//strcmp()比較兩個字符串的函數(shù)

  // {

  // system("shutdown -a");

  // break;

  // }

  // }

  //

  // return 0;

  //}

  //*********文檔學習函數(shù)*****************

  //int Add(int x, int y)

  //{

  // int z=x + y;

  // return z;

  //}

  //int main()

  //{

  // int a=100;

  // int b=200;

  // int sum=0;

  // sum=Add(a, b);

  // printf("sum=%d

  ", sum);

  //

  // return 0;

  //}

  //--------strcpy函數(shù)-------------

  //int main()

  //{

  // char arr1[]="bit";

  // char arr2[20]="#######";//目的地要比源頭長,否則會溢出

  // strcpy(arr2, arr1);//string copy-字符串拷貝

  // //將按源指向的 C 字符串復制到按目的地指向的數(shù)組中,,包括終止空字符(并在該點停止)

  // printf("%s

  ", arr2);

  // return 0;

  //}

  //---------memset-----------

  //int main()

  //{

  // char arr[]="hello word";

  // memset(arr, '*', 5);//memset(要改變值的內存塊,,要設置成*,改變幾個字節(jié))

  // printf("%s

  ", arr);//結果***** word

  // return 0;

  //}

  //-------------- 寫一個函數(shù)可以找到兩個整數(shù)中的最大值----

  // //定義函數(shù)

  //int get_max(int x, int y)//用x,,y接收a,,b

  //{

  // if (x > y)

  // return x;

  // else

  // return y;

  //}

  //int main()

  //{

  // int a=10;

  // int b=20;

  // //函數(shù)的使用

  // int max=get_max(a, b);//get_max獲取a,b的最大值

  // printf("max=%d

  ", max);

  // return 0;

  //}

  //---------自定義函數(shù)也可用數(shù)字做參數(shù)---

  // //定義函數(shù)

  //int get_max(int x, int y)//用x,,y接收a,,b

  //{

  // if (x > y)

  // return x;

  // else

  // return y;

  //}

  //int main()

  //{

  // //函數(shù)的使用

  // int max=get_max(100, 300);//get_max可直接比較數(shù)值

  // printf("max=%d

  ", max);

  // return 0;

  //}

  //************寫一個函數(shù)來交換兩個整型變量的內容****

  //-----正常交換-----

  //int main()

  //{

  // int a=10;

  // int b=20;

  // int tmp=0;

  // printf("a=%d,b=%d

  ", a, b);

  // tmp=a;

  // a=b;

  // b=tmp;

  // printf("a=%d,b=%d

  ", a, b);

  // return 0;

  //}

  //-----用函數(shù)封裝---

  //void Swap1(int x, int y)//此處只交換x,y,與a,b無關

  //{

  // int tmp=0;

  // tmp=x;

  // x=y;

  // y=tmp;

  //}

  //int main()

  //{

  // int a=10;

  // int b=20;

  // printf("a=%d,b=%d

  ", a, b);

  //調用Swap1函數(shù)(傳值調用)

  // Swap1(a, b);

  // printf("a=%d,b=%d

  ", a, b);

  //

  // return 0;//交換失敗

  //}

  //------使用指針修正---

  //void Swap2(int* pa, int* pb)//pa,、pb是形參,,當&a、&b傳遞過來時才分配內存

  // //此時形參時實參的一份臨時拷貝

  // //無需返回值,,所以用void

  //{

  // int tmp=0;

  // tmp=*pa;

  // *pa=*pb;

  // *pb=tmp;

  //}

  //int main()

  //{

  // int a=10;

  // int b=20;

  // printf("a=%d,b=%d

  ", a, b);

  // //調用Swap2函數(shù)(傳址調用)

  // Swap2(&a, &b);//&a,、&b是實參

  // printf("a=%d,b=%d

  ", a, b);

  // return 0;//交換成功

  //}

  //********練習**************

  //----使用函數(shù)打印100-200之間的素數(shù)---

  //int is_prime(int n)

  //{

  // int j=0;

  // for (j=2; j < n; j++)

  // {

  // if (n%j==0)//判斷2到i本身之間的數(shù)有無可整除的數(shù)

  // {

  // return 0;

  // }

  // }

  // if (n==j)

  // {

  // return 1;

  // }

  //}

  //int main()

  //{

  // int i=0;

  // for (i=100; i <=200; i++)

  // {

  // //判斷i是否為素數(shù)

  // if (is_prime(i)==1)

  // printf("%d ", i);

  // }

  // return 0;

  //}

  //------優(yōu)化-------

  //int is_prime(int n)

  //{

  // int j=0;

  // for (j=2; j <=sqrt(n); j++)

  // {

  // if (n%j==0)//判斷2到i本身之間的數(shù)有無可整除的數(shù)

  // {

  // return 0;

  // }

  // }

  // if (j>sqrt(n))

  // {

  // return 1;

  // }

  //}

  //int main()

  //{

  // int i=0;

  // for (i=100; i <=200; i++)

  // {

  // //判斷i是否為素數(shù)

  // if (is_prime(i)==1)

  // printf("%d ", i);

  // }

  // return 0;

  //}

  //-------寫一個函數(shù)判斷1000到2000年是不是閏年----

  //int is_leap_year(int y)//函數(shù)的功能要單一獨立,不要再函數(shù)內打印

  //{

  // if ((y % 4==0 && y % 100 !=0) || (y % 400==0))

  // return 1;

  // else

  // return 0;

  //}

  //int main()

  //{

  // int year=0;

  // for (year=1000; year <=2000; year++)

  // {

  // //判斷year是否為閏年

  // if (1==is_leap_year(year))

  // {

  // printf("%d ", year);

  // }

  // }

  // return 0;

  //}

  //------寫一個函數(shù),,實現(xiàn)一個整型有序數(shù)組的二分查找-----

  //如果找到了返回這個數(shù)的下標,,找不到返回-1

  //函數(shù)內求參數(shù)數(shù)組的個數(shù)無法實現(xiàn),需在外部求出

  //int binary_search(int arr[], int k)//本質上arr是一個指針

  //{

  // int left=0;

  // int sz=sizeof(arr) / sizeof(arr[0]);//arr的大小是4個字節(jié),,arr[0]是四個字節(jié),,所以sz=1

  // int right=sz - 1;

  // while (left <=right)

  // {

  // int mid=(left + right) / 2;//中間元素的下標

  // if (arr[mid] < k)

  // {

  // left=mid + 1;

  // }

  // else if (arr[mid]>k)

  // {

  // right=mid - 1;

  // }

  // else

  // {

  // return mid;

  // }

  // }

  // return -1;//找不到的情況

  //}

  //int main()

  //{

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

  // int k=7;

  // int ret=binary_search(arr, k);//傳遞過去的是arr數(shù)組首元素的地址,編譯器防止空間浪費

  // if (ret==-1)

  // {

  // printf("找不到指定的數(shù)字

  ");

  // }

  // else

  // {

  // printf("找到了,,下標是:%d

  ", ret);

  // }

  // return 0;//找不到

  //}

  //-------修改---------

  //int binary_search(int arr[], int k,int sz)

  //{

  // int left=0;

  // int right=sz - 1;

  // while (left <=right)

  // {

  // int mid=(left + right) / 2;

  // if (arr[mid] < k)

  // {

  // left=mid + 1;

  // }

  // else if (arr[mid]>k)

  // {

  // right=mid - 1;

  // }

  // else

  // {

  // return mid;

  // }

  // }

  // return -1;//找不到的情況

  //}

  //int main()

  //{

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

  // int k=7;

  // int sz=sizeof(arr) / sizeof(arr[0]);

  // int ret=binary_search(arr, k,sz);//傳遞過去的是arr數(shù)組首元素的地址

  // if (ret==-1)

  // {

  // printf("找不到指定的數(shù)字

  ");

  // }

  // else

  // {

  // printf("找到了,下標是:%d

  ", ret);

  // }

  // return 0;//找不到

  //}

  //-----寫一個函數(shù),,每調用一次這個函數(shù),,就會將num的值增加1---

  //void Add(int* p)

  //{

  // (*p)++;//*p++因為++優(yōu)先級較高,作用于p

  //}

  //int main()

  //{

  // int num=0;

  // Add(&num);

  // printf("num=%d

  ", num);

  // Add(&num);

  // printf("num=%d

  ", num);

  // Add(&num);

  // printf("num=%d

  ", num);

  // Add(&num);

  // printf("num=%d

  ", num);

  // return 0;

  //}

  //---隨便寫的------

  //void Add(int* p)

  //{

  // (*p)++;//*p++因為++優(yōu)先級較高,,作用于p

  //}

  //int main()

  //{

  // int num=0;

  // while (num < 5)

  // {

  // Add(&num);

  // printf("num=%d

  ", num);

  // }

  //

  // return 0;//打印結果:5

  //}

  //********鏈式訪問*********

  //int main()

  //{

  // int len=0;

  // //第一種正常寫法

  // len=strlen("abc");

  // printf("%d

  ", len);

  // //第二種,,用鏈式訪問

  // printf("%d

  ", strlen("abc"));

  //

  // return 0;

  //}

  //-----例子----

  //int main()

  //{ //printf函數(shù)編譯成功后返回字符的個數(shù)

  // printf("%d", printf("%d", printf("%d", 43)));

  // //首先第一個執(zhí)行的printf打印43,返回值為2

  // //所以第二個執(zhí)行的printf函數(shù)打印2,,返回值為1

  // //第三個執(zhí)行的printf打印1,,返回值為1

  // return 0;//打印結果:4321

  //}

  //*******函數(shù)聲明和定義***

  // //函數(shù)聲明 正確用法:函數(shù)聲明放到頭文件里,在頭文件新建add.h文件

  //int Add(int x, int y);

  //

  //int main()

  //{

  // int a=10;

  // int b=20;

  // int sum=0;

  // //函數(shù)的調用 正確用法:要使用Add函數(shù)只需包含頭文件即可#include "add.h"

  // //引用庫函數(shù)用<>,,引用自定義函數(shù)用""

  // sum=Add(a, b);

  // printf("%d

  ", sum);

  // return 0;

  //}

  // //函數(shù)的定義 正確用法:放到在源文件新建add.c的文件里

  //int Add(int x, int y)

  //{

  // int z=x + y;

  // return z;

  //}

  //********函數(shù)遞歸**********

  //int main()

  //{

  // printf("hehe

  ");

  // main();

  // return 0;//循環(huán)一段時間后報錯:stack overflow棧溢出

  //}

  //-----練習接受一個整型值(無符號),,按照順序打印它的每一位----

  //void print(int n)//定義函數(shù)

  //{

  // if (n > 9)//如果是兩位數(shù)以上就調用函數(shù),一位數(shù)就跳出打印

  // {

  // print(n / 10);//拆除n的末位數(shù)字在遞歸調用函數(shù)//定義函數(shù)到此處相當于循環(huán)體

  // }

  // printf("%d ", n % 10);//一位數(shù)打印本身,,多位數(shù)打印末位數(shù)

  //}

  //int main()

  //{

  // unsigned int num=0;

  // scanf("%d", &num);

  // print(num);//調用函數(shù)

  // return 0;

  //}

  //------編寫函數(shù)不允許創(chuàng)建臨時變量,,求字符串的長度-----

  //int my_strlen(char* str)//循環(huán)計數(shù)

  //{

  // int count=0;//創(chuàng)建了臨時變量,不符合要求

  // while (*str !='\0')//遇到\0就停止計數(shù)

  // {

  // count++;//長度加一

  // str++;//元素的地址后移一位

  // }

  // return count;

  //}

  //int main()

  //{

  // char arr[]="bit";//數(shù)組元素包括b i t \0

  // int len=0;

  // len=my_strlen(arr);//數(shù)組只能傳遞首元素的地址

  // printf("len=%d

  ", len);

  // return 0;

  //}

  //------用遞歸改進-------

  // //大事化小

  // //my_strlen("bit");

  // //1+my_strlen("it");

  // //1+1+my_strlen("t");

  // //1+1+1+my_strlen("");

  // //1+1+1+0=3

  //int my_strlen(char* str)// }

  //{ // |→相當于循環(huán)體

  // if (*str !='\0') // |

  // return 1 + my_strlen(str + 1);// }

  // else

  // return 0;

  //}

  //int main()

  //{

  // char arr[]="bit";

  // int len=0;

  // len=my_strlen(arr);

  // printf("len=%d

  ", len);

  // return 0;

  //}

  //******遞歸與迭代*********

  //-----循環(huán)求n階乘-------

  //int Fac(int n)

  //{

  // int i=0;

  // int ret=1;

  // for (i=1; i <=n; i++)

  // {

  // ret *=i;

  // }

  // return ret;

  //}

  //int main()

  //{

  // int n=0;

  // int ret=0;

  // scanf("%d", &n);

  // ret=Fac(n);

  // printf("%d

  ", ret);

  // return 0;

  //}

  //-----遞歸求n的階乘------

  //int Fac(int n)

  //{

  // if (n <=1)

  // return 1;

  // else

  // return n*Fac(n - 1);

  //}

  //int main()

  //{

  // int n=0;

  // int ret=0;

  // scanf("%d", &n);

  // ret=Fac(n);

  // printf("%d

  ", ret);

  // return 0;

  //}

  //----求第n個斐波那契數(shù)列------

  //int Fib(int n)

  //{

  // if (n <=2)

  // return 1;

  // else

  // return Fib(n - 1) + Fib(n - 2);

  //}

  //int main()//斐波那契數(shù)列是前兩個數(shù)字的和等于第三個數(shù)字

  //{ //前兩個數(shù)都是1

  // int n=0;

  // int ret=0;

  // scanf("%d", &n);

  // ret=Fib(n);

  // printf("%d

  ", ret);

  // return 0;//效率太低

  //}

  //------用循環(huán)-----

  //int Fib(int n)

  //{

  // int a=1;

  // int b=1;

  // int c=1;

  // while (n > 2)//必須知道前兩個數(shù)才能算斐波那契數(shù)列,都為1

  // {

  // c=a + b;

  // a=b;

  // b=c;

  // n--;//例n=4則需要循環(huán)求2兩次,,當n=4一次,,當n=3一次

  // }

  // return c;

  //}

  //int main()

  //{

  // int n=0;

  // int ret=0;

  // scanf("%d", &n);

  // ret=Fib(n);

  // printf("%d

  ", ret);

  // return 0;//效率很高

  //}

  //********數(shù)組的創(chuàng)建和初始化********

  //int main()//sizeof()和strlen()區(qū)別

  //{

  // char arr4[]="abcdef";

  // printf("%d

  ", sizeof(arr4));//sizeof()計算的是arr4所占的空間的大小,針對變量,、數(shù)組,、類型的大小

  // printf("%d

  ", strlen(arr4));//strlen()求字符串長度,只針對字符串

  // return 0;

  //}

  //-------一維數(shù)組的創(chuàng)建和初始化-----

  //int main()//一維數(shù)組在內存中是連續(xù)存放的

  //{

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

  // int sz=sizeof(arr) / sizeof(arr[0]);

  // int i=0;

  // for (i=1; i < sz; i++)

  // {

  // printf("&arr{%d}=%p

  ", i, &arr[i]);

  // }

  // return 0;

  //}

  //********二維數(shù)組的使用*****

  //int main()//第一行放123,,第二行放45(用花括號括起來視作一個一維數(shù)組)

  //{

  // int arr[3][4]={ { 1, 2, 3 }, { 4, 5 } };

  // int i=0;

  // for (i=0; i < 3; i++)

  // {

  // int j=0;

  // for (j=0; j < 4; j++)

  // {

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

  // }

  // printf("

  ");

  // }

  // return 0;

  //}

  //-----存儲--

  //int main()

  //{

  // int arr[3][4]={ { 1, 2, 3 }, { 4, 5 } };

  // int i=0;

  // for (i=0; i < 3; i++)

  // {

  // int j=0;

  // for (j=0; j < 4; j++)

  // {

  // printf("&arr[%d][%d]=%p

  ",i,j, &arr[i][j]);

  // }

  // printf("

  ");

  // }

  // return 0;

  //}

  //*****數(shù)組作為函數(shù)參數(shù)*******

  //----實現(xiàn)一個冒泡排序函數(shù)將一個整型數(shù)組排序,。----

  //void bubble_sort(int arr[], int sz)

  //{

  // int i=0;

  // for (i=0; i < sz - 1; i++)//確定冒泡排序的趟數(shù)

  // {

  // int j=0;

  // for (j=0; j < sz - 1 - i; j++) //決定每一趟冒泡排序比較的次數(shù)//比較完一趟在從第一個數(shù)字比較

  // { //sz-1-i減去最后面已經排好順序的數(shù)字

  // if (arr[j]>arr[j + 1])//比后一個數(shù)大就交換,比后一個數(shù)小就不變比較下一個

  // {

  // int tmp=arr[j];

  // arr[j]=arr[j + 1];

  // arr[j + 1]=tmp;//排好序的數(shù)字都在最后面

  // }

  // }

  // }

  //}

  //int main()

  //{

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

  // int i=0;

  // int sz=sizeof(arr) / sizeof(arr[0]);

  // bubble_sort(arr, sz);//冒泡排序,,對arr升序

  // for (i=0; i < sz; i++)

  // {

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

  // }

  // return 0;

  //}

  //----優(yōu)化-----

  //void bubble_sort(int arr[], int sz)

  //{

  // int i=0;

  // for (i=0; i < sz - 1; i++)//

  // {

  // int flag=1;//假設這一趟要排序的數(shù)據(jù)已經有序

  // int j=0;

  // for (j=0; j < sz - 1 - i; j++)

  // {

  // if (arr[j]>arr[j + 1])

  // {

  // int tmp=arr[j];

  // arr[j]=arr[j + 1];

  // arr[j + 1]=tmp;

  // flag=0;//本趟排序不完全有序

  // }

  // }

  // if (flag==1)//比較一趟之后有序,,就跳出

  // {

  // break;

  // }

  // }

  //

  //}

  //int main()

  //{

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

  // int i=0;

  // int sz=sizeof(arr) / sizeof(arr[0]);

  // bubble_sort(arr, sz);//冒泡排序,對arr升序

  // for (i=0; i < sz; i++)

  // {

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

  // }

  // return 0;

  //}

  //------數(shù)組名------

  //int main()

  //{

  // int arr[10]={ 1, 2, 3, 4, 5 };

  // printf("%p

  ", arr);//結果008FFC10

  // printf("%p

  ", &arr[0]);//結果008FFC10

  // printf("%d

  ", *arr);//結果1,,根據(jù)地址解引用找到1

  // return 0;

  //}

  //-----分辨----

  //int main()

  //{

  // int arr[10]={ 1, 2, 3, 4, 5 };

  // printf("%p

  ", arr);//008FFA04第一個元素的地址

  // printf("%p

  ", &arr[0]);//008FFA04第一個元素的地址

  // printf("%p

  ", &arr);//008FFA04整個數(shù)組的地址,,代表的是從首元素地址開始

  // return 0;

  //}

  //----對比---

  //int main()//分別加一可以證明他們的本質區(qū)別

  //{

  // int arr[10]={ 1, 2, 3, 4, 5, 6, 7 };

  // printf("%p

  ", arr);//00d3f900

  // printf("%p

  ", arr+1);//00d3f904 加了一個元素的4字節(jié)

  //

  // printf("%p

  ", &arr[0]);//00d3f900

  // printf("%p

  ", &arr[0]+1);//00d3f904 加了一個元素的4字節(jié)

  //

  // printf("%p

  ", &arr);//00d3f900

  // printf("%p

  ", &arr+1);//00d3f91c 加了一整個數(shù)組的4*7=28字節(jié) ;1c=28

  // return 0;

  //}

  //實現(xiàn)三子棋

  //實現(xiàn)掃雷

  //************操作符***********

  //int main()//算術右移,右邊丟棄,,左邊補原符號位

  //{

  // int a=-1;//負數(shù)按照補碼的方式存儲,,正數(shù)存儲的也是補碼(正數(shù)的補碼和原碼相同)

  // //1000000000000001-原碼

  // //1111111111111110-補碼

  // //1111111111111111-補碼

  // int b=a >> 1;//移位移的是內存中的二進制位

  // printf("%d

  ", b);

  // return 0;//結果為-1,證明負數(shù)右移之后還是負數(shù)

  //}

  //----有除二的效果----

  //int main()

  //{

  // int a=16;

  // int b=a >> 1;

  // int c=a >> 2;

  // printf("%d %d

  ", b,c);//結果分別為8 4

  // return 0;

  //}

  //-----左移-----

  //int main()

  //{

  // int a=5;

  // int b=a << 1;

  // printf("%d

  ", b);

  // return 0;//10

  //}

  //----負數(shù)---

  //int main()

  //{

  // int a=-5;

  // int b=a << 1;

  // printf("%d

  ", b);

  // return 0;//-10

  //}

  //---注意---

  //int num=10;

  //num >> -1;//錯誤

  //*******&,、|,、^********

  //int main()

  //{

  // //&按2進制位與

  // int a=3;

  // int b=5;

  // int c=a&b;

  // //011

  // //101

  // //001

  // printf("%d

  ", c);

  // return 0;

  //}

  //---|---

  //int main()

  //{

  // //|按2進制位或

  // int a=3;

  // int b=5;

  // int c=a | b;

  // //011

  // //101

  // //111

  // printf("%d

  ", c);//7

  // return 0;

  //}

  //---^---

  //int main()

  //{

  // //^按2進制位異或 相同為0,相異為1

  // int a=3;

  // int b=5;

  // int c=a^b;

  // //011

  // //101

  // //110

  // printf("%d

  ", c);

  // return 0;

  //}

  //****編輯代碼實現(xiàn)求一個整數(shù)存儲在內存中的二進制中的1的個數(shù)***

  //int main()

  //{

  // int num=0;

  // int count=0;

  // scanf("%d", &num);

  // //統(tǒng)計num的補碼中有幾個1

  // while (num)

  // {

  // if (num % 2==1)//判斷末位是否為1

  // count++;

  // num=num / 2;//去掉判斷過的末位

  // }

  // printf("%d

  ", count);

  // return 0;//但負數(shù)會出現(xiàn)問題

  //}

  //----優(yōu)化-----

  //int main()

  //{

  // int num=0;

  // int count=0;

  // scanf("%d", &num);//當num&1,,比如num=3即0011,,num&1即為0011&0001,末位為1時&1必定為1,,末位是0&1必定是0

  // int i=0;

  // for (i=0; i < 32; i++)

  // {

  // if (1==((num >> i) & 1))

  // count++;

  // }

  // printf("%d

  ", count);

  // return 0;

  //}

  //*****操作符****

  //int main()

  //{ // sizeof的()變量名時可以省略,,類型時不可以省略

  // int arr[10]={ 0 };

  // printf("%d

  ", sizeof(arr));//40//計算變量名和計算類型大小相同

  // printf("%d

  ", sizeof(int [10]));//40 數(shù)組去掉數(shù)組名即為類型

  // printf("%d

  ", sizeof(int [5]));//20 []內影響大小

  // return 0;

  //}

  //int main()

  //{

  // short s=0;

  // int a=10;

  // printf("%d

  ", sizeof(s=a + 5));//2

  // printf("%d

  ", s);//0

  // return 0;

  //}

  //----~按位取反---

  //int main()

  //{

  // int a=0;

  // //00000000000000000000000000000000 - 0的補碼

  // //取反

  // //11111111111111111111111111111111 - 補碼

  // //11111111111111111111111111111110 - 反碼

  // //10000000000000000000000000000001 - 原碼 即為-1

  // printf("%d

  ", ~a);

  // return 0;

  //}

  //----~的應用------

  //把1011的第三位改成1

  //與0100或運算就可以了

  //1111

  //int main()

  //{

  // int a=11;

  // a=a | (1 << 2);

  // //把1011的第三位改成1,或上一個0100

  // //把0001向左移2位就得到了0100

  // printf("%d

  ", a);//這時a變成1111

  // a=a & (~(1 << 2));

  // //把1111的第三位改為0,,與上一個1011

  // //把0001向左移2位就得到了0100按位取反就得到了1011

  // printf("%d

  ", a);

  // return 0;

  //}

  //----++和--的使用-----

  //int main()

  //{

  // int a=10;

  // printf("%d

  ", ++a);//++a語句之前變量a的值+1//前置++,,先++后使用

  // return 0;//11

  //}

  //int main()

  //{

  // int a=10;

  // printf("%d

  ", a++);//a++語句之后變量a的值+1//后置++,先使用,,再++ 10

  // printf("%d

  ", a);//11

  // return 0;

  //}

  //****邏輯與或****

  //int main()

  //{

  // int i=0, a=0, b=2, c=3, d=4;

  // i=a++ && ++b && d++;//a=0為假&&后面不計算,,不運行//用后自加一

  // printf("a=%d

  b=%d

  c=%d

  d=%d

  ", a, b, c, d);

  // return 0;//1 2 3 4

  //}

  //------

  //int main()

  //{

  // int i=0, a=1, b=2, c=3, d=4;

  // i=a++ && ++b && d++;

  // printf("a=%d

  b=%d

  c=%d

  d=%d

  ", a, b, c, d);

  // return 0;//2 3 3 5

  //}

  //------

  //int main()

  //{

  // int i=0, a=1, b=2, c=3, d=4;

  // i=a++ || ++b || d++;//a=1為真||后面的不計算,然后自加一

  // printf("a=%d

  b=%d

  c=%d

  d=%d

  ", a, b, c, d);

  // return 0;//2 2 3 4

  //}

  //****條件操作符****

  //int main()

  //{

  // int a=0;

  // int b=0;

  // if (a > 5)

  // b=3;

  // else

  // b=-3;

  // //用條件操作符來表示

  // b=(a > 5 ? 3 : -3);

  // return 0;

  //}

  //****逗號表達式*****

  //a=get_val();

  //count_val(a);

  //while (a > 0)

  //{

  // //業(yè)務處理

  // a=get_val();

  // count_val(a);

  //}

  //----逗號表達式優(yōu)化---

  //while (a=get_val(), count_val(a), a > 0)

  //{

  // //業(yè)務處理

  //}

  //****結構體類型***

  //創(chuàng)建一個結構體類型:struct Stu

  //struct Stu

  //{

  // char name[20];//成員變量

  // int age;

  // char id[20];

  //};

  //int main()

  //{

  // int a=10;

  // //使用struct Stu這個類型創(chuàng)建了一個學生對象s1,,并初始化

  // struct Stu s1={"張三",20,"2019010305"};

  // printf("%d

  ", s1.age); //結構體變量.成員名//.操作符可以訪問成員

  // printf("%s

  ", s1.id);

  // struct Stu* ps=&s1;

  // printf("%d

  ", (*ps).age);

  // printf("%d

  ", ps->age);//結構體指針->成員名

  // return 0;

  //}

  //********隱式類型轉換***

  //int main()

  //{

  // char a=3;

  // //00000000000000000000000000000011 正常一個整數(shù)所占32位

  // //00000011這就是char a //但char只能存放一個字節(jié),,要發(fā)生截斷,取低位一個字節(jié)

  // char b=127;

  // //00000000000000000000000001111111 同理

  // //01111111這就是char b

  // char c=a + b;//計算時進行整型提升

  // //00000000000000000000000000000011 //整型提升:高位補符號位

  // //00000000000000000000000001111111 //整型提升:高位補符號位

  // //00000000000000000000000010000010 a+b得到c,,因為c是char類型要截斷

  // //10000010就是char c

  // printf("%d

  ", c);//要打印整型//整型提升:高位補符號位

  // //11111111111111111111111110000010 - 補碼//因為是負數(shù),,所以要求原碼

  // //11111111111111111111111110000001 - 反碼

  // //10000000000000000000000001111110 - 原碼//-126

  // return 0;

  //}

  //----應用---

  //int main()

  //{

  // char a=0xb6;//十六進制的b6,即10110110

  // short b=0xb600;

  // int c=0xb6000000;

  // if (a==0xb6)//運算要整型提升,提升之后就不等于0xb6

  // printf("a

  ");//不打印

  // if (b==0xb600)//同理

  // printf("b

  ");

  // if (c==0xb6000000)

  // printf("c

  ");

  // return 0;

  //}

  //-----

  //int main()

  //{

  // char c=1;

  // printf("%u

  ", sizeof(c));//1

  // printf("%u

  ", sizeof(+c));//4//因為參與運算了所以提升成了整型

  // printf("%u

  ", sizeof(!c));//1

  // return 0;

  //}

  //****自加和自減******

  //int main()

  //{

  // int c=2;

  // int b=0;

  // b=c + --c;

  // printf("%d %d

  ", b,c);

  // /*運行b=c + --c; 分析優(yōu)先級:--c最高,,所以b=--c + c

  // 運算之前:因為--c,,在運算之前使得變量c減一(2 - 1=1);此時c=1

  // 運算之中:加c,因為c=1,,所以1+1=2賦給b

  // 運算之后:無*/

  // return 0;//b=2 c=1

  //}

  //int main()

  //{

  // int i=0;

  // int j=i++ + ++i;//++i優(yōu)先級高于i++,,所以相當于int j=++i + i++; //此時i=0,1(此時i=1)+1(此時i=2)=2

  // int k=--i + i--;//此時i=2,(此時i=1)1+1(此時i=0)=2

  // printf("%d %d %d

  ", i, j, k);

  // /*當運行int j=i++ + ++i;

  // 分析優(yōu)先級:自加高于 + ,兩個自加同級從左向右計算,;其中++i的優(yōu)先級比i++高,,即變?yōu)?/p>

  // int j=++i + i++

  // 運算之前:因為++i, 在運算之前使得變量i加一(0 + 1=1);此時i=1

  // 運算之中:加上i++,,因為是后置++,,所以此時i仍然是1,所以為1 + 1=2賦值給j

  // 運算之后:因為i++,,在運算之后使得變量i加一(1 + 1=2),;此時i=2

  // 當運行int k=--i + i--;

  // 運算之前:因為--i, 在運算之前使得變量i減一(2 - 1=1);此時i=1

  // 運算之中:加上i--,,因為是后置--,,所以此時i仍然是1,所以為1 + 1=2賦值給j

  // 運算之后:因為i--,,在運算之后使得變量i減一(1 - 1=0),;此時i=0*/

  // return 0;//i=0 j=2 k=2

  //}

  //int main()

  //{

  // int i=0;

  // int j=i + i++;//此時i=0,0+0(此時i=1)=0

  // printf("%d %d

  ", i, j);

  // /*運行int j=i + i++;

  // 運算之前:無

  // 運算之中:加上i++,因為是后置++,,所以此時i仍然是0,,所以為0 + 0=0賦值給j

  // 運算之后:因為i++,在運算之后使得變量i加一(0 + 1=1),;此時i=1*/

  // return 0;//i=1 j=0

  //}

  //int main()

  //{

  // int i=0;

  // int j=i + ++i;//此時i=0,1+(此時i=1)1=2

  // printf("%d %d

  ", i, j);

  // /*運行 int j=i + ++i;

  // 分析優(yōu)先級:自加高于 + ,,即變?yōu)閕nt j=++i + i;

  // 運算之前:因為++i, 在運算之前使得變量i加一(0 + 1=1),;此時i=1

  // 運算之中:加上i,此時i仍然是1,,所以為1 + 1=2賦值給j

  // 運算之后:無*/

  // return 0;//i=1 j=2

  //}

  //****指針*****

  //編號即為地址即為指針,,存放指針的變量成為:指針變量

  //int main()

  //{

  // int a=10;

  // int* pa=&a; //拿到的是a的四個字節(jié)中的第一個字節(jié)的地址

  // *pa=20;

  // return 0;

  //}

  //int main()

  //{

  // printf("%d

  ", sizeof(char*));//4

  // printf("%d

  ", sizeof(short*));//4

  // printf("%d

  ", sizeof(int*));//4

  // printf("%d

  ", sizeof(double*));//4

  // return 0;

  //}

  //------

  //int main()

  //{

  // int arr[10]={ 0 };

  // int* p=arr;

  // char* pc=arr;

  // printf("%p

  ", p);//004FFC40

  // printf("%p

  ", p+1);//004FFC44//加了一個整型4個字節(jié)

  //

  // printf("%p

  ", pc);//004FFC40

  // printf("%p

  ", pc+1);//004FFC41//加了一個字符型1個字節(jié)

  // return 0;

  //}

  //-------指針未初始化

  //int main()

  //{

  // int* p;//p是一個局部的指針變量,局部變量不初始化的話,,默認時隨機值

  // int* p=NULL;//不知道該初始化什么地址時先初始化為NULL,,和int a=0;類似

  // *p=20;//非法訪問內存了

  // return 0;

  //}

  //-----指針訪問越界

  //int main()

  //{

  // int arr[10]={ 0 };

  // int *p=arr;

  // int i=0;

  // for (i - 0; i <=11; i++)

  // {

  // //當指針指向的范圍超過數(shù)組arr的范圍時,,p就是野指針

  // *(p++)=i;

  // }

  // return 0;

  //}

  //------指針指向的內存空間釋放

  //int* test()

  //{

  // int a=10;

  // return &a;

  //}

  //int main()

  //{

  // int* p=test();

  // *p=20;

  // return 0;

  //}

  //-----指針使用之前檢查有效性

  //int main()

  //{

  // int* p=NULL;

  // /**p=10;*///會報錯,,指針置為NULL時的內存用戶不能對其進行操作

  // //修改

  // if (p !=NULL)

  // {

  // *p=10;

  // }

  // return 0;

  //}

  //

  ////*****指針的運算*****

  //int main()

  //{

  //#define N_VALUES 5

  // float values[N_VALUES];

  // float *vp; //指針的關系運算

  // for (vp=&values[0]; vp < &values[N_VALUES];)

  // {

  // *vp++=0;//指針+-整數(shù)

  // }

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

  // for (vp=&values[0]; vp > &values[0];)

  // {

  // *--vp=0;

  // }

  // //----------------

  // for (vp=&values[N_VALUES-1]; vp >=&values[0];vp--)

  // {

  // *vp=0;

  // }

  // return 0;

  //}

  // // 第二種寫法應該盡量避免,不符合標準規(guī)定

  // //標準規(guī)定:允許指向數(shù)組元素的指針與指向數(shù)組最后一個元素后面的內存位置的指針比較,

  // //但是不允許指向第一個元素之前的那個內存位置的指針進行比較,。

  ////-----指針+-數(shù)字

  //int main()

  //{

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

  // int* p=arr;

  // int*pend=arr + 9;

  // while (p <=pend)

  // {

  // printf("%d

  ", *p);

  // p++;

  // }

  // return 0;

  //}

  ////-----指針-指針----

  // //指針相減的前提:兩個指針指向同一塊空間

  //int main()//指針-指針得到的兩個指針之間的元素個數(shù)

  //{

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

  // printf("%d

  ", &arr[9] - &arr[0]);

  // return 0;

  //}

  //*******指針和數(shù)組**************

  //int main()

  //{

  // int arr[10]={ 0 };

  // int* p=arr;

  // int i=0;

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

  // {

  // printf("%p <==> %p

  ", &arr[i], p + i);//arr是首元素的地址,,所以p+i就是這個數(shù)組下標為i的元素的地址

  // }

  // return 0;

  //}

  //-----打印出來

  //int main()

  //{

  // int arr[10]={ 0 };

  // int* p=arr;

  // int i=0;

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

  // {

  // *(p + i)=i;

  // }

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

  // {

  // printf("%d", *(p + i));

  // }//0 1 2 3 4 5 6 7 8 9

  // return 0;

  //}

  //---拓展---

  //int main()

  //{

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

  // int* p=arr;

  // //[]是一個操作符 2和arr是兩個操作數(shù) a+b=b+a加法交換律

  // //arr[2]<==>*(arr+2)<==>*(p+2)<==>*(2+p)<==>*(2+arr)==2[arr]

  // //2[arr]<==>*(2+arr)

  // printf("%d

  ", 2[arr]);

  // printf("%d

  ", arr[2]);

  // //本質arr[2]-->*(arr+2)-->*(2+arr)-->2[arr]

  // return 0;//實際上都是地址

  //}

  //*****二級指針*****

  //int main()

  //{

  // int a=10;

  // int* pa=&a;//pa是指針變量,一級指針//*表明是指針,,int表明目標的類型

  // //ppa就是一個二級指針變量

  // int** ppa=&pa;//pa也是個變量,,&pa取出pa在內存中起始地址//*表示是指針,int*表明目標的類型

  // return 0;

  //}

  //********指針數(shù)組****

  //int main()

  //{

  // int arr[10];//整型數(shù)組 - 存放整形的數(shù)組就是整型數(shù)組

  // char ch[5];//字符數(shù)組 - 存放的是字符

  // //指針數(shù)組 - 存放指針的數(shù)組

  // int* parr[5];//整型指針的數(shù)組

  // char* pch[5];//字符型指針的數(shù)組

  // return 0;

  //}

  //

  ////****結構體****

  //struct Stu //是個類型

  //{

  // //成員變量

  // char name[20];

  // int age;

  // char id[20];

  //}s1,s2;//這里創(chuàng)建的s1,,s2也是結構體變量,,是全局變量

  //int main()

  //{

  // struct Stu s;//由struct Stu類型創(chuàng)建的s對象//s是局部變量

  //

  // return 0;

  //}

  //---------成員為其他結構體---------

  //struct B

  //{

  // char c;

  // short s;

  // double d;

  //};

  //struct Stu //是個類型

  //{

  // //成員變量

  // struct B sb;

  // char name[20];

  // int age;

  // char id[20];

  //}s1, s2;//這里創(chuàng)建的s1,s2也是結構體變量,,是全局變量

  //int main()

  //{

  // struct Stu s;//由struct Stu類型創(chuàng)建的s對象//s是局部變量

  // struct Stu s={ { 'w', 20, 3.14 }, "張三", 30, "202005034" };//初始化

  // //用.和->操作符訪問成員

  // printf("%c

  ", s.sb.c);//打印W

  //

  // struct Stu* ps=&s;

  // printf("%c

  ", (*ps).sb.c);

  // printf("%c

  ", ps->sb.c);//ps是指針可以直接用->訪問成員,,sb不是指針所以要用.訪問成員

  // return 0;

  //}

  //----傳值調用和傳址調用的對比------

  //struct B

  //{

  // char c;

  // short s;

  // double d;

  //};

  //struct Stu //是個類型

  //{

  // //成員變量

  // struct B sb;

  // char name[20];

  // int age;

  // char id[20];

  //}s1, s2;//這里創(chuàng)建的s1,s2也是結構體變量,,是全局變量

  //void print1(struct Stu t)

  //{

  // printf("%c %d %lf %s %d %s

  ", t.sb.c, t.sb.s, t.sb.d, t.name, t.age, t.id);

  //}

  //void print2(struct Stu* ps)

  //{

  // printf("%c %d %lf %s %d %s

  ", ps->sb.c, ps->sb.s, ps->sb.d, ps->name, ps->age, ps->id);

  //}

  //int main()

  //{

  // struct Stu s={ { 'w', 20, 3.14 }, "張三", 30, "202005034" };//初始化

  // //寫一個打印函數(shù)打印s的內容

  // print1(s); //傳值調用 傳參是會開辟空間,,造成浪費性能下降

  // print2(&s); //傳址調用 僅僅傳輸?shù)刂罚矢?首選

  // return 0;

  //}

    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多