标签搜索

目 录CONTENT

文章目录

高精度加法(非负)和大数阶乘及和汽水问题.md

小小城
2021-08-22 / 0 评论 / 0 点赞 / 6 阅读 / 1,769 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-05-02,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

高精度加法(非负)和大数阶乘

@[toc]

一、问题描述

在这里插入图片描述

二、代码

#define _CRT_SECURE_NO_WARNINGS
#include<Windows.h>
#include<stdio.h>
#define MaxSize 100
//高精度加法:两个大整数非负
int main()
{
	char a[MaxSize];
	char b[MaxSize];
	char c[MaxSize];
	int i = 0;
	for (;i < MaxSize;i++)
	{
		a[i] = 0;
		b[i] = 0;
		c[i] = 0;
	}
	printf("请输入第一个大整数:\n");
	scanf("%s", &a);
	printf("请输入第一个大整数:\n");
	scanf("%s", &b);
	int lena = strlen(a);
	int lenb = strlen(b);
    for (i=0;i < lena || i < lenb;i++)
	{
		/*因为字符串往数组里面存的时候都是从数组首元素开始存的,即数组第0位都存着两个大整数的最高位,数组第1位存两个
		大整数此高位,以此类推,*/
		if (i < lena)
		{
			c[i] += a[lena - 1 - i]-'0';//因为相加的时候都是从最低为开始相加,即两个数组的最后一位最先开始相加
		}
		if (i < lenb)
		{
			c[i] += b[lenb - i - 1]-'0';
		}
		if (c[i] >= 10)
		{
			c[i + 1] = c[i] / 10;//从C数组第1位开始存储和
			c[i] = c[i] % 10;
		}
	}
	if (lena < lenb)//取得两数组较大的长度
	{
		lena = lenb;
	}
	if (c[lena] > 0)
	{
		printf("%d", a[lena]);
	}
	for (i = lena - 1;i >= 0;i--)//输出
	{
		printf("%d", c[i]);
	}
	system("pause");
	return 0;
}

三、问题描述

在这里插入图片描述

四、代码

#define _CRT_SECURE_NO_WARNINGS
#include<Windows.h>

//大数阶乘001
#include<stdio.h>
void JieCheng(int n)
{
	int a[2000];
	int i = 0;
	int j = 0;
	int weishu = 1;
	int tem = 0;//临时存储
	a[0] = 1;
	for (i = 2;i <= n;i++)
	{
		int num = 0;
		for (j = 0;j < weishu;j++)
		{
			tem = a[j] * i + num;
			a[j] = tem % 10;
			num = tem / 10;
		}
		while (num)
		{
			a[weishu] = num % 10;
			num = num / 10;
			weishu++;
		}
	}
	for (i = weishu - 1;i >= 0;i--)
	{
		printf("%d", a[i]);
	}
}
int main()
{
	int n = 0;
	while (n != EOF)
	{
		printf("请输入要求阶乘得数:\n");
		scanf("%d", &n);
		JieCheng(n);
	}
	system("pause");
	return 0;
}

五、问题描述

喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,
//给20元,可以多少汽水。
//编程实现。

六、代码

int main()
{
	int money = 20;
	int woter = money;//汽水瓶数
	int pinpin = woter;//开始空瓶数
	int num = 0;//记录剩余空瓶树
	int lastpinpin = pinpin;//总空瓶数
	while (pinpin)
	{
		pinpin = lastpinpin / 2;//2个空瓶换一瓶汽水,换到多少汽水,就得到多少空瓶
		num = lastpinpin % 2;//记录上次换完汽水有没有剩余
		 lastpinpin=pinpin+ num;//总空瓶树==得到的汽水数+剩余空瓶数
		 woter += pinpin;//每次给汽水加上
	}
	printf("%d", woter);
	system("pause");
	return 0;
}
0

评论区