中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

南寧美麗南方官方網(wǎng)站建設(shè)意見企業(yè)網(wǎng)站建設(shè)的基本流程

南寧美麗南方官方網(wǎng)站建設(shè)意見,企業(yè)網(wǎng)站建設(shè)的基本流程,國(guó)內(nèi)網(wǎng)絡(luò)推廣平臺(tái),wordpress 雙模式機(jī)器語(yǔ)言與高級(jí)語(yǔ)言 計(jì)算機(jī)硬件只能夠識(shí)別電平信號(hào),正電平或負(fù)電平,計(jì)算機(jī)的的各種按鈕觸發(fā)各種電平與計(jì)算機(jī)交互。隨著隨著操作系統(tǒng)的發(fā)展,人們用1,0分別表示正電平和負(fù)電平,并由0,1所組成的一系列指令指…

機(jī)器語(yǔ)言與高級(jí)語(yǔ)言

計(jì)算機(jī)硬件只能夠識(shí)別電平信號(hào),正電平或負(fù)電平,計(jì)算機(jī)的的各種按鈕觸發(fā)各種電平與計(jì)算機(jī)交互。隨著隨著操作系統(tǒng)的發(fā)展,人們用1,0分別表示正電平和負(fù)電平,并由0,1所組成的一系列指令指揮計(jì)算機(jī)工作。

一種由二進(jìn)制所組成的指令集合稱為機(jī)器語(yǔ)言。機(jī)器語(yǔ)言依賴于硬件,因此也稱為低級(jí)語(yǔ)言,機(jī)器語(yǔ)言全由二進(jìn)制指令組成難學(xué),難計(jì),難寫。
20世紀(jì)50年代左右出現(xiàn)了高級(jí)語(yǔ)言,高級(jí)語(yǔ)言依賴于操作系統(tǒng),使用字符作為計(jì)算機(jī)指令,而字符正是自然語(yǔ)言的一部分,更貼合人類的使用習(xí)慣。高級(jí)語(yǔ)言依賴于操作系統(tǒng),由操作系統(tǒng)將其轉(zhuǎn)化為字節(jié),在轉(zhuǎn)化為二進(jìn)制,最后轉(zhuǎn)為硬件指令。

C語(yǔ)言是最流行的系統(tǒng)語(yǔ)言,誕生于貝爾實(shí)驗(yàn)室,隨著C語(yǔ)言的發(fā)展,其移植到各種計(jì)算機(jī)上,已成為世界上應(yīng)用最廣泛的語(yǔ)言。

后來(lái)的許多語(yǔ)言都受到c的影響,大多都是用c來(lái)開發(fā),如Java,Python等。高級(jí)語(yǔ)言學(xué)習(xí)更方便也更快捷。

C語(yǔ)言示例

#include<stdio.h>int main(){//聲明調(diào)用函數(shù)int max(int a,int b);int a,b,c;scanf("%d,%d",&a,&b);c = max(a,b);printf("max=%d",c); 
}int max(int a,int b){int z;if(a>b) z =a;else z = b;	return z;
}/*
1. c語(yǔ)言程序主要有函數(shù)組成,函數(shù)是c程序的基本單位
2. 變量是程序中傳遞的方式,有值傳遞和引用傳遞
3. 函數(shù)的定義語(yǔ)法為:函數(shù)返回值類型   函數(shù)名 (參數(shù)類型 參數(shù) ...) {//變量和方法組成 }例如: int max (int a,int b) {//return 0;}
4. 變量的定義語(yǔ)法為:變量類型 變量名  [= 數(shù)據(jù) ]   []中為可省略內(nèi)容
5. #include<stdio.h> 是c語(yǔ)言的標(biāo)準(zhǔn)輸入輸出庫(kù),可以直接用到內(nèi)部的函數(shù)
6. int max(int a,int b) 為函數(shù)名部分,{}中的內(nèi)容為函數(shù)的執(zhí)行體,當(dāng)函數(shù)定義在函數(shù)調(diào)用之后時(shí)需要在調(diào)用前聲明函數(shù)名部分。
7. c語(yǔ)言函數(shù)總是從main(主函數(shù)開始執(zhí)行)
8. c語(yǔ)言書寫格式自由,語(yǔ)句用;隔開
9. c語(yǔ)言庫(kù)函數(shù)豐富,使用庫(kù)函數(shù)需要# 引入,如  #include<stdio.h>
10.c語(yǔ)言使用 //作為注釋,注釋不會(huì)參與到編譯,多行注釋  
11.c語(yǔ)言是強(qiáng)類型的編譯語(yǔ)言,運(yùn)行時(shí)需編譯成二進(jìn)制的可執(zhí)行文件 
*/

多行注釋是/*...*/。

內(nèi)存存儲(chǔ)的方式

c語(yǔ)言的代碼會(huì)編譯成二進(jìn)制文件,操作系統(tǒng)據(jù)可以使用這里二進(jìn)制指令文件來(lái)控制計(jì)算機(jī)。

在數(shù)據(jù)存儲(chǔ)時(shí),對(duì)于計(jì)算機(jī)來(lái)說(shuō)二進(jìn)制是可執(zhí)行的指令集合,計(jì)算機(jī)的存儲(chǔ)器是用半導(dǎo)體集成電路構(gòu)成的,包含眾多脈沖電路,二極管元件,每個(gè)二極管元件相當(dāng)于開關(guān)。所以每次都會(huì)用兩種狀態(tài),對(duì)電平來(lái)說(shuō)就是正電平和負(fù)電平,用1,0表示。如下圖

請(qǐng)?zhí)砑訄D片描述
于是由這些二進(jìn)制組成的計(jì)算機(jī)指令控制者計(jì)算機(jī)的硬件。

在計(jì)算機(jī)中每一個(gè)二極管元件成為二進(jìn)制位,是存儲(chǔ)的最小單元,成為比特(bit),或者。在二進(jìn)制中,規(guī)定每8位組成一組,稱為字節(jié)(byte),即一個(gè)字節(jié)占8位有8個(gè)0,1,共有2^8中狀態(tài)。

地址是計(jì)算機(jī)的存儲(chǔ)單元,計(jì)算機(jī)存儲(chǔ)器包含很多存儲(chǔ)單元,操作系統(tǒng)將這些單元編號(hào),統(tǒng)稱為地址。

在程序設(shè)計(jì)中,不同類型的數(shù)據(jù)占據(jù)的存儲(chǔ)空間不一樣,因此語(yǔ)言對(duì)占用不同的數(shù)據(jù)類型進(jìn)行了分類,成為數(shù)據(jù)類型

