利用函数实现乘法表,两数交换,判断闰年,判断素数,还有数组的初始化、清空、逆置。

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;
}

运行结果:
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值