【C語(yǔ)言基礎(chǔ)】基礎(chǔ)知識(shí)、循環(huán)、數(shù)組、函數(shù)-創(chuàng)新互聯(lián)

文章目錄
  • 一、基礎(chǔ)知識(shí)
    • 1 數(shù)據(jù)類(lèi)型
    • 2 常量
    • 3 變量
    • 4 整型數(shù)據(jù)
      • 4.1 符號(hào)常量
      • 4.2 整型變量
    • 5 浮點(diǎn)型數(shù)據(jù)
    • 6 字符型數(shù)據(jù)
    • 7 字符串型常量
    • 8 printf()函數(shù)
      • 8.1 混合運(yùn)算
      • 8.2 printf函數(shù)
    • 9 scanf()函數(shù)
  • 二、運(yùn)算符和表達(dá)式
    • 1 算術(shù)運(yùn)算符
    • 2 關(guān)系運(yùn)算符
    • 3 邏輯運(yùn)算符
    • 4 賦值運(yùn)算符
    • 5 求字節(jié)運(yùn)算符
    • 6 運(yùn)算符優(yōu)先級(jí)
  • 三、選擇、循環(huán)
    • 1 if-else
    • 2 while循環(huán)
    • 3 for循環(huán)
    • 4 continue語(yǔ)句
    • 5 break語(yǔ)句
  • 三、數(shù)組
    • 1 一維數(shù)組
    • 2 數(shù)組訪問(wèn)越界
    • 3 數(shù)組傳遞
    • 4 字符數(shù)組
    • 5 一些字符函數(shù)(str函數(shù))
    • 6 二維數(shù)組
  • 四、函數(shù)
    • 1 聲明與定義
    • 2 分類(lèi)與調(diào)用
    • 3 遞歸調(diào)用
    • 4 變量和參數(shù)
      • 4.1 全局變量、局部變量
      • 4.2 實(shí)參和形參

創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的懷化網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!一、基礎(chǔ)知識(shí) 1 數(shù)據(jù)類(lèi)型

請(qǐng)?zhí)砑訄D片描述
一些關(guān)鍵字
請(qǐng)?zhí)砑訄D片描述

2 常量

常量:程序運(yùn)行時(shí)不會(huì)變化的量,包括整型、實(shí)型、字符和字符串型。
請(qǐng)?zhí)砑訄D片描述

3 變量

變量:與常量相對(duì),程序運(yùn)行時(shí)可以變化的量。
變量名以一個(gè)名字代表一個(gè)對(duì)應(yīng)的存儲(chǔ)單元地址。請(qǐng)?zhí)砑訄D片描述

4 整型數(shù)據(jù) 4.1 符號(hào)常量
#define PI 3.14
//表示程序內(nèi)出現(xiàn)的PI都為3.14

請(qǐng)?zhí)砑訄D片描述

4.2 整型變量
int i;
//利用int定義一個(gè)變量即為整型變量
5 浮點(diǎn)型數(shù)據(jù)

e代表10的冪次 eg:300e-3 即為 0.300
請(qǐng)?zhí)砑訄D片描述

//3. 浮點(diǎn)型
		//浮點(diǎn)常量(包括小數(shù)和指數(shù))
		//b = 300e-3;  //e的用法,e代表10的冪次
		//浮點(diǎn)變量
      float b;
		printf("b = %f\n", b);
		printf("b_size = %d\n", sizeof(b));//float占用4個(gè)字節(jié)
6 字符型數(shù)據(jù)

請(qǐng)?zhí)砑訄D片描述
請(qǐng)?zhí)砑訄D片描述

請(qǐng)?zhí)砑訄D片描述

ASCII碼表
請(qǐng)?zhí)砑訄D片描述

//4. 字符型常量
		// 以“\”開(kāi)頭表示轉(zhuǎn)義字符
		// 'A'字符常量以單引號(hào)括起來(lái)
		// 
	//5. 字符串型常量以雙引號(hào)括起來(lái)
		//"helloworld"


	//ASCII碼
		//一個(gè)字符型常量占用1字節(jié)大小的空間
		//輸出 %c 時(shí)輸出字符,若是 %d 輸出數(shù)字
		char c = 'A';
		printf("c+32 = %c\n", c + 32);
		printf("%d\n", c+32);