如c語(yǔ)言中一般存在如下數(shù)據(jù)類型:

在這里插入圖片描述

語(yǔ)法定義法則

變量與常量

c語(yǔ)言中的變量是一個(gè)存儲(chǔ)單元的地址,變量名代表該地址存儲(chǔ)的數(shù)值,可以通過(guò)&獲取變量的地址。

變量定義以數(shù)字,字母或下環(huán)線完成,數(shù)字不能做首位;變量必須先定義分配存儲(chǔ)空間后再使用;

變量定義時(shí)可以不初始化可以初始化賦值,如下:

//定義實(shí)數(shù)
int a1 = 100;
int a2;
a2 = 200;//定義浮點(diǎn)數(shù)(小數(shù))
float a3 = 12.21
double a31 = 23.33333333333//定義指數(shù),指數(shù)必須為整數(shù),用e,E表示10的階乘 (%e)
int a4 = 2.3e10 //定義字符
char a5 = "c"//c語(yǔ)言沒(méi)專門的字符串定義,使用字符數(shù)組定義
char a6[10] 

變量的格式化打印時(shí)%d,%s,%c,%f,%d,%e和打印的變量類型要對(duì)應(yīng)。
%.2表示保留小數(shù)點(diǎn)幾位。

字符常用用反引號(hào)包裹;c中提供了很多轉(zhuǎn)義字符,用來(lái)格式化符號(hào),如:

\t 表格分區(qū)
\b 退格
\r 回車
\f 換頁(yè)
\0 字符串的結(jié)束標(biāo)志
\\ 表示一個(gè)\

字符再c中是ASCII碼中的數(shù)據(jù),打印時(shí)通過(guò)格式化打印對(duì)應(yīng)的數(shù)字或者字符,%c,%d。每一個(gè)小寫字母比大寫字母大32。

c語(yǔ)言再處理自字符時(shí)是用''包裹,而字符串是用""包裹,后者系統(tǒng)會(huì)在字符串后默認(rèn)加\0作為結(jié)束符,因此字符串占用字符比實(shí)際多一個(gè)字符。

c語(yǔ)言中使用# define [常量名] [常量值]的方式定義常量。

#include<stdio.h>
#include<math.h>
//定義常量
#define PI 3.1415926 int main(){float a = 12.43;printf("%f\n",a);	int b = 'c';printf("%c\n",b );char c = 'a';printf("%c\n",c);//數(shù)學(xué)計(jì)算庫(kù)double r =3,d,e,f;//圓周率 d = 2*3.1415926*r; //面積e = 2*3.1415926*r*r;// 體積f = (4.0/3.0)*(3.1415926*r*r*r);printf("c=%f,s=%f,v=%f\n",d,e,f); //使用數(shù)學(xué)計(jì)算庫(kù)pow方法 double v;v=(4.0/3.0)*(3.1415926*pow(r,3));printf("數(shù)學(xué)計(jì)算庫(kù):%f\n",v);//定義常量 計(jì)算double v1;v1 = 4.0/3.0*PI*pow(r,3);printf("常量計(jì)算:%f\n",v1); return 0; 
} 

指針變量,是c語(yǔ)言提供直接操作內(nèi)存地址的變量,通過(guò)類型 * 變量名來(lái)定義,表示該指針變量。通過(guò)&取出其地址。(指針章節(jié)詳述)

輸入輸出函數(shù)是printf,scanf分別使用%d,%s,%c,%f,%d,%e作為輸入和輸出的格式控制符,另外scanf函數(shù)格式控制后的變量是變量地址,而不是變量名,且在輸入是,格式控制符沒(méi)有任何符號(hào)就默認(rèn)用空格隔開,聲明了相應(yīng)符號(hào)輸入時(shí)就要在對(duì)應(yīng)位置輸入相同的符號(hào)。

運(yùn)算符注意事項(xiàng)

  1. 除法運(yùn)算/時(shí)兩個(gè)整數(shù)的相除結(jié)果仍然是整數(shù),c自動(dòng)去除小數(shù)部分。
  2. 運(yùn)算符的優(yōu)先級(jí)與數(shù)學(xué)規(guī)定的相同。
  3. 當(dāng)運(yùn)算時(shí)出現(xiàn)了flaot和double類型,所有的數(shù)據(jù)都會(huì)轉(zhuǎn)為double,提高精度。
  4. c提供自增和自減運(yùn)算,++i表示使用變量i前先加一,i++表示使用后變量加一。
#include<stdio.h>int main(){int i = 3;printf("%d\n",++i);int j = 3;printf("%d\n",j++);return 0; 
}

在這里插入圖片描述

自增和自減完成后都會(huì)重新賦給變量,另外自增與自減只用用變量來(lái)操作不能用數(shù)字,而且變量不能參雜任何表達(dá)式 (a+b) ++,這也是錯(cuò)誤的。

  1. 在混合計(jì)算的過(guò)程中,字節(jié)少的數(shù)據(jù)會(huì)自動(dòng)轉(zhuǎn)化為字節(jié)多的數(shù)據(jù)。
  2. 在類型轉(zhuǎn)換過(guò)程中字節(jié)少的數(shù)據(jù)會(huì)自動(dòng)轉(zhuǎn)化為字節(jié)多的數(shù)據(jù),多字節(jié)轉(zhuǎn)化為少字節(jié)的需要強(qiáng)制轉(zhuǎn)換,(類型名) (表達(dá)式)強(qiáng)制轉(zhuǎn)化會(huì)丟失精度。
  3. *用于定義指針變量,&取變量地址。

庫(kù)與函數(shù)的使用

c語(yǔ)言提供了豐富的庫(kù)函數(shù),只要導(dǎo)入了相關(guān)庫(kù)就可以使用庫(kù)方法。在其他語(yǔ)言中也叫內(nèi)置方法。在使用庫(kù)函數(shù)時(shí),要在庫(kù)函數(shù)中使用預(yù)編譯指令#include加載庫(kù)。目的時(shí)將相關(guān)的 ”頭文件“的內(nèi)容引入到頭文件中。#include也被稱為頭文件。

庫(kù)的存在使代碼不至于都寫在一個(gè)文件中,將一部分代碼寫在庫(kù)文件中,需要時(shí)引入頭文件即可。引入頭文件主要包含# include 文件目錄和文件名,如

#inlcude <stdio.h>

這是c語(yǔ)言的提供的標(biāo)準(zhǔn)輸入輸出庫(kù),導(dǎo)入該頭文件后可以使用:putchar,getchar,printf,scanf,puts,gets等庫(kù)方法。

