利用函數實現乘法表,兩數交換,判斷閏年,判斷素數,還有數組的初始化、清空、逆置。

1.實現一個函數,打印乘法口訣表,口訣表的行數和列數自己指定

問題分析:首先是利用函數來實現乘法表,先設計函數,分析可以知道這個函數是沒有返回值的,所以用void,然後實現乘法表則需要兩層for循環來實現,外層循環控制行數,裏層循環控制每行的列數,來完成函數,然後在獲取鍵盤輸入來控制行列數,最後調用函數即可。
代碼:

void MultiplicationTable( int row) {
	for (int i = 1; i <= row;i++ ) {
		for (int j = 1; j <= i;j++) {
			printf("%d*%d=%2d ", i, j,i*j);
		}
		printf("\n");
	}
}

int main() {
	int row;
	printf("請輸入一個數字:");
	scanf("%d",&row);
	MultiplicationTable(row);
	return 0;
}

運行截圖:在這裏插入圖片描述

2.使用函數實現兩個數的交換

問題分析:首先分析函數是實現兩個數的交換所以沒有返回值用void,然後定義變量來進行數值的交換,因爲函數內的值是形參,所以不能直接利用形參進行交換,要利用指針來操作,用int* x,int* y,與tmp來進行交換來實現函數對實參的交換。
代碼:

void Swap(int* x, int* y) {
	int tmp = *x;
	*x = *y;
	*y = tmp;
}
int main() {
	int a = 10;
	int b = 20;
	printf("交換前:a=%d,b=%d\n",a,b);
	Swap(&a, &b);
	int* x = &a;
	int* y = &b;
	printf("交換後:a=%d,b=%d\n", a, b);
	return 0;
}

運行截圖:
在這裏插入圖片描述

3.實現一個函數判斷year是不是潤年

問題分析:利用函數來判斷year是否是閏年是返回1,不是返回0;所以這個函數是有返回值的,然後定義函數,用兩個判斷來確定是否是閏年,最後獲取鍵盤輸入,輸入年份調用函數來判斷,通過返回之來確定。
代碼:

int IsLeapYear(int i) {
	if (i%4==0&&i%100!=0) {
		return 1;
	}
	else if (i%4==0&&i%400==0) {
		return 1;
	}
	return 0;
}
int main() {
	int i;
	printf("請輸入年份:");
	scanf("%d",&i);
	printf("%d", IsLeapYear(i));
	return 0;
}

運行結果:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

4.實現一個函數,判斷一個數是不是素數

問題分析:首先利用函數來判斷是否是素數,是返回1,不是返回0,然受設計函數,判斷是否是素數,首先1和0都不是素數,所以直接返回0;其餘的數我們只需要從2開始到這個數開根號之後取到的的數之間所有的數都被這個數整除一遍,如果不存在能整除的數則是素數返回1,否則返回0,最後獲取鍵盤輸入一個數,調用函數,判斷是否是素數。
代碼:

int IsPrime(int num) {
	if (num == 0 || num == 1) {
		return 0;
	}
	for (int i = 2; i < sqrt(num); i++) {
		if (num % i == 0) {
			return 0;
		}
	}
	return 1;
}
int main(){
	printf("請輸入一個數字:");
	int num;
	scanf("%d",&num);
	printf("%d",IsPrime(num));
	return 0;
}

運行截圖:
在這裏插入圖片描述
在這裏插入圖片描述

5.創建一個數組,實現函數init()初始化數組、實現empty()清空數組、實現reverse()函數完成數組元素的逆置

問題分析:利用函數初始化數組,先定義一個val,然後利用循環將val輔助給數組的所有元素;清空數組就是利用循環兩數組的每一個元素都於0;函數逆置可以簡單地理解爲數組中的元素顛倒過來。
代碼:

void init(int a[], int n, int val) {
	int i;
	for (i = 0; i < n; i++) {
		a[i] = val;
	}
}
void empty(int* a,int n) {
	int i;
	for (i = 0; i < n;i++) {
		a[i] = 0;
	}
}
void reverse(int* b,int n) {
	int begin=0, end=n-1;
	while (begin<end) {
		int tmp = b[begin];
		b[begin] = b[end];
		b[end] = tmp;
		begin++;
		end--;
	}
}
void print(int* a,int n) {
	for(int i=0; i < n;i++) {
		printf("%d ",a[i]);
	}
	printf("\n");
}
int main() {
	int a[10] ;
	int b[10] = {1,2,3,4,5,6,7,8,9,10};
	init(a, sizeof(a) / sizeof(a[0]), 100);
	print(a, sizeof(a) / sizeof(a[0]));
	empty(a, sizeof(a) / sizeof(a[0]));
	print(a, sizeof(a) / sizeof(a[0]));
	reverse(b, sizeof(b) / sizeof(b[0]));
	print(b, sizeof(b) / sizeof(b[0])); 
	return 0;
}

運行結果:
在這裏插入圖片描述

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