7 字符串型常量

請(qǐng)?zhí)砑訄D片描述

8 printf()函數(shù)

printf()為輸出函數(shù)。

8.1 混合運(yùn)算

強(qiáng)制類(lèi)型轉(zhuǎn)換

//強(qiáng)制類(lèi)型轉(zhuǎn)換
		int i = 5;
		int j = i / 2;
		//float k = i / 2;//若這樣寫(xiě)輸出的是2.00000
		//要想輸出2.5
		float k = float(i) / 2;
		printf("j=%d\n", j);
		printf("j=%.1f\n", k);
8.2 printf函數(shù)

原理是printf先把輸出的數(shù)據(jù)轉(zhuǎn)化為字符串,再放入標(biāo)準(zhǔn)緩沖區(qū),再輸出結(jié)果。
語(yǔ)法:請(qǐng)?zhí)砑訄D片描述
請(qǐng)?zhí)砑訄D片描述

printf默認(rèn)右對(duì)齊,%5d說(shuō)明輸出五位字符且右對(duì)齊輸出,%-5d就是左對(duì)齊

//printf函數(shù)
		int age = 20;
		printf("Hello %s,you are %d\n", "Bob", age);
		//printf()函數(shù)中所有的輸出都是右對(duì)齊,左對(duì)齊要設(shè)置
		int aa = 2021, bb = 2022;
		printf("right_output %5d\nleft__output %-5d\n", aa, bb);
		float score = 99.9;
		printf("score=%5.2f\n", score);
9 scanf()函數(shù)

通過(guò)函數(shù)庫(kù)讀取標(biāo)準(zhǔn)輸入,再通過(guò)對(duì)應(yīng)的函數(shù)將結(jié)果打印到屏幕上。
請(qǐng)?zhí)砑訄D片描述

//scanf函數(shù)  一定要取地址&&&&
		int ii = 10;
		char cc;
		//多種數(shù)據(jù)混合讀入,寫(xiě)在同一個(gè)scanf中,空格隔開(kāi)
		scanf("%d %c", &ii,&cc);
		//scanf("%d", &ii);//若輸入一個(gè)按回車(chē),則第二個(gè)因?yàn)槭?c就會(huì)讀取并輸出換行
		printf("%d\n", ii);

//fflush(stdin); //清空標(biāo)準(zhǔn)輸入緩沖區(qū)
//如果在這清空的話,第二個(gè)scanf是可以被阻塞的,因?yàn)榍蹇樟司彌_區(qū)的‘\n’,所以下一個(gè)scanf不會(huì)讀入

		//%c不會(huì)忽略任何內(nèi)容
		//這樣寫(xiě)第二個(gè)scanf會(huì)讀取上一個(gè)回車(chē)%c,如果是 %d 可以正常輸出
		//scanf("%c", &cc);
		printf("cc = %d\n", cc);

fflush(stdin);清空標(biāo)準(zhǔn)輸入緩沖區(qū)
請(qǐng)?zhí)砑訄D片描述

二、運(yùn)算符和表達(dá)式

單目運(yùn)算符:! 非,因?yàn)橹劣谝?![變量]
雙目運(yùn)算符:[左變量] 運(yùn)算符 [右變量]
三目運(yùn)算符:[條件] ? [結(jié)果1] : [結(jié)果2] 。?理解為條件是否成立,條件成立為結(jié)果1,否則為結(jié)果2。

1 算術(shù)運(yùn)算符

請(qǐng)?zhí)砑訄D片描述

//算術(shù)運(yùn)算符 + - * / %
	int result = 4 + 5 * 2 - 3 / 2 + 10 % 3;
	printf("result = %d\n", result);
2 關(guān)系運(yùn)算符

0表示假,1表示真