#include是預(yù)編譯指令,為導(dǎo)入頭文件的關(guān)鍵字,<stdio.h>是文件名,用<>包裹起來(lái),表示編譯器會(huì)在編譯系統(tǒng)所在的子目錄查找stdio.h文件。如

#include "C:\tmp\c_header_file\test.h"

除了c語(yǔ)言自帶的標(biāo)準(zhǔn)庫(kù)外,可以引入自定義的庫(kù)文件用""代替<>。區(qū)別在于""會(huì)在用戶當(dāng)前目錄下尋找?guī)煳募?#xff0c;而<>會(huì)在c編譯環(huán)境目錄下尋找?guī)煳募?/p>

因此,C語(yǔ)言提供了兩種文件命令方式.h.c。在C語(yǔ)言中,數(shù)據(jù)結(jié)構(gòu)及函數(shù)的聲明與實(shí)現(xiàn)進(jìn)行分離有且僅有一種搭配方式:.h .c。

.h 用于數(shù)據(jù)結(jié)構(gòu)及函數(shù)的聲明
.c 用于數(shù)據(jù)結(jié)構(gòu)的初始化及函數(shù)的具體實(shí)現(xiàn)

在C++中,數(shù)據(jù)結(jié)構(gòu)及函數(shù)的聲明與實(shí)現(xiàn)進(jìn)行分離的方式有兩種:①.h、.cpp;②.hpp。具體可以參考游戲開發(fā)之.h、.c、.hpp及.cpp的區(qū)別

因此當(dāng)程序僅僅是數(shù)據(jù)結(jié)構(gòu)或者工具函數(shù)時(shí),將函數(shù)保存為.h文件,通過(guò)頭文件導(dǎo)入后就可以使用其數(shù)據(jù)結(jié)構(gòu)和工具函數(shù)了。

自定義addSum頭文件
在這里插入圖片描述
在主類引入頭文件,并調(diào)用函數(shù)
在這里插入圖片描述
調(diào)用成功
在這里插入圖片描述

malloc函數(shù)
malloc(長(zhǎng)度)是動(dòng)態(tài)開辟內(nèi)存空間函數(shù),表示向系統(tǒng)申請(qǐng)分配一個(gè)占參數(shù)長(zhǎng)度字節(jié)的空間。

程序與算法

在程序中指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式就是數(shù)據(jù)結(jié)構(gòu)(data structure)。算法是一系列解決問(wèn)題的清晰指令,算法代表著用系統(tǒng)的方法描述解決問(wèn)題的策略機(jī)制。

算法可以用多種方式表示,自然語(yǔ)言,流程圖,N-S圖,偽代碼等。程序中的基本結(jié)構(gòu)包括,順序結(jié)構(gòu),選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。

選擇結(jié)構(gòu)

#include<stdio.h>int main(){int tmp;scanf("%d",&tmp);if(tmp>60){printf("%s","及格了!");}else{printf("未及格!"); }return 0;
}//else總是與其上面一個(gè)if匹配//如果有多個(gè)選擇還可以用  else if (表達(dá)式) 繼續(xù)判斷#include<stdio.h>int main(){int tmp;scanf("%d",&tmp);if( tmp = 0 ||tmp<60){printf("%s","未及格!");}else if ( 60 <= tmp && tmp <80){printf("%s","良好!");} else if (  80<= tmp){printf("%s","優(yōu)秀!");}else printf("%s","未查到分?jǐn)?shù)!");return 0;
}

switch語(yǔ)句

int main(){int tmp;scanf("%d",&tmp);switch(tmp){case 60 : printf("未及格!"); case 80 :printf("%s","良好!");case 100 : printf("%s","優(yōu)秀!");default :  printf("%s","未查到分?jǐn)?shù)!");}
} 

switch括號(hào)的表達(dá)式只能時(shí)數(shù)值類型或者字符類型;當(dāng)表達(dá)式的值與某個(gè)case的值相等時(shí),就會(huì)執(zhí)行其后的語(yǔ)句,如果沒(méi)有匹配的就執(zhí)行default;每個(gè)表達(dá)式的值必須互不相同。執(zhí)行完一個(gè)case后,流程會(huì)轉(zhuǎn)到下一個(gè)case繼續(xù)繼續(xù)執(zhí)行,因此需要控制流程找到分支后退出,通過(guò)break語(yǔ)句·。

switch(tmp){case 60 : printf("未及格!"); break;case 80 :printf("%s","良好!"); break;case 100 : printf("%s","優(yōu)秀!"); break;default :  printf("%s","未查到分?jǐn)?shù)!");
}

循環(huán)結(jié)構(gòu)
循環(huán)結(jié)構(gòu)的條件:1、需要重復(fù)執(zhí)行的操作(循環(huán)體);2、循環(huán)結(jié)束條件。

while 表達(dá)式 語(yǔ)句

#include<stdio.h>
int main(){int i,range;i = 0; range =100;while (i<range){i++;range--;}printf("i=%d,range=%d",i,range);
}
do
循環(huán)體語(yǔ)句while(表達(dá)式)

循環(huán)體語(yǔ)句超過(guò)一個(gè)要用{}包裹,循環(huán)體中要有結(jié)束循環(huán)的條件。
第一個(gè)循環(huán)為先判斷表達(dá)式后執(zhí)行循環(huán)體;第二個(gè)為先執(zhí)行循環(huán)體再判斷表達(dá)式是否成立。相同點(diǎn)時(shí)表達(dá)式為真時(shí)均繼續(xù)執(zhí)行循環(huán)。

for循環(huán)

for(表達(dá)式1,表達(dá)式2,表達(dá)式3) 語(yǔ)句

for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)增量) 語(yǔ)句

#include<stdio.h>
int main(){int sum = 0;int i =0;for(i = 0;i<=100;i++){int tmp = i;sum+=i;	}printf("%d",sum);return 0;
}

break用于結(jié)束循環(huán),continue結(jié)束本次循環(huán)。
for循環(huán)的表達(dá)式都可以省略for(;;)

數(shù)組

數(shù)組是具有同一屬性的數(shù)據(jù)集合。在c語(yǔ)言中,定義數(shù)組時(shí),需要指定變量的類型,數(shù)組名稱和數(shù)組中包含多少個(gè)元素。
定義數(shù)組的格式:

類型 數(shù)組名[常量表達(dá)式]

定義數(shù)組時(shí),需要指定數(shù)組元素的個(gè)數(shù),括號(hào)中表達(dá)式表示元素的個(gè)數(shù),即數(shù)組的長(zhǎng)度;數(shù)組的大小不依賴于運(yùn)行程序的變量;數(shù)組的元素只能變遍歷;通過(guò)數(shù)組的下標(biāo)取出數(shù)組的元素。

