【C语言】C基本练习3(两个等大数组交换、a+aa等特殊求和)

(一)两个等大数组内容的交换
//将数组A中的内容和数组B中的内容进行交换。(数组一样大)
方法一:建立临时变量tmp,利用for循环交换,提取,存储数组中元素。
代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
	int arr1[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	int arr2[10] = { 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		int tmp = 0;
		tmp = arr1[i];
		arr1[i] = arr2[i];
		arr2[i] = tmp;
	}
	for (i = 0; i < 10; i++)
	{
		printf("%3d",arr1[i]);
	}
	printf("\n");
	for (i = 0; i < 10; i++)
	{
		printf("%3d",arr2[i]);
	}
	system("pause");
	return 0;
}

方法二: 采用二进制异或的办法来交换数组

  • 异或运算符“^”规则:同号为假,异号为真;
运算说明
0^ 0=0 , 0^1=10异或任何数,其结果等于任何数
1^ 0=1 , 1 ^ 1= 01 异或任何数,其结果等于任何数取反
a ^ a=0任何数异或自己,其结果为0
  • 实现两个数的交换(不用创建临时变量)
    举例如下交换两个整数 a=1,b=2 ,则通过下列语句即可实现:
a = a ^ b;
b = a ^ b;
a = a ^ b;
解释如下:
    0 0 0 1      --->a
    0 0 1 0      --->b
    -------------------
    0 0 1 1      --->a
    0 0 1 0      --->b
    ---------------------
    0 0 0 1      ---->b()
    0 0 1 1       --->a
    ------------------------
    0 0 1 0       ---->a

同理数组也一样,则代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
 int main()
{
	int arr1[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	int arr2[10] = { 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		arr1[i] = arr1[i]^arr2[i];
		arr2[i] = arr1[i]^arr2[i];
		arr1[i] = arr1[i]^arr2[i];
	}
	for (i = 0; i < 10; i++)
	{
		printf("%3d", arr1[i]);
	}
	printf("\n");
	for (i = 0; i < 10; i++)
	{
		printf("%3d", arr2[i]);
	}
	system("pause");
	return 0;
}

(二)特殊求和
// 计算1/1-1/2+1/3-1/4+1/5…+1/99-1/100的值;

  • 和sum应为double型,注意运算时的精度;
  • 设置flag变量在循环中体现出正负的形式;
    代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
 int main()
{
	int i = 0;
	double sum = 0;
	int flag = 1;
	for (i = 1; i < 101; i++)
	{
		sum = sum + (flag*1.0) / i;
		flag = -flag;
	}
	printf("%1f",sum);
	system("pause");
	return 0;
}

//求 Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字
例如:2+22+222+2222+22222;

  • 设置a,n两个变量作为其各数字及相同的前 n项;
  • 建立临时变量 tmp 以及建立变量sum 将后续数连接起来求和;
    代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
 int main()
{
	int i, a;
	int n;
	int sum = 0;
	int tmp = 0;
	printf("请输入数字a及它的前n项:\n");
	scanf("%d%d", &a, &n);
	for (i = 0; i < n; i++)
	{
		tmp = tmp * 10 + a;
		sum += tmp;
	}
	printf("%d", sum);
	system("pause");
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值