71 加法器(进阶题)----东华大学2020计算机考研复试oj上机题

问题描述 :
明明读小学的时候,不喜欢数学,尤其是不喜欢做加法,一做加法就头疼,这样导致明明长大后数学依然不好,而且对数字产生了抵触心理。可是不巧的是,明明进了一家会计公司,每天都要计算很多数据,在这些计算中加法运算居多,而且这些加法不只是是两个数之间的加法,更有多个数的连加。 例如:1+2+3的正确答案是6。 这给明明造成了很大的麻烦。你是明明的好朋友,看到明明如此痛苦,就产生了帮助明明的想法。你想帮明明写一个程序,这个程序能计算一串正整数的连加,从而帮助明明摆脱数字的困扰。 明明的问题可以归结为:给你一串正整数的连加表达式,完成这个表达式的计算。
输入说明 :
你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据,每组测试数据仅有一行,每行有一个表达式,表达式由正整数和加号(“+”)组成,不含其他任何符号,表达式中的数字小于等于30000,表达式的长度不超过1000,具体格式见输入样例。每组测试数据与其后一组测试数据之间没有任何空行,第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。
输出说明 :
对于每一组测试数据,你写的程序要求计算出一组相应的运算结果,并将每组运算结果作为你所写程序的输出数据依次写入到标准输出设备中。每组运算结果为一个整数,即表达式的值。每组运算结果单独形成一行数据,其行首和行尾都没有任何空格,每组运算结果与其后一组运算结果之间没有任何空行,第一组运算结果前面以及最后一组运算结果后面也都没有任何空行。 注:通常,显示屏为标准输出设备。
输入范例 :
1+2+3
5+111
输出范例 :
6
116

#include 
#include 

int main() {
	char str[1000];
	int len,i,flag,num,sum;
	while(gets(str) != NULL) {
		flag=1,sum=0;
		len = strlen(str);
		for(i=0;i<len;i++) {
			if(str[i] != '+') {
				if(flag==1) {  //flag用于标记是否是数字的第一位
					num=str[i]-'0'; 
					flag=0;
				} else {
					num = num*10 +(str[i]-'0');  //数字位数大于一位
				}
			} else {
				flag=1;  //遇到'+',则flag=1,因下一位是数字的第一位
				sum += num;
			}
		}
		printf("%d\n",sum+num);  //记住加num,字符串最后一个数
	}
	return 0;
}

如果感觉对你有帮助,希望你点赞支持 。如有问题,欢迎评论或者关注我的公众号(程序媛Ya),可获得各种编程技术资源。谢谢
71 加法器(进阶题)----东华大学2020计算机考研复试oj上机题_第1张图片

你可能感兴趣的:(东华复试,考研,算法)