數(shù)組也可以初始化定義,再初始化定義時(shí)如何長(zhǎng)度和初始化長(zhǎng)度一致

//冒泡算法#include<stdio.h>int main(){int a[10] = {10,9,8,7,6,5,4,3,2,1};int i,j,t;for(i=0;i<=9;i++){for(j = 0; j<9-i;j++){if(a[j]>a[j+1]){t = a[j];a[j] = a[j+1];a[j+1] =t;}}}int z;for(z=0;z<10;z++){printf("%d",a[z]);}
}

二維數(shù)組

二維數(shù)組中元素的排序順序是按行存放的,即在內(nèi)存中存放第一行的元素在存放第二行元素。

定義二維數(shù)組

數(shù)組名 [下標(biāo)] [下標(biāo)]初始化定義
a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};   //完整賦值
a[1][2] = {1,2,3,4};     //順序賦值
a[3][4] = {{1},{2},{3}}   //部分賦值

字符串

c語(yǔ)言中字符數(shù)組表示字符串,字符數(shù)組和一個(gè)字符串的區(qū)別在于字符串以\0結(jié)尾。這個(gè)字符串的結(jié)束符編譯器會(huì)自動(dòng)加上,無(wú)需認(rèn)為處理。

字符數(shù)組也可以直接通過(guò)%s直接輸出。

#include<stdio.h>
int main(){char a[10] = {'C','h','i','n','a'};int i;for(i=0;i<10;i++){printf("%c",a[i]);}printf("\n");printf("%s\n",a); printf("%s","China");
}

在這里插入圖片描述

字符數(shù)組逐個(gè)字符輸出用%c,將整個(gè)字符串統(tǒng)一輸出用格式符%s

對(duì)于數(shù)值型數(shù)組,未賦值部分元素默認(rèn)值未0,對(duì)于字符數(shù)組未賦值元素默認(rèn)值為空字符。

注意:

  1. 在使用字符串輸入輸出時(shí),輸出字符不包括\0
  2. %s輸出字符串時(shí),變量時(shí)數(shù)組名而不是元素名;
  3. 如果數(shù)組長(zhǎng)度大于字符串實(shí)際長(zhǎng)度,也只輸出到\0
  4. scanf方法可以輸入一個(gè)字符串,輸入字符長(zhǎng)度需小于字符數(shù)組長(zhǎng)度,且輸入項(xiàng)變量不用加地址符,因?yàn)閿?shù)組名就表示數(shù)組起始地址。
  5. printf("%d",a)a為數(shù)組,表示輸出數(shù)組的起始地址。

字符串函數(shù)

引入頭文件#include<string.h>

函數(shù)名描述
gets(字符數(shù)組)終端輸入一個(gè)字符串到字符數(shù)組
pust(字符數(shù)組)將一個(gè)字符串輸出到終端
strcat(字符數(shù)組1,字符數(shù)組2)連接兩個(gè)字符數(shù)組
strcpy(字符數(shù)組1,字符數(shù)組2)復(fù)制字符數(shù)組
strcmp(字符數(shù)組1,字符數(shù)組2)比較兩個(gè)字符數(shù)組
strlwr(字符串)將字符數(shù)組換成小寫字母
strupr(字符串)將字符數(shù)組換成大寫字母

模塊化程序設(shè)計(jì)

在程序設(shè)計(jì)中隨著代碼量的不斷增加,單個(gè)文件的的結(jié)構(gòu)已不滿足需要,因此需要將代碼分塊,與主業(yè)務(wù)無(wú)關(guān)的代碼分散到其他文件中,就是模塊化編程。

在之前已經(jīng)介紹了對(duì)于工具方法,或者與業(yè)務(wù)無(wú)關(guān)的方法,聲明為.h的文件,通過(guò)#include "路徑地址"引入到主文件中。

在c語(yǔ)言中基礎(chǔ)模塊時(shí)函數(shù),則不同的模塊就是將若干函數(shù)分模塊。

#include<stdio.h>
#include<string.h>void main(){//函數(shù)定義在調(diào)用之后,需要在調(diào)用之前聲明函數(shù) void showName(char a[15]);void conStr(char a[10],char b[10]); printf("%s\n","Hello World");char str1[10] = {'i','a','m','h','e','l','l','o'};showName(str1);char str2 = {'m','e','e','t','i','n','g'};conStr(&str1,&str2);
}//同文件函數(shù)的分塊void showName(char a[15]){printf("%s\n",a);
}void conStr(char a[10],char b[10]){printf("%s%s\n",a,b);
}

一個(gè)c程序可以由一個(gè)或者多個(gè)程序模塊組成,每一個(gè)模塊作為一個(gè)源程序文件;對(duì)于較大的程序,不將內(nèi)容完全放在一盒源程序文件中,而是放在多個(gè)若干文件中,由多個(gè)源程序文件組成一個(gè)完整的c程序。

C語(yǔ)言程序都是以main()函數(shù)開始執(zhí)行,在mian函數(shù)調(diào)用其他函數(shù)完畢后再回到main函數(shù)。

所有函數(shù)都是平行的,函數(shù)的執(zhí)行順序取決于mian函數(shù)的調(diào)用順序,函數(shù)不能嵌套定義但卻可以嵌套調(diào)用。

函數(shù)可以分為三種:庫(kù)函數(shù),即系統(tǒng)自帶函數(shù),在編譯環(huán)境中,通過(guò)#include<模塊名>引入,之后就可以通過(guò)方法名引用。

函數(shù)

在c語(yǔ)言中,函數(shù)是程序的基本單位,函數(shù)必須先定義再調(diào)用,函數(shù)應(yīng)包含:函數(shù)名,函數(shù)值類型,函數(shù)的參數(shù)名稱和類型,函數(shù)需要完成什么任務(wù)。

函數(shù)定義

類型名 函數(shù)名(){函數(shù)體
}

函數(shù)值通過(guò)return關(guān)鍵字返回。

函數(shù)調(diào)用

函數(shù)名()無(wú)參數(shù)調(diào)用

函數(shù)名(實(shí)參列表)有參數(shù)的調(diào)用,順序?qū)?yīng)。

注意事項(xiàng)

  1. 函數(shù)定義在函數(shù)調(diào)用之后時(shí),需要在調(diào)用前聲明,聲明即把除函數(shù)體的部分在使用前表示即可。(函數(shù)定義在調(diào)用之前可以不用聲明)
  2. 定義函數(shù)的形參,在使用前并未分配內(nèi)存,在調(diào)用函數(shù)時(shí)將實(shí)參傳遞給形參。
  3. 通過(guò)return關(guān)鍵字將函數(shù)體得到的值返回給函數(shù),并在調(diào)用處使用。
  4. 調(diào)用結(jié)束后,形參內(nèi)存單元被釋放。
  5. c語(yǔ)言的實(shí)參傳遞數(shù)據(jù)的過(guò)程時(shí)值傳遞。