請(qǐng)?zhí)砑訄D片描述

//關(guān)系運(yùn)算符 >< == >=<= !=
	//關(guān)系運(yùn)算符優(yōu)先級(jí)小于算術(shù)運(yùn)算符
	int a;
	//若想停止while運(yùn)算輸入一個(gè)非整數(shù)即可,例如一個(gè)字符
	while (scanf("%d", &a)) {if (a >3 && a< 10) {	//如果寫(xiě) if(33 為真,為真時(shí)是1,為假時(shí)是0;
			//若輸入 -2 ,則 -2<3 為假,為假時(shí)是0,0小于10;
			printf("a在3~10之間\n");
		}
		else {	printf("not\n");
		}
	}
3 邏輯運(yùn)算符

請(qǐng)?zhí)砑訄D片描述

//邏輯運(yùn)算符 !非(單目運(yùn)算符) &&與 ||或
	 //!的優(yōu)先級(jí)高于算術(shù)運(yùn)算符,&& || 的優(yōu)先級(jí)低于關(guān)系運(yùn)算符

	int year;
	while (scanf("%d", &year)) {//判斷閏年
		if ((year % 4 && year % 100 != 0) || (year % 400 == 0)) {	printf("it is a leap year\n");
		}
		else {	printf("it is not a leap year\n");
		}
	}

	int k = 100;//!從右到左結(jié)合,因?yàn)?k=0,!!k = 1
	int j = !!k;
	printf("!k = %d,j = %d", !k,j);

	//短路運(yùn)算
	int i = 1;
	i&& printf("u can see me!\n");//如果i為真輸出,如果i為假不輸出
	i|| printf("u can see me!\n");//如果i為真不會(huì)執(zhí)行后面的語(yǔ)句
	if (i) {printf("u can see me!\n");
	}
4 賦值運(yùn)算符

請(qǐng)?zhí)砑訄D片描述

復(fù)合賦值運(yùn)算符:+= -= *= /=

請(qǐng)?zhí)砑訄D片描述

//賦值運(yùn)算符 右邊的值賦給左邊
	int num1 = 1, num = 1, num2 = 100;
	num = num + 1;
	num += 1;//也有 *= -= /=
	num2 /= 30;
	printf("%d", num2);
5 求字節(jié)運(yùn)算符

sizeof() 是一個(gè)運(yùn)算符,并非是函數(shù)。sizeof()求常量或變量所占空間大小

//求字節(jié)數(shù)運(yùn)算符
	int i;
	printf("i_size=%d", sizeof(i));
6 運(yùn)算符優(yōu)先級(jí)

請(qǐng)?zhí)砑訄D片描述
請(qǐng)?zhí)砑訄D片描述

三、選擇、循環(huán) 1 if-else

請(qǐng)?zhí)砑訄D片描述

為了if-else的對(duì)應(yīng)關(guān)系更清楚,最好是每個(gè)執(zhí)行語(yǔ)句都使用 { } 括起來(lái)

if判斷條件為真就執(zhí)行某個(gè)語(yǔ)句,為假不執(zhí)行或執(zhí)行else中的語(yǔ)句
if-else可以嵌套使用,也可以同時(shí)使用作為多分支語(yǔ)句

//1.if-else  //注意{}的使用
	int i;
	scanf("%d", &i);
	//一個(gè)if-else
	if (i >0) {printf("xixi\n");
	}
	else {printf("haha\n");
	}
	//并行使用,多分支語(yǔ)句
	int j,cost;
	scanf("%d", &j);
	if (j >0 && j< 100)cost = 0.15;
	else if (j >100 && j< 200)cost = 0.5;
	else cost = 1;
	//嵌套使用,
	if (i >1) {if (i< 10) {	printf("i>1&&i<10\n");
		}
	}//若沒(méi)有這組{},else的字句屬于它最近的if,遵循就近原則,但括起來(lái)以后下面的else屬于第一個(gè)if
	else
		printf("No\n");
2 while循環(huán)

請(qǐng)?zhí)砑訄D片描述

