c语言小练习

将数组A中的内容和数组B中的内容进行交换。(数组一样大)

由于数组自身的特点,无法被赋值,之前做过的交换两个变量的值的手段就没有办法直接使用了。虽然是不能够直接使用,但是由于数组内部的元素具有可更改的特点,我们一样可以通过这个方法让它们两个的内容进行交换。

具体步骤就是引入第三个数组c,让c数组中的元素等于a数组中的元素,再让a数组中的元素等于b数组中的,最后让b数组中的元素等于c数组中的。

由于数组中不仅仅只有一个元素,所以这里使用for语句进行循环,让数组中每一个元素都能够进行赋值变更,而i的大小取决于数组中元素的多少

int main()
{
	int arr1[] = { 1,2,3,4,5,6,7 };
	int arr2[] = { 7,6,5,4,3,2,1 };
	int arr3[7] = { 0 };

	for (int i = 0; i < 7; i++)
	{
		arr3[i] = arr1[i];
		arr1[i] = arr2[i];
		arr2[i] = arr3[i];
		printf("%d %d\n", arr1[i],arr2[i]);		
	}
	return 0;
}


计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值

由于是需要计算分式,首先第一点也是最重要的,结果类型必须为浮点型,否则无法输出正确的值,然后我们分析这个题目,可以看到在题目中每逢偶数,前面的运算符为负号,每逢奇数前面的运算符就变为正号,基于这个特点我们也可以考虑用一个for循环语句

int main()
{
	double result = 0;
	for (int i = 1; i <= 100; i++)
	{
		if (i%2 == 0)
		{
			result = result - (1.0)/i ;
		}
		else
		{
			result = result + (1.0)/i ;
		}
	}
	printf("%f\n", result);
	return 0;
}

在和小伙伴交流过后,发现这个循环有点啰嗦,在小伙伴的建议下进行了优化,省略了if中的判断,改为直接使用for语句进行循环

int main()
{
	double result = 0;
    int flag = 1;
	for (int i = 1; i <= 100; i++)
	{
		result += flag * (1.0) / i;
		flag = -flag;
	}
	printf("%f\n", result);
	return 0;
}

这样更改之后明显的计算要少了很多,把原来的计算转化为执行代码速度上应该是要快一些的 


编写程序数一下 1到 100 的所有整数中出现多少个数字9

从数学层面上看,1-100中有数字9的数字都有2个特点:9在十位或者9在个位。那么通过逻辑或的概念就可以执行,在for循环语句中增加一个if判断语句,对于9在十位或者9在个位的数字进行统计。

int main()
{
	int a = 0;
	for (int i = 1; i <= 100; i++)
	{
		if (i/10 == 9 || i%10 == 9)
		{
			a ++;
			printf("%d\n", i);
		}
	}
	printf("一共有%d个数字出现了数字9\n", a);
	return 0;
}

 最终得到的结果是有19个数字出现了数字9

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值