函數(shù)聲明需要滿足,(1)函數(shù)必須是以定義了的函數(shù),(2)庫(kù)函數(shù)為需要通過(guò)#include<模塊名>引入,且?guī)旌瘮?shù)在預(yù)編譯過(guò)程加載,無(wú)需聲明。自定義函數(shù)需要映入加聲明。

編譯系統(tǒng)并不檢查參數(shù)名,只檢查參數(shù)類型,因此參數(shù)名并不強(qiáng)制,在聲明函數(shù)是可以只聲明函數(shù)類型即可。

函數(shù)類型 函數(shù)名(參數(shù)類型1 參數(shù)名1,參數(shù)類型2 參數(shù)名2 ....);
函數(shù)類型 函數(shù)名 (參數(shù)類型1,參數(shù)類型2);

函數(shù)定義可以函數(shù)聲明區(qū)別在于函數(shù)定義是對(duì)函數(shù)類型,參數(shù)和功能的定義,是一個(gè)完整,獨(dú)立的函數(shù)單位;而函數(shù)聲明只是將定義的函數(shù)名,參數(shù)類型等定義時(shí)函數(shù)的一些信息(不包含函數(shù)體)通知編譯器。

函數(shù)的遞歸調(diào)用

在定義一個(gè)函數(shù)時(shí),直接或間接調(diào)用函數(shù)本身稱為函數(shù)的遞歸調(diào)用。

例如,第3個(gè)孩子比第2個(gè)孩子大2歲,第2個(gè)孩子比第一個(gè)孩子大2歲,第一個(gè)孩子5歲,問(wèn)第三個(gè)孩子幾歲?該問(wèn)題就是一個(gè)遞歸問(wèn)題。

解決上述問(wèn)題必須具備兩個(gè)條件,遞推的條件(大2歲)和結(jié)束條件(第一個(gè)孩子5歲),根據(jù)推理:

f(3)=f(2)+2f(3) = f(2) + 2 f(3)=f(2)+2

f(2)=f(1)+2f(2) = f(1) + 2 f(2)=f(1)+2
f(1)=5f(1) = 5 f(1)=5

#include<stdio.h>void main(){int age(int x);int c;c = age(3);printf("%d",c);
}int age(int x){if(x == 1){return 5;}else{return age(x-1) + 2;}}

在這里插入圖片描述
這里的思路是,首先對(duì)于任意變量,都取決于其前一個(gè)變量的值,在age函數(shù)中,結(jié)束條件是1,當(dāng)不滿足時(shí)直接返回前一個(gè)函數(shù)age(x-1)+2,以此地推,那么函數(shù)未到達(dá)結(jié)束條件時(shí)的返回值因該是:

age(x)+age(x-1)+2+age(x-2)+2....+age(1)

而有結(jié)束條件age(1) =5,那么xi-1=1的變量就可以計(jì)算出來(lái)了,之后其他函數(shù)一次調(diào)用直至到x變量。

使用遞歸函數(shù)處理問(wèn)題的關(guān)鍵在于:1.子規(guī)模比原問(wèn)題的規(guī)模小,且規(guī)模是有規(guī)律的;2.必須要有遞歸的結(jié)束條件。

數(shù)組作為參數(shù)
用數(shù)組元素作為實(shí)參可以向形參傳遞一個(gè)數(shù)組元素的值,有時(shí)需要在函數(shù)中處理整個(gè)數(shù)組元素,可以用數(shù)組名作為函數(shù)的實(shí)參。和Java等語(yǔ)言不同的是,C中數(shù)組名代表的是數(shù)組的首地址,所以在數(shù)組名做實(shí)參時(shí)只是將首地址傳遞了。

因此在數(shù)組名做函數(shù)參數(shù)時(shí),需要另外開辟一個(gè)存放形參的空間,這是和用變量作為函數(shù)參數(shù)時(shí)不一樣的,由于數(shù)組名代表數(shù)組的首地址,因此在傳遞時(shí)也只傳遞了數(shù)組的首地址,在形參內(nèi)部需要存儲(chǔ)首地址的數(shù)組變量,由于變量和形參具有同樣的數(shù)組首地址,所以它們占用同一存儲(chǔ)空間,即它們的值也是相等的。(數(shù)組名作為新參時(shí)編譯器不會(huì)檢測(cè)數(shù)組長(zhǎng)度因此不必指定長(zhǎng)度。具體長(zhǎng)度由實(shí)參數(shù)組長(zhǎng)度決定)

#include<stdio.h>
int main(){int c;int a[10]={1,2,3,4,5,6,7,8,9,10};c = sum(a);printf("%d",c);
}int sum(int xxx[]){int sum,i;sum =0; for(i=0;i<10;i++){sum = sum+xxx[i];}return sum;
}

在上述代碼中,sum函數(shù)的形參為一個(gè)數(shù)組類型變量,調(diào)用時(shí)傳遞了a數(shù)組,數(shù)組做形參時(shí)并不分配內(nèi)存空間,其具體的值由傳入的實(shí)參決定,在參傳遞時(shí),xxx接收了a數(shù)組的首地址,由于它們共用一個(gè)首地址則可以看作數(shù)組名的傳遞傳遞的數(shù)組的地址為引用傳遞。xxx和a指向同一數(shù)組地址。

數(shù)組名代表數(shù)組的首地址,在作為參數(shù)傳遞時(shí),傳遞的時(shí)數(shù)組地址,為引用傳遞。

變量的作用域、存儲(chǔ)方式和生命周期

定義在函數(shù)內(nèi)部或者作為形參的時(shí)局部變量,用完即銷毀,定義在主函數(shù)或者通過(guò)#define定義的變量為全局變量。

如果需要定義局部變量且在函數(shù)調(diào)用結(jié)束后不消失保留原值,的需要定義靜態(tài)變量用關(guān)鍵字static。

  • auto
    函數(shù)中的形參和內(nèi)部的局部變量都是此類,函數(shù)在被調(diào)用時(shí)分配空間,調(diào)用結(jié)束釋放空間,該局部變量也叫自動(dòng)變量。關(guān)鍵字auto可以省略。

