第二次作业
薄弱点:字符数组的字符串处理函数不能清楚的记得有哪几个,结构体,共用体和枚举类型这一块的学习还不够透彻。比如在做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语句重新输出,去掉空格。