第二次作业

薄弱点:字符数组的字符串处理函数不能清楚的记得有哪几个,结构体,共用体和枚举类型这一块的学习还不够透彻。比如在做PTAcpp8的编程题时,就因为结构体使用不熟练等问题做了很长时间。而且还有一些基础理论方面的知识掌握不透彻,就像中段考时客观题错了一半。

 

Cpp7 第二道编程题。

题目要求输入A,N两个数,计算,S=A+AA+AAA……..+A…….A(N个A),的求和。

思路是设置一个数组用来存放S的每一位数。同时数组的赋值要从后往前赋值,设置两个数b,c,t并赋初值,b用来做新数组的下标,c用作中间值。通过t=i*A+c,R[b]=t%10,c=t/10和后面的if语句对数组R[]进行赋值,这样是代码更加简洁明了,更高效地运行。最主要的难点就是对新数组R[]的赋值,t=i*A+c,R[b]=t%10,c=t/10这三个语句是解题的关键所在。

#include<iostream>

using namespace std;

int main()

{

       int A,N;

       cin>>A>>N;

       int R[N+2];

       R[1]=0;

       int b=1,c=0;

       for(int i=N;i>=1;i--)

       {

              int t=i*A+c;

              R[b]=t%10;

              c=t/10;

              if(i>1)

              b++;

              else if(c)

              R[++b]=c;

       }

       for(int i=b;i>=1;i--)

       cout<<R[i];

       return 0;

}

存在的问题:核心代码的那部分想了很久才想出来这种高效的方法,同时题目中有一个隐藏的条件就是输出末尾不能有空格,最后只能重新设置一个for语句重新输出,去掉空格。

posted @ 2018-12-06 23:04  不高冷的小红花  阅读(115)  评论(0编辑  收藏  举报