+static
static關(guān)鍵字聲明變量為靜態(tài)變量會(huì)自動(dòng)保存上一次調(diào)用返回的值。

  • register
    register聲明寄存器變量,對(duì)寄存器變量的取用速度遠(yuǎn)高于內(nèi)存存取變量的速度,提高執(zhí)行效率,該變量也叫寄存器變量。

  • extern
    extern關(guān)鍵字聲明外部變量的作用域,在一個(gè)文件內(nèi)擴(kuò)展外部變量作用域,將外部變量的作用域擴(kuò)展到其他文件。

訪問(wèn)權(quán)限控制

extern函數(shù)聲明外部函數(shù),關(guān)鍵字可以省略,static聲明內(nèi)部和那護(hù)士只能在同一源文件使用。

指針變量

一個(gè)變量包含兩個(gè)部分,變量地址和變量的值。c語(yǔ)言中將地址形象化稱為指針,通過(guò)指針能快速找到以它為地址的內(nèi)存單元。引入指針后處理直接訪問(wèn)變量的值外也可以通過(guò)地址間接訪問(wèn)變量的值。

指針是C語(yǔ)言的一種特殊變量,用于存放變量的地址。一個(gè)變量的地址稱為該變量的指針,用來(lái)存放地址的變量稱為指針變量。

指針的定義*

指針通過(guò)*定義,具體表達(dá)式為類型 * 指針變量;指針指向的是變量的地址,因此需要將變量的地址賦給指針變量。

int *p;
int a= 10;
p = &a;
printf("%d",p);

定義指針變量需要注意的是*表示該變量是一個(gè)指針變量,區(qū)別于其他基變量類型;定義指針時(shí)必須指定基類型,原因時(shí)不同類型的變量的地址所占的內(nèi)存空間不一樣;賦值給指針變量的是地址而不是數(shù)據(jù)即用&取地址,指針變量只能取地址。

定義指針變量時(shí)*表聲明類型為指針變量,如 int * p;指針變量是p而不是*p。p = &a;

指針變量的引用

定義指針變量的關(guān)鍵字是*,除了在定義是起聲明作用外,*在也可以引用指針變量作取值和賦值使用。

*在定義指針變量時(shí)起聲明作用,在引用指針變量時(shí)起取指針變量指向內(nèi)存地址的數(shù)據(jù)的作用。

&為取地址符號(hào)&a表示取a變量的地址;*為指針運(yùn)算符,*p為指針變量p指向的對(duì)象的值。

#include<stdio.h>int main(){int a = 10;int *p;p=&a;printf("變量的值%d\n",*p);printf("指針初始地址%d\n",p);*p = 100;printf("修改后的值%d\n",*p);printf("賦值后指針地址%d\n",p);}

指針變量做函數(shù)參數(shù)

指針變量做函數(shù)參數(shù)是時(shí)是將變量的地址傳輸?shù)搅硪粋€(gè)函數(shù)中,但是不能通過(guò)形參的指針指向改變實(shí)參的指針指向,只是錯(cuò)誤的。

#include<stdio.h>int main(){int a = 10;int *p;p=&a;printf("變量的值%d\n",*p);printf("指針初始地址%d\n",p);*p = 100;printf("修改后的值%d\n",*p);printf("賦值后指針地址%d\n",p);int a1 = 10;int a2 = 100;printf("交換前%d,%d\n",a1,a2);swap(&a1,&a2);printf("swap交換%d,%d\n",a1,a2); swap1(&a1,&a2);printf("swap1交換%d,%d\n",a1,a2); }int swap(int *p1,int *p2){int tmp;tmp = *p1;*p1 = *p2;*p2 = tmp;
} int swap1(int *p1,int *p2){int *tmp;tmp = p1;p1 = p2;p2 = tmp;
} 

在這里插入圖片描述
在上述程序中,swap函數(shù)傳遞兩個(gè)變量的地址,在函數(shù)體中通過(guò)*取出指針變量指向的值來(lái)交換數(shù)據(jù),這個(gè)原理和下面的原理時(shí)一致的:

void swap3(int a,int b){int tmp;tmp =a;a = b;b = tmp;
}

但是swap2,企圖修改指針指向的地址即通過(guò)交換兩個(gè)指針變量的地址來(lái)間接改變變量的值,這是錯(cuò)誤的,因?yàn)椴荒芡ㄟ^(guò)形參來(lái)改變實(shí)參的值。(c語(yǔ)言形參的傳遞都是值傳遞,對(duì)實(shí)參復(fù)制一份相同的數(shù)據(jù)分配空間)

指針引用數(shù)組

一個(gè)數(shù)組包含若干元素,在C語(yǔ)言中數(shù)組的地址即數(shù)組首個(gè)元素的地址,c語(yǔ)言底層實(shí)現(xiàn)了數(shù)組的查找,取值的操作,因此只需要記錄數(shù)組的首地址即可,編輯器就可以通過(guò)特定算法計(jì)算其后元素的地址。

int array[] = {1,2,3,4,5};
printf("數(shù)組array的地址為%d\n",array);printf("數(shù)組array[1]的地址為%d\n",&array[0]);

在這里插入圖片描述

系統(tǒng)知道數(shù)組首地址后可以自動(dòng)計(jì)算其余元素的地址,因此指針變量在操作數(shù)組時(shí)也只需要記錄數(shù)組的首地址即可。

C語(yǔ)言中數(shù)組的指針就是數(shù)值首地址。

int *p = &array[0];printf("%d\n",p); 

由于p指針變量表示&array[0]*p = array[0],p = &array[0],于是得出結(jié)論,指針變量是數(shù)組首元素的地址,在數(shù)組中每個(gè)元素同時(shí)同一類型,因此占據(jù)的內(nèi)存空間一致,那么p+1就是array[1]的地址,一次類推。

當(dāng)使用指針表示數(shù)組是,指針變量表示數(shù)組的首地址,指針變量的累加表示地址塊的累加,依次表示數(shù)組其他元素的地址。

指針運(yùn)算

上述操作中,涉及到指針運(yùn)算,指針運(yùn)算并不是邏輯上的將地址的值加一,而是將數(shù)組元素所占的地址加一個(gè)字節(jié),如一個(gè)int占4字節(jié),指針加一指針?biāo)純?nèi)存空間就加4個(gè)字節(jié)。

指針表示字符數(shù)組

用字符數(shù)組存放一個(gè)字符串,然后用數(shù)組下標(biāo)可以訪問(wèn)數(shù)組元素,也可以通過(guò)%s直接輸出真?zhèn)€字符數(shù)組。

也可以同指針指向一個(gè)字符串,相對(duì)于字符數(shù)組更簡(jiǎn)單,通過(guò)指針指向字符串,又編譯系統(tǒng)自動(dòng)分配內(nèi)存大小。