“當(dāng)型”循環(huán)結(jié)構(gòu)
語(yǔ)法形式: while(表達(dá)式) {語(yǔ)句} ,表達(dá)式的值為真時(shí),執(zhí)行while內(nèi)嵌語(yǔ)句,為假跳出循環(huán)

//2. 循環(huán)while
	int sum1 = 1, total = 0;
	while (sum1<= 10) {total += sum1;
		sum1++;
	}//使用{}括起來(lái),程序更清晰
	printf("%d\n", total);
3 for循環(huán)

語(yǔ)法: for(表達(dá)式1 ; 表達(dá)式2 ; 表達(dá)式3) {語(yǔ)句} //注意用‘;’隔開(kāi)
表達(dá)式1通常為初值,也可以省略
表達(dá)式2通常為終止循環(huán)條件
表達(dá)式3為運(yùn)算形式
eg:for(int i=0;i<10;i++) {}

請(qǐng)?zhí)砑訄D片描述

//3.for循環(huán)
	for (int i = 0; i< 10; i++) {printf("%d ", i);
	}
	printf("\n");
4 continue語(yǔ)句

continue語(yǔ)句主要是跳出當(dāng)前循環(huán),繼續(xù)下一層循環(huán)

//4.continue 終止當(dāng)前層的循環(huán),繼續(xù)下一層循環(huán)
	for (int i = 0; i< 10; i++) {if (i % 2 == 0)
			continue; //偶數(shù)跳過(guò),輸出的只是奇數(shù)
			//for循環(huán)跳出后去執(zhí)行了i++,所以可以繼續(xù)執(zhí)行

		printf("%d ", i);
	}
	printf("\n");
	//while循環(huán)使用continue
	int sum1 = 1, total = 0;
	scanf("%d", &sum1);
	while (sum1<= 10) {if (sum1 % 2 == 0) {	sum1++;//while中要小心使用continue,如果沒(méi)有改變sum1的值,直接跳出循環(huán)了
			continue;//while中如果跳出當(dāng)前循環(huán)說(shuō)明sum1為偶數(shù),但是若沒(méi)有對(duì)sum1進(jìn)行修改,一直都是偶數(shù),再次進(jìn)到if語(yǔ)句,又會(huì)跳出,所以循環(huán)終止
		}

		total += sum1;
		sum1++;
	}
	printf("%d\n", total);
5 break語(yǔ)句

break語(yǔ)句是跳出循環(huán)

//5.break
	int i = 0, j = 100;
	for (i = 0,j = 100; i< 10; i++) {	j += 10;
			if (j >= 1000) {		break;//跳出整個(gè)循環(huán),若執(zhí)行break,就直接輸出i的值
			}	
		}
	printf("%d\n", i);
三、數(shù)組 1 一維數(shù)組

數(shù)組實(shí)際就是可以進(jìn)行進(jìn)行索引的數(shù)據(jù)類(lèi)型

數(shù)組定義規(guī)則:
請(qǐng)?zhí)砑訄D片描述

//1.一維數(shù)組
	//數(shù)組定義
	int a[10] = {0 };//數(shù)組范圍要表示出來(lái),對(duì)數(shù)組初始化
	以下形式最新C標(biāo)準(zhǔn)支持,但是不建議
	//int n;
	//scanf("%d", &n);
	//int a[n];
	
	//一維數(shù)組初始化
	//①每個(gè)元素賦初值
	int aa[5] = {0,1,2,3,4 };
	//不可以這樣寫(xiě)
	// int aa[5]; aa[5] = { 0,1,2,3,4 };
	
	//②給部分元素初始化,其余默認(rèn)為0
	int b[5] = {0,1,2 };

	//③全部賦值為0
	int c[5] = {0 };

	//④若給全部元素賦值,可以不指定數(shù)組的長(zhǎng)度
	int d[] = {1,2,3,4,5 };
