C语言入门程序(二)

一入代码深似海,从此妹纸是路人.

前面提到过函数这个概念,今天主要带来的是一些函数对之前初阶问题的一些应用,内容如下:

(一)实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定, 
输入9,输出9 * 9口诀表,输入12,输出12 * 12的乘法口诀表。

思考过程:9*9乘法口诀表之前已经提到过,这里要求自我指定输入行数,那么简单的for循环和scanf输入,问题搞定.

void Mul(int num){
	int i = 0;
	int j = 0;
	for (i = 1; i <= num; i++){
		for (j = 1; j <= i; j++){
			printf("%2d * %2d = %2d ", j, i, i*j);//这里用到的逻辑和9*9乘法表类似,不再阐述具体过程
		}
		printf("\n");
	}
}


int main(){
	printf("请输入希望得到数字的乘法口诀表:\n");
	int input = 0;
	scanf("%d", &input);
	Mul(input);//调用函数
	system("pause");
	return 0;
}

 

(二)使用函数实现两个数的交换。

思考过程:两个数交换的方法有很多种,这里选自简单易懂的中间值交换法,上代码:

void swap(int a_change,int b_change){//函数的定义(传进两个需要交换数字的参数)
	int exchange = 0;
	exchange = a_change;//交换过程的开始
	a_change = b_change;
	b_change = exchange;
	printf("交换后的数字为:\n");
	printf("%d %d\n", a_change, b_change);
}



int main(){
	printf("请输入需要交换的两个数:\n");
	int a = 0;
	int b = 0;
	scanf("%d", &a);
	scanf("%d", &b);
	printf("需要交换的两个数为:\n");
	printf("%d %d\n", a, b);
	swap(a, b);

	system("pause");
	return 0;
}

 

(三)实现一个函数判断year是不是润年。

思考过程:逻辑在之前阐述过,要熟悉函数参数的传递和定义等等

void Is_leapyear(int judege_year){
	if ((((judege_year % 4) == 0) && ((judege_year % 100 != 0)) || ((judege_year % 400) == 0))){
		printf("%d是闰年\n", judege_year);
	}
	else
		printf("%d不是闰年\n", judege_year);
}



int main(){
	printf("请输入需要判断的年份:\n");
	int year = 0;
	scanf("%d", &year);
	printf("需要判断的年份是:%d\n",year);
	Is_leapyear(year);
	system("pause");
	return 0;
}

(四) 创建一个数组,实现函数init()初始化数组、empty()清空数组、reverse()函数完成数组元素的逆置。

思考过程:这里就差不多开始我们函数的具体应用了

  1. 首先我们需要一个数组
  2. 其次功能选择模块
  3. Init()函数
  4. empty()函数
  5. reverse()函数
void menu(){//简单的菜单函数,使用switch函数选择进入相应的功能函数即可
	printf("***************************\n");
	printf("********1.数组初始化*******\n");
	printf("********2.数组的清空*******\n");
	printf("********3.数组的逆置*******\n");
	printf("********4.退出本程序*******\n");
	printf("***************************\n");
}

void init(int *test_arr, int len){//数组初始化
	int i = 0;
	for (i = 0; i < len; i++){
		scanf("%d", &test_arr[i]);
	}
	for (i = 0; i < len; i++){
		printf("%2d", test_arr[i]);
	}
	printf("\n");
}

void empty(int *test_arr, int len){//数组清空,赋值为0答应即可
	int i = 0;
	for (i = 0; i < len; i++){
		test_arr[i] = 0;
	}
	for (i = 0; i < len; i++){
		printf("%2d", test_arr[i]);
	}
	printf("\n");
}
void reverse(int *test_arr, int len){//逆置过程,第一个和最后一个交换,逐渐向中间靠拢
	int i = 0;
	int num = 0;
	for (i = 0; i < len / 2; i++){
		num = test_arr[len - 1 - i];//为什么还要减1呢?数组下标从0开始,要注意到这个细节.
		test_arr[len - 1 - i] = test_arr[i];
		test_arr[i] = num;
	}
	for (i = 0; i < len; i++){
		printf("%2d", test_arr[i]);
	}
	printf("\n");
}

int main(){
	int *arr;
	int length = 0;//数组大小的定义,当然这里注意\0的存在
	int true = 1;//为后继跳出循环作出铺垫
	printf("请输入需要操作数组的大小:\n");//设置数组大小
	scanf("%d", &length);
	arr = (int*)malloc(length);//开辟数组所占的空间
	menu();
	while (true){
		int choose = 0;
		scanf("%d", &choose);
		switch (choose)
		{
		case 1:
			init(arr, length - 1);//因为\0的存在,所以传进去数值数组大小应该减1
			break;
		case 2:
			empty(arr, length - 1);
			break;
		case 3:
			reverse(arr, length - 1);
			break;
		case 4:
			printf("退出程序\n");
			true = 0;
			break;
		default:
			printf("输入错误,请重新输入:\n");
			break;
		}
	}
	system("pause");
	return 0;
}

 

(五)实现一个函数,判断一个数是不是素数

思考过程:这里也是简单的函数调用,直接上代码:

void Is_prime(int test_num){
	int i = 0;
	int sum = 0;//跳出条件的伏笔
	for (i = 2; i <= test_num-1; i++){
		if (test_num % i == 0){
			sum++;
		}
		if (sum > 0 ){
			printf("这个数不是素数\n");
			break;
		}
		if (i == test_num - 1 && sum == 0){//比test_num小的数都已经完成了遍历判断
			printf("这个数是素数\n");
		}
	}
}

int main(){
	printf("请输入一个数\n");
	int input = 0;
	scanf("%d", &input);
	Is_prime(input);
	system("pause");
	return 0;
}

 

你可能感兴趣的:(C语言中阶问题)