A+B 类型小结

    A+B问题说简单也简单,说麻烦确实也不简单,这里就我的一些理解做一些介绍,由于能力问题可能做得并不全面,也可能会有错误,或者不妥之处,希望各位见谅。

(1)A+B中最简单的就是输入两个数直接输出结果,比如:

#include <stdio.h>
int main()
{
	int a,b;
	while(scanf("%d%d",&a,&b)!=EOF)//实现多组数据输入
	{
		printf("%d\n",a+b);//也可以在定义一个变量,但个人认为这样看起来简洁,
	}
}


这里给出代码,就不多做说明了,相信都看得懂。 那既然这样是无限输入怎么停下来呢,其实也简单,只需改一下while(scanf("%d%d",&a,&b)!=EOF && a!=0 &&b!=0)这是以a,b都为零作为结束标志的,当然也可以用其他,这里其实也可以写成while(scanf("%d%d",&a,&b)!=EOF && a && b)效果是一样的(本人喜欢少写 懒吗得意)所以更喜欢用后者。那么到这里如果要多组数据相信也不是难事了吧!!!(这样为了简单还是加个变量来存和吧!!要根据情况灵活运用吗吐舌头),顺便提一句,程序编写,并没有太多格式要求 很灵活,但最好用大众较认可的 整洁的。使我们程序更能得到认可增加可读性,也为以后维护方便。(这是闲话了,一旦形成合适自己的风格就坚持 不要轻易改变  得意你懂得)。进入正题。那么,我们已经可以写出可以停止的了,那么我要求多一点.比如多组数据,多个答案之间要有空格(注意是之间)又该怎么办,,其实也简单,下面看代码然后作解释。

#include <stdio.h>
int main()
{
	int a,b,c,sum=0,i,j;
	while(scanf("%d",&a)!=EOF&&a)//输入一个数表示有多少组数需要计算,以0作为结束标志;
	{
		for(i=0;i<a;i++)
		{
		  scanf("%d",&b);//每组数有b个数要相加;
		  for(j=0;j<b;j++)
		  {
		  	scanf("%d",&c);
		  	sum+=c;//用sum表示数据的和;
		  }  
		  printf("%d\n",sum);
		  if(i<a-1)/*加一个条件判断,加上空行,空格也类似,这样在最后一个答案就不会有多余空行输出了,。那么空格(空行)只有这种写法???怎么可能??种类繁多啊!来举个例子:先定义一个变量 k=b;if(k)printf("\n");printf("%d\n",sum,k++);怎样是不是感觉简洁了一些呢!注意一个问题(k++要放后边 不然就要输出k的值了);*/
		  printf("\n");
		  sum=0;//记得在每组数计算完成后 要对sum清零!!!!!这里很好理解 却经常会忘掉!!!!切记;
		}
		
	}
}

先来介绍一下要求吧!如上注释 相信不难看出 先输入一个数a表示有多少组数据要计算,然后每组数有几个数也要告知就用b表示了(其实这是一定要有的,因为没有这个限制,程序就不知道何时结束计算,当然你也可以用前面介绍的方法对其加结束条件,但那样程序看起来就不那么让人舒服)。   

      什么???跳度有点大!!好吧!!那再写个代码然后过度到上边 好吧!!来看代码!

//此题不要求有空格:
#include <stdio.h>
int main()
{
	int a,b,sum=0,i;
	while(scanf("%d",&a)!=EOF&&a)
	{
		for(i=0;i<a;i++)
		{
		  scanf("%d",&b);
		  sum+=b;
		}
		printf("%d\n",sum);
		sum=0;
	}
}



相信都看的懂哈!!!
  好吧!!有没有觉得 哪有不爽!!是啊!!如果我就是不知道有多少数据呢!!怎么办!!给个方法!自己多看看参悟
(对于初学者可能不太好理解,但是没关系,其实也很好理解的<img alt="大笑" src="http://static.blog.csdn.net/xheditor/xheditor_emot/default/laugh.gif" />要死在看不出来 就先放一下,以后学了再看就会恍悟)这里用了与前面不同的c++。还是先看代码:
#include <iostream>
#include <string>
#include <sstream>//调用stringstream
using namespace std;

int main()
{
	string line;
	while(getline(cin,line))//用getline读取输入的 字符串流
	{
		int sum = 0,x;
		stringstream ss(line);//创建新的字符串流 ss 来存储输入的流;
		while(ss >> x)//读取字符串流中的 整数x
		sum += x;//进行加和
		cout << sum << "\n";//输出结果;
	}
	return 0;
}

这是用c++写的,你还没学c++,,,,,怎么这样!!!好吧!!没关系啦!!等学过了,再来看也是很好的嘛!!这里就不做什么介绍了,!你以为我不会发火!!好吧!你蛮有眼光的!!总有一天我们会懂得得意!!此题是说 输入一行(是一行)以空格隔开的数(空格隔开啊!!)进行加和!而事先 并不知道有多少数据。。然后输出。满足你了吧!!!大笑

   啊!!!还没有!!你是要考我么!!遇到数较大怎么办???那就用long long得意(注意输入输出 用lld)!!神马!这也不够!!那怎么办可怜!!对了 不是还有大数呢么!!大数 就是很大的数啊!!

