0
点赞
收藏
分享

微信扫一扫

函数--练习题

_阿瑶 2022-01-22 阅读 49
算法C

部分练习

例一、分数求和

1/1 - 1/2 + 1/3 - 1/4 … + 1/99 - 1/100

分析,首先可以先求出 1/1 ---- 1/100 的和,不关注符号:
定义一个 i ,用以表示分母的变化

int  i = 1;
float sum = 0.0;   //分数和值为小数,不可能大于 1
//sum 表示和,则sum 值变化表示为:
sum += 1.0 / i;

则增加上符号之后可以表示为:

int main()
{
	float sum = 0.0;   //记录和
	int flag = 1;   //用以表示符号变化
	int i = 1;
	for (i = 1; i <= 100; ++i) {
		sum += flag * 1.0 / i;
		flag = -flag;   //i 为偶数时符号为负,为奇数符号为正
	}
	printf("%lf\n", sum);
	return 0;
}

运行结果:

在这里插入图片描述

注意点:
(1)“ / ” 除操作时,倘若两边都是整数则运算结果也为整数:
在这里插入图片描述

此时 1/2 商 0 余 1,因此除的结果为 0;

(2)“ / ” 除操作有一方值为小数时,结果为小数:
(lf 表示浮点数打印)
在这里插入图片描述
在这里插入图片描述

例二、求十个整数的最大值

首先需要确保存在十个可以进行比较的数字,可以使用数组来进行随即输入:


int main()
{
	int arr[10] = { 0 };
	int sz = sizeof(arr) / sizeof(arr[0]);   //记录数字的个数
	int i = 0;
	for (i ; i < sz; ++i) {
		scanf("%d", &arr[i]);       //首先输入十个需要进行比较的数
	}

//进行比较
	int max = arr[0];  //以第一个元素为基准来进行比较
	int j = 1;
	for (j; j < sz; ++j) {
		if (arr[j] > max)
			max = arr[j];
	}
	printf("max = %d\n", max);
	return 0;
}

测试部分:
在这里插入图片描述
在这里插入图片描述

例三、打印乘法口诀表

分析:
11=1
1
2=2 22=4
1
3=3 23=6 33=9
14=4 24=8 34=12 44=16

以此类推,第一行有一个等式,第二行两个,第三行三个,,,,第九行九个

int main()
{
	int i = 1; //记录行

	for (i; i <= 9; ++i) {
		int j = 1; //记录列
		for (j; j <= i; ++j)
			printf("%d * %d = %d  ", i, j, i*j);
		printf("\n");
	}
	return 0;
}

运行结果:
在这里插入图片描述
可以看到打印出来的表并没有完全对齐,这是因为打印方式的问题,稍作修改即可:
在这里插入图片描述

例四、整形有序数组中实现二分查找

分析:
初始状态:
在这里插入图片描述

第二次查找:
在这里插入图片描述

第三次查找:

在这里插入图片描述

第四次查找:
在这里插入图片描述

代码表示:

int Bin_find(int arr[], int sz, int n)
{
	int low = 0;
	int high = sz - 1;     //记录端点位置
	int mid = 0;
	while (low <= high) {
		mid = (low + high) / 2;
		if (arr[mid] > n)
			high = mid - 1;
		if (arr[mid] < n)
			low = mid + 1;
		if (arr[mid] == n)
			return mid;
	}
	return 0;
}

int main()
{
	int arr[] = {1,2,3,4,5,6,7,8,9,10};
	int sz = sizeof(arr) / sizeof(arr[0]);
	int n;
	scanf("%d", &n); //要查找的数是 n

	int ret = Bin_find(arr, sz, n);
	if (ret != 0)
		printf("找到了!下标为 %d\n", ret);
	if (ret == 0)
		printf("找不到!\n");

	return 0;
}

测试:
在这里插入图片描述

在这里插入图片描述

Tips:
博客内容为原创,有任何问题欢迎留言~

举报

相关推荐

0 条评论