C語言經典習題100例(九)41-45

畢業季、期末已至,不用爲論文查重煩惱,讓我帶你白嫖查重

期末、畢業季已至,給大家推薦一些免費查重網站,帶着大家白嫖一回,可點擊鏈接https://www.ixigua.com/i6839244226442560011/視頻詳情介紹中獲取查重網站鏈接。

習題41

學習static定義靜態變量的用法。

實現思路:
用static聲明和未用static聲明變量進行對比,即可得出static的作用。

代碼如下:

#include <stdio.h>
 
int main(){
	void func();
	int i;
	for(i = 0;i < 10; i++){
		func();
	}	
	
    return 0;
}

void func(){
	int i = 0;
	static int num = 0;
	printf("In func:i = %d, num = %d\n", i, num);
	i++;
	num++;
}

打印:

In func:i = 0, num = 0
In func:i = 0, num = 1
In func:i = 0, num = 2
In func:i = 0, num = 3
In func:i = 0, num = 4
In func:i = 0, num = 5
In func:i = 0, num = 6
In func:i = 0, num = 7
In func:i = 0, num = 8
In func:i = 0, num = 9

習題42

學習使用定義自動變量的用法。

實現思路:
自動變量用auto關鍵字聲明,函數中的形參和在函數中定義的變量(包括在複合語句中定義的變量)都屬於自動變量,默認不用關鍵字修飾即爲自動變量,可進行對比分析。

代碼如下:

#include <stdio.h>
 
int main(){
	int i, m = 0, n = 0;
	for(i = 0;i < 10; i++){
		printf("In main: m = %d, n = %d. ", m, n);
		{
			auto int n = 10;
			printf("In block: m = %d, n = %d\n", m, n);
		}
		m++;
		n++;
	}	
	
    return 0;
}

打印:

In main: m = 0, n = 0. In block: m = 0, n = 10
In main: m = 1, n = 1. In block: m = 1, n = 10
In main: m = 2, n = 2. In block: m = 2, n = 10
In main: m = 3, n = 3. In block: m = 3, n = 10
In main: m = 4, n = 4. In block: m = 4, n = 10
In main: m = 5, n = 5. In block: m = 5, n = 10
In main: m = 6, n = 6. In block: m = 6, n = 10
In main: m = 7, n = 7. In block: m = 7, n = 10
In main: m = 8, n = 8. In block: m = 8, n = 10
In main: m = 9, n = 9. In block: m = 9, n = 10

習題43

學習使用static的另一用法。

實現思路:
static在單獨的代碼塊中也可以實現在一次函數執行結束後變量未被銷燬、保留當前的值,下次調用函數時即使用保留在內存中的變量值,直到運行期間結束才釋放該變量。

代碼如下:

#include <stdio.h>
 
int main(){
	int i, m = 0, n = 0;
	for(i = 0;i < 10; i++){
		printf("In main: m = %d, n = %d. ", m, n);
		{
			static int n = 10;
			printf("In block: m = %d, n = %d\n", m, n);
			n--;
		}
		m++;
		n++;
	}	
	
    return 0;
}

打印:

In main: m = 0, n = 0. In block: m = 0, n = 10
In main: m = 1, n = 1. In block: m = 1, n = 9
In main: m = 2, n = 2. In block: m = 2, n = 8
In main: m = 3, n = 3. In block: m = 3, n = 7
In main: m = 4, n = 4. In block: m = 4, n = 6
In main: m = 5, n = 5. In block: m = 5, n = 5
In main: m = 6, n = 6. In block: m = 6, n = 4
In main: m = 7, n = 7. In block: m = 7, n = 3
In main: m = 8, n = 8. In block: m = 8, n = 2
In main: m = 9, n = 9. In block: m = 9, n = 1

習題44

學習使用external的用法。

實現思路:
用extern來聲明外部變量,以擴展外部變量的作用城,從變量的定義處開始,到本程序文件的末尾。

代碼如下:

#include <stdio.h>

int main(){
	int max(int a, int b);
	extern A, B;
	printf("Max = %d\n", max(A, B));
	
	return 0;
}

int max(int a, int b){
	return a > b ? a : b;
}

int A = 12, B = 20;

習題45

學習使用register定義變量的方法。

實現思路:
C語言允許將局部變量的值放在CPU中的寄存器中,需要用時直接從寄存器取出參加運算,不必再到內存中去存取,從而提高執行效率,這種變量叫做寄存器變量,用關鍵字register聲明。

代碼如下:

#include <stdio.h>

int main(){
	long fact(int n);
	int i;
	for(i = 1; i <= 10; i++){
		printf("%2d! = %d\n", i, fact(i));
	}
	
	return 0;
}

long fact(int n){
	register long f = 1;
	int i;
	for(i = 1; i <= n; i++){
		f *= i;
	}
	
	return f;
}

打印:

 1! = 1
 2! = 2
 3! = 6
 4! = 24
 5! = 120
 6! = 720
 7! = 5040
 8! = 40320
 9! = 362880
10! = 3628800

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章