先看代码好吗!!来 一起学习:

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


char a[1110000];
char b[1110000];
int aa[1110000];
int bb[1110000];

int max(int x,int y)//求两者中大的数
{
    int m;
    if(x>=y)
    {
        m=x;
    }
    else
    {
        m=y;
    }
    return m;
}

int main()
{
    int i,j,k,n;
    while (scanf("%d",&n)!=EOF)
    {
        for(k=1;k<=n;k++)
        {
        scanf("%s %s",a,b);
        memset(aa,0,sizeof(aa));
        memset(bb,0,sizeof(bb));//使用前先清空 是个好习惯
        for(j=0,i=strlen(a)-1;i>=0;i--,j++)
        aa[j]=a[i]-'0';//将字符型转为数字,同时倒叙;
        for(j=0,i=strlen(b)-1;i>=0;i--,j++)
        bb[j]=b[i]-'0';
        for(i=0;i<max(strlen(a),strlen(b));i++)//需要将所有数加上 故取长的那一个作为依据
        {
            aa[i]=aa[i]+bb[i];将和的结果放在aa里;
            if(aa[i]>=10)//判断是否需要进位;
            {
                aa[i]%=10;
                aa[i+1]+=1;
            }
        }
            printf("Case %d:\n",k);
            printf("%s + %s = ",a,b);
        if(aa[max(strlen(a),strlen(b))]==0)
        for(i=max(strlen(a),strlen(b))-1;i>=0;i--)
        {
        
            printf("%d",aa[i]);
        }
        else
        for(i=max(strlen(a),strlen(b));i>=0;i--)
        {
        
            printf("%d",aa[i]);//依次输出;
        }
        printf("\n");
        if(k<n)
        printf("\n");
        }
    }
}


好长啊!!有木有???慢慢看不急啊!!!其实这是跟我们平时手算差不多的步骤。大数减法也一样,乘除发 思想差不多这里就不做介绍了《,大家有兴趣可以自己查 学习!!(好吧!!是因为我还不太会,委屈可这不是我的错啊!人家还没学会吗大哭),!!!!!等等 这是要完了吗!!好像是完了耶!!可为什么我觉得还有!!!

       就是啊!!!如果加上进制转化怎样!!简单么??看一下:

#include  <stdio.h>
int main()
{
	int a,b;
	while(scanf("%x %x",&a,&b)!=EOF)
	printf("%d\n",a+b);
	return 0;
}


不难吧!!大笑都说了!!!这里要注意的问题是进制转化的强制转化。。(虽然好像那么暴力,,,有时候简单粗暴也是好方法!不是么害羞人生亦如此)。

到这里呢!!A+B总算是接近尾声了!!!其实写代码对我们很有好处,,学习任何一样东西都差不多,,他会影响你的人生,即使你并不知道,但你不能否认,这会使你形成特有的思维方式,对你的生活方式 处世态度都有潜在影响!!对吧!!所以养成良好习惯!认真做每一件事 不知不觉中你会改变!!虽然你并未察觉(你可以过一段时间回顾一下仔细想想会发现变化的 或多或少)。人生是不停留 一路向前走!!我们能做的就是努力过好每一天 尽量不留遗憾!!!回头 在人生末尾!!将一生做个总结!!那要怎么做呢!!看一下吧!!!大笑

#include <stdio.h>
int main()
{
    int n,i;
    while(scanf("%d",&n)!=EOF)
    {
        int sum=0;
        for(i=1;i<=n;i++)
        sum+=i;
        printf("%d\n\n",sum);
    }
    return 0;
}
//1+。。。。。。。+n=?;


惊恐怎么突然。。。。。。

       偷笑是啊!!这里还有一个问题没提到呢!!就是“总结人生”啊!!!从1加到你想要的数;
有没有 感觉被骗了!!这才是人生啊!!感觉要结束了!!其实只要发现 是不是还有什么在呢!!还有可以为之努力。。可以做下去之事,,所以不要让自己放松!你永远不知道未来对你意味着什么!要时刻准备着啊!!     别紧张了!这下真的没了!!生气偷笑,至少我还没想到!!这里的问题很多不仅在此处有用!放到其他地方也是能用 不 是很有用的!!数组是很有用的!!格式输出很重要!!这些 要充分理解!才可以真的 算过关了啊!!

      我也是刚接触acm 学习中 应该时常总结一下!这样 以后可以看!知道当时的想法!!及心境!!这就像日记!是饱含感情的!!如果你看了我的。。是我们的缘分。。谢谢你!!同时也祝贺你 和我一起将踏上“不归路”,。继续努力 继续坚持!!当坚持不下去了 想想当初为何选择!!莫忘初心  看看我的分享!也是激励自己!让我们一起走下去..走下去 生命的意义就是活下去。。活着的意义就是 走下去 坚持不懈走下去!!!因是第一次写博客!!可能有些地方不合适!!欢迎各位前辈,老师,大神。指出,还有能力有限!!有什么错误 不妥!!欢迎指正!!

     诚望斧正!!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值