UVa 424 Integer Inquiry

【解题思路】

本题题意明确,不断输入不超过100位的正整数,以0作为结束标志,计算所有整数的和。基础的高精度加法题目。

这里借鉴了算法白书的思想,将整数用int型数组保存,输入用字符串,最后逐个输出整数位。以下是核心代码。

for (int i = 0, a = 0; a || i < max_len; i ++) {
			int temp = a;
			if (i < len) temp = temp+num[i];
			if (i < x.len) temp = temp+x.num[i];
			y.num[y.len ++] = temp%10;
			a = temp/10;
		}
变量a为进位标志,取值0或1。变量max_len是两个相加的整数长度经过比较后得到的较大值。加法从低位向高位逐位相加,当a = 0且遍历超过max_len时,加法才能结束。另外,整型数组保存字符串数据时,需要逆序保存,方便在做加法时进位,最后输出时,再还原顺序。

【代码】

#include	<stdio.h>
#include	<string.h>
#include	<stdlib.h>

int MAX(int a, int b) { //取两者较大值
	return a > b ? a : b;
}

typedef struct bigNumber { //定义超长整数bigNumber
	int num[120]; //保存整数位
	int len; //bigNumber数位长度

	bigNumber() { //初始化
		memset(num, 0, sizeof (num));
		len = 0;
	}

	bigNumber operator= (const bigNumber x) { //赋值重载
		len = x.len;
		for (int i = 0; i < len; i ++)
		{
			num[i] = x.num[i];
		}
		return *this;
	}
	bigNumber operator+ (const bigNumber x) const { //加法重载,可做模板
		bigNumber y;//y保存两者相加的结果
		int max_len = MAX(len, x.len);
		for (int i = 0, a = 0; a || i < max_len; i ++)
		{
			int temp = a;
			if (i < len) temp = temp+num[i];
			if (i < x.len) temp = temp+x.num[i];
			y.num[y.len ++] = temp%10;//相加后给结果的对应位赋值
			a = temp/10;//进位重新进行计算
		}

		return y;
	}

	void input(char *x) { //将字符串逆转,保存在整型数组里
		len = strlen(x);
		for (int i = 0; i < len; i ++)
		{
			num[i] = x[len-1-i]-'0';
		}
	}

	void output() {
		for (int i = len-1; i >= 0; i --) { //逐位输出,注意这里的数组保存是逆序
			printf("%d", num[i]);
		}
	}


}bigNumber;


int main() {
	bigNumber ans, add;
	char str[120];

	while (scanf("%s", str) && strcmp(str, "0")) {
		add.input(str);
		ans = ans+add;
	}

	ans.output();
	printf("\n");
}


<input type="button" value="check it" onclick="sendRequest();" /> 点击提示缺少对象

03-19
<input type="button" value="check it" onclick="sendRequest();" /> [color=red]点击后提示缺少对象什么原因[/color]<script language=javascript"> var XMLHttpReq; var url=null; var type=null; //创建XMLHttpRequest对象 function createXMLHttpRequest() { if(window.XMLHttpRequest) { //Mozilla 浏览器 XMLHttpReq = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE浏览器 try { XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } } //发送请求函数 function sendRequest() { createXMLHttpRequest(); var url = "/GetnameInfo"; XMLHttpReq.open("GET", url, true); XMLHttpReq.onreadystatechange = getYg_name;//指定响应函数 XMLHttpReq.send(null); // 发送请求 } // 处理返回信息函数 function getYg_name() { if (XMLHttpReq.readyState == 4) { // 判断对象状态 if (XMLHttpReq.status == 200) { // 信息已经成功返回,开始处理信息 var count = XMLHttpReq.responseXML.getElementsByTagName("count")[0].firstChild.nodeValue; for(var i=0;i<count;i++) { var name = XMLHttpReq.responseXML.getElementsByTagName("name")[i].firstChild.nodeValue; var ygid=XMLHttpReq.responseXML.getElementsByTagName("ygid")[i].firstChild.nodeValue; var op = new Option(name[i].childNodes[i].nodeValue,ygid[i].childNodes[0].nodeValue); selectObj.options.add(op); } } } } else { //页面不正常 window.alert("您所请求的页面有异常。"); } } } function nameinfo() { this.options[selectedIndex].text } </script> <body > <table bgcolor="#F1E1FF" width="100%" height="5%"> <tr> <td> <center> <font size="12" color="RED">员工基本信息</font> </center> </td> </tr> </table> <form name="form1"> <table> <tr> <td bgcolor="#ACD6FF"> <font size="12">部门</font> </td> <td id='tdname'> <font size="6">姓 名</font> <select name="sbox" id="selectid" style="width: 150px" onchange="nameinfo()" /> <input type="text" id="tx1" value="" name="tx1" /> </td> </tr> <tr> <td id="td1"> <br> <input type="button" id="but1" value="开发部" onclick="sendRequest();" style="width: 120px; height: 30px; background-Color: #9cc5f8"> <br> <input type="button" id="but2" value="人事部" style="width: 120px; height: 30px; background-Color: #9cc5f8"> <br> <input type="button" id="but3" value="财务部" style="width: 120px; height: 30px; background-Color: #9cc5f8"> <br> <input type="button" id="but4" value="业务部" style="width: 120px; height: 30px; background-Color: #9cc5f8"> </td> <td></td> </tr> </table> </form> </body>
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值