第二次作业

随着C++的越发深入的学习,难度越发加大,而我比较薄弱的点主要是结构体和现在学习的指针的应用。结构体类型中,我一直不能正确地应用,在各类数据多起来的时候,就会乱了阵脚。后来在我对结构体PPT、书本及后期作业的仔细反复查看后,才对结构体有了较为熟练度应用。而我们现在在学的指针,因为要点很多,让我在“&”和“*”之间不能分清。并且指针类型使用时需要的严苛的格式条件,让我有时摸不到头脑。更不用说后来加入的用指针表示字符串、数组了。这些我不懂的地方时刻提醒着我,让我抓紧时间去复习,去弄请我现在还不懂的地方。

在数组的学习过程中当然也有颇具挑战性的题目。就像cpp7编程题第二题:给定某数字A(1A9)以及非负整数N(0N100000),求数列之和S=A+AA+AAA++AAA(N个A)。例如A=1, N=3时,S=1+11+111=123。这道题目要注意a[i]的赋值不能由小到大,而是要从大到小,这样就能方便“%”在数组中的使用。现算法如下:1.定义并输出A、N;2.定义并赋值a[i],a[i]== (N - i)*A; 3.当a[i]!=0时,将A用a[i]%10表示,再用叠加法,最终输出结果。代码如下:

#include<iostream>
using namespace std;
int a[100000] = {0};
int main()
{
 int A, N;
 int i, j;
 cin >> A >> N;
 if(N != 0)
 {
  for(i = 0;i<N; i++)
  {
   a[i] = (N - i)*A;
  }
  while(a[j] != 0)
  {
   A = a[j] % 10;
   a[j + 1]= a[j] / 10 + a[j + 1];
   a[j] = A;
   j++;
  }
  for( int i = j - 1;i>=0;i-- )
  {
   cout << a[i];
  }
 }
 else cout<< "0";
 return 0;
}

这道题主要是循环与数组的运用,要求思路清晰,解决之前找到相应的流程和算法。

存在的问题主要是a[i]的赋值是要从高位到低位,这一点时我在两种赋值中逐渐找到的真正规律。其次,本体要求最后输出的数字后无空格,这点一开始我没关注,最后显示结构错误,后来我用循环和if语句解决了这个问题。

学无止境,在C++的道路上我还有很长一段路要走。

 

posted @ 2018-12-05 11:01  Backey  阅读(184)  评论(0编辑  收藏  举报