//循環(huán)讀入數(shù)組
	int a[5];
	for (int j = 0; j< 5; j++)
		scanf("%d", &a[j]);//int型加取地址符
	for (int k = 0; k< 5; k++)
		printf("%d", a[k]);
2 數(shù)組訪問(wèn)越界
//2.數(shù)組訪問(wèn)越界,會(huì)造成數(shù)據(jù)異常
	int arr[5] = {1,2,3,4,5 };
	int i = 10;
	int j = 20;
	arr[5] = 6;
	arr[6] = 7;
	printf("%d\n", j);//這里的j輸出7(CLion環(huán)境)
	//因?yàn)檩斎隺rr[5]以后,數(shù)組占用了5個(gè)位置,給i和j賦值,此時(shí)i的位置是6,j的位置是7
	//因此再給arr[5]arr[6]賦值的時(shí)候他們兩個(gè)位置也分別是6,7,相當(dāng)于arr[6]再第七個(gè)位置覆蓋了之前的j
3 數(shù)組傳遞

請(qǐng)?zhí)砑訄D片描述

#define _CRT_SECURE_NO_WARNINGS
#include//定義一個(gè)函數(shù)
//數(shù)組傳遞到子函數(shù)后,其接受到的數(shù)組的起始地址,并不能傳遞數(shù)組長(zhǎng)度
void print(int a[],int n) {//傳入數(shù)組和數(shù)組長(zhǎng)度
	for (int i = 0; i< sizeof(a)/sizeof(int); i++) {//這里不能利用sizeof(a)來(lái)得到大小,因?yàn)榇颂幍膫鬟M(jìn)來(lái)的a是數(shù)組名,實(shí)際上是指針,這樣輸出的結(jié)果是錯(cuò)誤的,可以在主函數(shù)獲取長(zhǎng)度
		printf("%d ", a[i]);
	}
	a[4] = 20;//在子函數(shù)中修改數(shù)組的值
	printf("\n");
}


int main() {//3.數(shù)組傳遞
	//在函數(shù)中調(diào)用時(shí)直接輸入數(shù)組名
	int arr[5] = {1,2,3,4,5 };
	//可以通過(guò)sizeof計(jì)算數(shù)組長(zhǎng)度   sizeof(a)/sizeof(int)
	int len = sizeof(arr) / sizeof(int);
	print(arr, len);//傳入的是數(shù)組名
	printf("%d", arr[4]);

	return 0;
}
4 字符數(shù)組

存入字符的數(shù)組

請(qǐng)?zhí)砑訄D片描述

//4.字符數(shù)組
	char arr[6] = {'H','E','L','L','O' };
	//
	char arr1[6] = "Hello";//如果這樣寫(xiě)arr1[5]的話,要寫(xiě)arr1[6],因?yàn)楹竺孢€有'\0'也要有一個(gè)位置
	printf("%s\n", arr1);
	//%s 讀取到'\0'結(jié)束。此時(shí)若hello后面會(huì)輸出亂碼,因?yàn)閿?shù)組大小并沒(méi)有預(yù)存'\0'的位置,數(shù)組大小開(kāi)大一位給'\0'留位置即可
	printf("%s\n", arr);
	//在while循環(huán)中輸出字符數(shù)組
	int i = 0;
	while (arr[i]) {//表明遇到結(jié)束符時(shí)就停止循環(huán)
		printf("%c ", arr[i]);
		i++;
	}
	printf("\n");

	//scanf讀取字符數(shù)組,和讀取別的的類(lèi)似
	//scanf讀取字符串時(shí),會(huì)自動(dòng)往字符數(shù)組中放入結(jié)束符
	char arr2[5];
	char arr3[5];
	//scanf通過(guò)%s讀取字符串,%s讀取字符串時(shí)忽略空格和回車(chē)。%c比較特殊
	scanf("%s", arr2);//字符數(shù)組存儲(chǔ)了數(shù)組的起始地址,不需要取地址
	printf("%s\n", arr2);
	scanf("%s", arr3);
	printf("%s\n", arr3);
	scanf("%s %s", arr2,arr3);//
	printf("%s %s\n", arr2,arr3);