指針表示字符串時(shí)也是將字符串當(dāng)作字符數(shù)組初始,由底層實(shí)現(xiàn),只能初始化賦值。

//定義格式
char *str = "xiaoxu";//錯(cuò)誤定義
char *str;
str = "xiaoxu";char *str;
*str = "xiaoxu";

下面兩個(gè)定義都是錯(cuò)誤的,字符串底層是用字符數(shù)組,指針只能表示一個(gè)字符變量的地址,因此下面兩個(gè)定義都是錯(cuò)誤的。底層實(shí)現(xiàn)的方式比一樣,只能初始化定義。

指向函數(shù)的指針

指針也可以指向函數(shù),稱為函數(shù)指針。

指針在指向函數(shù)時(shí)需要聲明數(shù)據(jù)類型 (*指針變量名) (參數(shù)列表),然后再將指針變量指向函數(shù)名。就可以實(shí)現(xiàn)指針對(duì)函數(shù)的引用了。

//定義函數(shù)
int max(int a,int b){return a+b;
}
//指針聲明
int (*p) (int,int);
p = max;//指針引用函數(shù)
int c;
c= (*p)(2,1);
printf("%d",c);

指針數(shù)組

如果數(shù)組的元素全是指針類型變量,則稱為指針數(shù)組,指針數(shù)組的每一個(gè)元素都存放一個(gè)地址,相當(dāng)于指針變量。

如果變量為數(shù)組指針,那么對(duì)元素的引用就是多重指針**p。

結(jié)構(gòu)體

結(jié)構(gòu)體

c語(yǔ)言中提供的基類型有時(shí)后并不能滿足需求,于是提供了用戶自定義的數(shù)據(jù)類型結(jié)構(gòu)體。

結(jié)構(gòu)體定義:

struct student{數(shù)據(jù)類型 變量;...
};

結(jié)構(gòu)體由strcut關(guān)鍵字定義,其后緊跟結(jié)構(gòu)體的自定義名稱,成員變量為類型和變量名,基于基本類型。成員變量也可以是結(jié)構(gòu)體變量。

結(jié)構(gòu)體定義時(shí)也可以同時(shí)實(shí)例化,在定義結(jié)束的分號(hào)后追加變量名用,隔開即可。

//結(jié)構(gòu)體定義
struct Student{char name[20];char sex;int age;
};//結(jié)構(gòu)體初始化定義
struct Student{char name[20];char sex;int age;
} Stu,Stu1;struct Student{char name[20];char sex;int age;
} Stu={"xiaoxu",'m',21};

對(duì)結(jié)構(gòu)體變量的引用方式為結(jié)構(gòu)體變量.成員名。通過(guò).可以獲取結(jié)構(gòu)體變量的各個(gè)成員的值,如果成員變量也是結(jié)構(gòu)體,就需要一級(jí)一級(jí)查找。

結(jié)構(gòu)體類型也可以通過(guò)聲明的方式定義但是要加上struct關(guān)鍵字,除了聲明式定義外,也可以初始化定義,就像上面代碼一樣。

#include<stdio.h>//初始化結(jié)構(gòu)體變量定義
struct Student{char name[20];char sex;int age;
} Stu={"xiaoxu",'m',21};int main(){printf("%s",Stu);///聲明式結(jié)構(gòu)體變量定義struct Student stu2 = {"zhansan",'m',21} ;printf("%s",stu2.name);
}

結(jié)構(gòu)體數(shù)組

結(jié)構(gòu)體變量也可以作為數(shù)組的元素,數(shù)組元素全是結(jié)構(gòu)體變量的數(shù)組稱為結(jié)構(gòu)體數(shù)組。

結(jié)構(gòu)體數(shù)組的定義步驟:

//1、定義結(jié)構(gòu)體
struct Goods{char name[20];float size;
};//2、聲明并初始化結(jié)構(gòu)體數(shù)組(也可以先聲明后初始化)
struct Goods god1[5] ={{"mianbao",0.12}
};

結(jié)構(gòu)體指針

結(jié)構(gòu)體指針就是將指針變量指向結(jié)構(gòu)體的地址。

//定義結(jié)構(gòu)體
struct Student{char name[20];char sex;int age;
};//聲明初始化結(jié)構(gòu)體
struct Student stu3={"lisi",'m',21
}; 
//定義結(jié)構(gòu)體指針變量
struct Student *p;
p = &stu3;
printf("%s\n",(*p).name);

c中.的優(yōu)先級(jí)要高于*因此*p需要用括號(hào)括起來(lái)。

在結(jié)構(gòu)體指針中,為了簡(jiǎn)化(*指針變量).結(jié)構(gòu)體成員的書寫,c語(yǔ)言提供了->符號(hào)表示取值符號(hào)用來(lái)代替*.簡(jiǎn)化編寫。

(*p).name=p->name

所以指向結(jié)構(gòu)體的指針變量也可以用通過(guò)->指向結(jié)構(gòu)體成員,也可以指向結(jié)構(gòu)體數(shù)組的元素。

結(jié)構(gòu)體變量和結(jié)構(gòu)體指針做參數(shù)

將結(jié)構(gòu)體變量作為參數(shù)時(shí),可以傳遞成員變量個(gè)數(shù)個(gè)數(shù)據(jù),傳遞的過(guò)程為值傳遞,將結(jié)構(gòu)體變量的內(nèi)存空間的所有內(nèi)容全部傳遞給形參。也可以使用結(jié)構(gòu)體指針作為參數(shù)傳遞。

//結(jié)構(gòu)體做參數(shù)
toString(struct Student stu){printf("Student{name=%s,sex=%c,age=%.2f}",stu.name,stu.sex,stu.age);
}//結(jié)構(gòu)體初始化 
struct Student{char name[20];char sex;int age;
} Stu={"xiaoxu",'m',21},stu100;//聲明結(jié)構(gòu)體
struct Student stu3={"lisi",'m',21
}; //調(diào)用方法傳遞結(jié)構(gòu)體變量
toString(stu3); 
//定義結(jié)構(gòu)體指針//聲明結(jié)構(gòu)體
struct Student stu3={"lisi",'m',21
}; //結(jié)構(gòu)體指針做參數(shù)
pointerString(struct Student *stu){printf("Student{name=%s,sex=%c,age=%d}\n",stu->name,stu->sex,stu->age);
}//定義指針變量
struct Student *p;
p = &stu3;
printf("%s\n",(*p).name);
pointerString(p);

枚舉

當(dāng)變量的種類確定,只有若干幾個(gè)可能的值時(shí),可以定義為,枚舉,枚舉就是將變量的值一一列舉出來(lái),變量的值只限于列舉出來(lái)的值的范圍內(nèi)。