5 一些字符函數(shù)(str函數(shù))
int main() {//①gets()函數(shù)
	char a[20];
	//gets可以接受空格
	gets_s(a);//放入數(shù)組名即可//VS中需要寫(xiě)gets_s
	printf("%s\n", a);

	//②puts可以直接輸出一個(gè)字符串,傳入字符數(shù)組名
	puts(a);

	//③strlen函數(shù),求字符串長(zhǎng)度,實(shí)際上就是讀取到'\0'時(shí)停止
	char b[20];
	gets_s(b);
	int num1 = strlen(b);//頭文件為string
	int num2 = mylen(b);//自己寫(xiě)的計(jì)算數(shù)組長(zhǎng)度函數(shù)
	printf("%d %d\n", num1, num2);


	//④strcat函數(shù),拼接兩個(gè)字符串
	char a1[20];
	char a2[20];
	char a3[20];
	gets_s(a1);
	gets_s(a2);
	strcat(a1, a2);//  把a(bǔ)2的拼接到a1后面,相當(dāng)于擴(kuò)充a1
	puts(a1);

	//⑤strcpy函數(shù),copy字符串
	strcpy(a2, a1);//表示把a(bǔ)1的字符串復(fù)制給a1
	puts(a2);

	//⑥strcmp函數(shù),比較字典序大小
	//輸出一個(gè)常量,若為0相等,若為-1 后者大于前,若為1 前者大于后者
	//是按ascii碼比較的 
	char c[20];
	char d[20];
	gets_s(c);//he
	gets_s(d);//ae
	//比如 h的ascii碼大于 a的ascii碼,就會(huì)輸出整數(shù)
	int num3 = strcmp(c, d);
	printf("%d\n", num3);

	return 0;



}
6 二維數(shù)組

假設(shè)是數(shù)組a[5][5],可以理解成這個(gè)數(shù)組的每一個(gè)元素又是一個(gè)數(shù)組
即數(shù)組的元素還可以是數(shù)組,構(gòu)造出數(shù)組的數(shù)組

#includeint main()
{//①二維數(shù)組初始化
	//int arr[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };//二維數(shù)組的初始化
	//int arr[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} }
	int arr[3][4] = {0 };//初始化為0
	for (int i = 0; i< 3; i++) {for (int j = 0; j< 4; j++) {	scanf("%d", arr[i][j]);
		}
	}
	int brr[4][3] = {};
	//②將arr[3][4]轉(zhuǎn)化成arr[4][3]
	for (int i = 0; i< 3; i++)
	{for (int j = 0; j< 4; j++)
		{	brr[j][i] = arr[i][j];
		}
	}
	for (int i = 0; i< 4; i++)
	{for (int j = 0; j< 3; j++)
		{	printf("%d ", brr[i][j]);
		}
		printf("\n");
	}
}
四、函數(shù) 1 聲明與定義

指子函數(shù),寫(xiě)在主函數(shù)外部,可以在主函數(shù)中調(diào)用,一般用來(lái)實(shí)現(xiàn)某一個(gè)常用的功能。

函數(shù)間的調(diào)用關(guān)系請(qǐng)?zhí)砑訄D片描述

//
//func.h
#include#includeint printstar(int i);//函數(shù)聲明
void print_msg();

//main.c
#define _CRT_SECURE_NO_WARNINGS
#include"func.h"http://這里引用自己設(shè)置的頭文件,用""表示,標(biāo)準(zhǔn)庫(kù)用<>int main() {int a;
	scanf("%d", &a);
	a = printstar(a);
	print_msg();
	printstar(a);

	return 0;
}

//func.c
#include"func.h"
//函數(shù)定義
int printstar(int i) {printf("***********************\n");
	printf("printstar %d\n", i);
	return i + 3;
}

void print_msg() {//可以調(diào)用printstar
	printf("how are u\n");
	printstar(3);
}

請(qǐng)?zhí)砑訄D片描述

2 分類(lèi)與調(diào)用

用戶(hù)角度:
① 標(biāo)準(zhǔn)函數(shù):庫(kù)函數(shù),比如scanf,printf
②自定義的函數(shù):比如上面的printstar

函數(shù)形式:
①無(wú)參函數(shù):不需要傳遞參數(shù)的函數(shù),比如print_msg
②有參函數(shù):需要傳遞參數(shù)的函數(shù),比如printstar

3 遞歸調(diào)用

遞歸:函數(shù)調(diào)用自身的操作,沒(méi)有結(jié)束條件的話會(huì)產(chǎn)生死循環(huán)

#define _CRT_SECURE_NO_WARNINGS
#include//遞歸 求階乘
//調(diào)用自己
int f(int n) {//上臺(tái)階的問(wèn)題,需要尋找最后的條件,要想到達(dá)第n個(gè)臺(tái)階,要么從n-1,要么從n-2向上走
	//②確定結(jié)束條件
	if (1 == n) {return 1;
	}
	else if (n == 2) {return 2;
	}
//最主要是找到一個(gè)合適的輸出結(jié)果和前面一步的關(guān)系
	return f(n - 1) + f(n - 2);// ①確定與下一個(gè)式子的關(guān)系
}

int main() {int n, result;
	scanf("%d", &n);
	result = f(n);
	printf("%d", result);
	return 0;
}
4 變量和參數(shù) 4.1 全局變量、局部變量

全局變量簡(jiǎn)單理解就是放在主函數(shù)外定義的變量,任何函數(shù)都可見(jiàn)。也稱(chēng)作外部變量(定義在函數(shù)外部)
局部變量就是一個(gè)函數(shù)范圍內(nèi)的變量,只在一個(gè)函數(shù)內(nèi)可用。也稱(chēng)作內(nèi)部變量(一個(gè)函數(shù)內(nèi)部)
若全局變量和局部變量同名,采取就近原則,即實(shí)際獲取和修改的就是局部變量的值,因?yàn)榫植孔兞勘热肿兞扛?/p>

請(qǐng)?zhí)砑訄D片描述
請(qǐng)?zhí)砑訄D片描述

4.2 實(shí)參和形參

實(shí)參:調(diào)用時(shí)傳遞給函數(shù)的參數(shù). 實(shí)參可以是常量、變量、表達(dá)式、函數(shù)等, 無(wú)論實(shí)參是何種類(lèi)型的量,在進(jìn)行函數(shù)調(diào)用時(shí),它們都必須具有確定的值, 以便把這些值傳送給形參。 因此應(yīng)預(yù)先用賦值,輸入等辦法使實(shí)參獲得確定值。
形參(parameter):
形參:不是實(shí)際存在變量。是在定義函數(shù)名和函數(shù)體的時(shí)候使用的參數(shù),目的是用來(lái)接收調(diào)用該函數(shù)時(shí)傳入的參數(shù).在調(diào)用函數(shù)時(shí),實(shí)參將賦值給形參。因而,必須注意實(shí)參的個(gè)數(shù),類(lèi)型應(yīng)與形參一一對(duì)應(yīng),并且實(shí)參必須要有確定的值。
請(qǐng)?zhí)砑訄D片描述

#define _CRT_SECURE_NO_WARNINGS
#includeint global_i;//此變量為全局變量

int f(int a) {//這里a是形參,調(diào)用時(shí)才會(huì)分配空間
	//②確定結(jié)束條件
	if (1 == a) {return 1;
	}
	else if (a == 2) {return 2;
	}

	return f(a - 1) + f(a - 2);// ①確定與下一個(gè)式子的關(guān)系
}

int main() {int n, result;//局部變量
	scanf("%d", &n);
	result = f(n);//此處的n是實(shí)參
	printf("%d", result);
	return 0;
}

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

名稱(chēng)欄目:【C語(yǔ)言基礎(chǔ)】基礎(chǔ)知識(shí)、循環(huán)、數(shù)組、函數(shù)-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://muchs.cn/article24/cshgce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、域名注冊(cè)、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站