枚舉類型用enum關(guān)鍵字enum week(sum,mon,tue,wed,thu,fri,sat);內(nèi)部的元素被稱為枚舉變量或枚舉常量。

#include<stdio.h>int main(){enum week{sum,mon,tue,wed,thu,fri,sat};enum week day = mon;switch(day){case sum:printf("sum");break;case mon:printf("mon");break;case tue:printf("tue");break;case wed:printf("wed");break;case thu:printf("thu");break;case fri:printf("fri");break;case sat:printf("sat");break;default : printf("null");}
}

文件操作

文件名C:\Users\xwh\Desktop\master\test.txt

文件類型ASCII二進(jìn)制文件,ascii碼用于存儲(chǔ)字符型數(shù)據(jù),文件后綴為txt。

文件指針

每個(gè)被使用的文件都在內(nèi)存中開辟了文件信息區(qū),用于存放文件相關(guān)信息,文件有關(guān)的類型和方法都在stdio.h的頭文件中。

文件名類型為FILE類型,對(duì)文件讀寫需要先打開文件,讀寫完畢要關(guān)閉文件。打開關(guān)閉文件的方法是fopen(文件名,使用文件的方式)fclose(文件指針)表示關(guān)閉文件。

使用文件的方式描述
rASCII文件只讀
wASCII文件只寫
aASCII文件追加
rb二進(jìn)制文件只讀
wb二進(jìn)制文件只寫
ab二進(jìn)制文件追加
r+ascii碼文件讀寫

"r","w","a是最基本的三種方式,在其后面加”b"表示對(duì)二進(jìn)制文件,不加為ASCII文件即txt文件。"+"表示即可讀又可寫。

一般不對(duì)FILE類型的變量命名,而是通過(guò)FILE指針來(lái)操作文件。

文件讀寫

對(duì)文件讀寫的函數(shù)如下:

函數(shù)描述
fgetc(文件指針)從該文件讀取一個(gè)字符
fputc(文件指針)寫一個(gè)字符到文件
fgets(str,n,fp)從文件fp中讀取一個(gè)長(zhǎng)度為(n-1)的字符串,存到字符數(shù)組str中
fputs(ch,fp)把字符寫道文件fp中
fprintf(文件指針,格式化字符,輸出列表)格式化輸出(字符)
fscanf(文件指針,格式化字符串,輸出列表)格式化寫入(字符)
fread(buffer,size,count,fp)buffer是二進(jìn)制地址,size是二進(jìn)制字節(jié)數(shù),count是要寫多少個(gè)字節(jié),fp文件指針
fwrite(buffer,size,count,fp)同上

讀寫文件時(shí)可以在文件的任何位置寫入數(shù)據(jù),也可以在任何讀取數(shù)據(jù)。c提供了fseek函數(shù)標(biāo)記文件的位置,就可光標(biāo)一樣的功能。

fseek(文件指針,位移量,起始點(diǎn))

文件是外部介質(zhì)上數(shù)據(jù)的集合,操作系統(tǒng)把所有輸入輸出數(shù)據(jù)作為文件來(lái)管理。每個(gè)文件都必須要又文件路徑,文件主干和后綴。c語(yǔ)言中常用文件指針來(lái)操作文件。

在這里插入圖片描述

http://www.risenshineclean.com/news/48797.html

相關(guān)文章:

  • 網(wǎng)站開通后百度廣告收費(fèi)
  • 固始做網(wǎng)站網(wǎng)絡(luò)銷售哪個(gè)平臺(tái)最好
  • 幼兒園50個(gè)主題網(wǎng)絡(luò)圖關(guān)鍵詞優(yōu)化的作用
  • 張家港安監(jiān)站網(wǎng)址應(yīng)用商店下載
  • 網(wǎng)站空間有什么用外貿(mào)網(wǎng)站營(yíng)銷推廣
  • 外貿(mào)網(wǎng)站建設(shè)步驟網(wǎng)店?duì)I銷
  • 動(dòng)漫制作專業(yè)可以專升本嗎上海有哪些優(yōu)化網(wǎng)站推廣公司
  • 瀘州網(wǎng)站開發(fā)公司襄陽(yáng)百度開戶
  • 娛樂(lè)手機(jī)網(wǎng)站開發(fā)優(yōu)化大師破解版app
  • 個(gè)人做網(wǎng)站的流程中國(guó)網(wǎng)絡(luò)優(yōu)化公司排名
  • 機(jī)械網(wǎng)站推廣怎么做公眾號(hào)軟文素材
  • 怎么做企業(yè)招聘網(wǎng)站希愛(ài)力的作用與功效
  • 濟(jì)南做網(wǎng)站推廣哪家好網(wǎng)銷是做什么的
  • 優(yōu)秀排版設(shè)計(jì)網(wǎng)站聊城網(wǎng)站開發(fā)
  • 邢臺(tái)做移動(dòng)網(wǎng)站費(fèi)用國(guó)內(nèi)新聞最新
  • 做酸菜視頻網(wǎng)站今日頭條國(guó)際新聞
  • 什么是網(wǎng)絡(luò)營(yíng)銷?網(wǎng)絡(luò)營(yíng)銷的特點(diǎn)有哪些?昆明seo關(guān)鍵詞
  • 做公司網(wǎng)站需要準(zhǔn)備什么開魯網(wǎng)站seo不用下載
  • 北京市昌平建設(shè)工程招標(biāo)網(wǎng)站世界杯比分查詢
  • 做ppt哪個(gè)網(wǎng)站好nba今日數(shù)據(jù)
  • 建設(shè)一個(gè)視頻網(wǎng)站友鏈提交入口
  • 移動(dòng)互聯(lián)網(wǎng)網(wǎng)站建設(shè)廣告宣傳費(fèi)用一般多少
  • 鞋子 東莞網(wǎng)站建設(shè)營(yíng)銷軟件代理推廣
  • 網(wǎng)站的制作優(yōu)化網(wǎng)站收費(fèi)標(biāo)準(zhǔn)
  • 青浦網(wǎng)絡(luò)公司網(wǎng)站官方推廣平臺(tái)
  • 皇崗網(wǎng)站建設(shè)成都自然排名優(yōu)化
  • 備案 手機(jī)網(wǎng)站專門做推廣的軟文
  • 專業(yè)做網(wǎng)站設(shè)計(jì)公司價(jià)格新網(wǎng)站如何推廣
  • 網(wǎng)站優(yōu)化主要工作有那些內(nèi)容的磁力搜索引擎
  • 網(wǎng)站底部怎么做需要放些什么獨(dú)立站建站需要多少錢