第二次博客作业
---恢复内容开始---
1 目前自己学习中存在的薄弱的知识点具体有哪些?每个薄弱的知识点都是如何获知的,每个薄弱的知识点需要列举具体的例子说明。(5分)
(1)如何用指针实现将储存在数组中的长的字符串复制到短的字符串中。如:char a[20]="helloworld",b[20]="hello",*p=a,*q=b;for(;*p!='\0';)
{*q=*p;p++;q++;}中,只能将hello复制到b数组中,不能全部复制,怎样才能在使用指针的前提下全部复制。
(2)**p的含义和用法还是不太懂,在数组,*p,**p之间的正确转换和引用不太懂。如:a[10],*p,**q,为什么可以用p[],p[][],q[][]去表示a数组的元素。
(3)函数返回值的处理。如:a[20][20],*p,在函数中后面用for语句使*p=a[i][j];无法主函数中用cout<<p;将p指向的数组输出。
2 从第五章函数到第七章数组的函数题和编程题(主要是在PTA)中选出至少一道你觉得比较有挑战的题(已解决且不是奇奇的题)。写出解题报告包括:(1)题目大意;(2)解题思路;(3)代码思路,比如画出流程图;(4)核心技术总结;(5)解题过程中存在的问题,以及如何得到解决的。(5分)
题目大意:打印沙漏
解题思路:先利用求和公式得出最长一行的符号个数,然后从上而下先输出上部分,其中运用行,列下标规律得到输出空格的位置,最后
类似地输出下半部分。
代码思路:#include<iostream>
using namespace std;
int main()
{
int m=1,n,i,j,a,d;
char c;
cin>>n>>c;
while(((m+1)*(m+1)/2-1)<=n)
m+=2;
a=m-2;
d=n-((a+1)*(a+1)/2-1);
for(i=1;i<=a/2;i++)
{
for(j=1;j<=a;j++)
{
if(j>=i&&j<=a+1-i)
cout<<c;
else if(j<i)
cout<<' ';
}
cout<<endl;
}
for(i=a/2+1;i<=a;i++)
{
for(j=1;j<=a;j++)
{
if(j>=a-i+1&&j<=i)
cout<<c;
else if(j<a-i+1)
cout<<' ';
}
cout<<endl;
}
cout<<d;
return 0;
}
核心技术:判断输出空格的算法,把沙漏分为两部分输出
存在问题:找不到输出空格的规律
解决方法:询问同学。
---恢复内容结束---
1 目前自己学习中存在的薄弱的知识点具体有哪些?每个薄弱的知识点都是如何获知的,每个薄弱的知识点需要列举具体的例子说明。(5分)
(1)如何用指针实现将储存在数组中的长的字符串复制到短的字符串中。如:char a[20]="helloworld",b[20]="hello",*p=a,*q=b;for(;*p!='\0';)
{*q=*p;p++;q++;}中,只能将hello复制到b数组中,不能全部复制,怎样才能在使用指针的前提下全部复制。
(2)**p的含义和用法还是不太懂,在数组,*p,**p之间的正确转换和引用不太懂。如:a[10],*p,**q,为什么可以用p[],p[][],q[][]去表示a数组的元素。
(3)函数返回值的处理。如:a[20][20],*p,在函数中后面用for语句使*p=a[i][j];无法主函数中用cout<<p;将p指向的数组输出。
2 从第五章函数到第七章数组的函数题和编程题(主要是在PTA)中选出至少一道你觉得比较有挑战的题(已解决且不是奇奇的题)。写出解题报告包括:(1)题目大意;(2)解题思路;(3)代码思路,比如画出流程图;(4)核心技术总结;(5)解题过程中存在的问题,以及如何得到解决的。(5分)
题目大意:打印沙漏
解题思路:先利用求和公式得出最长一行的符号个数,然后从上而下先输出上部分,其中运用行,列下标规律得到输出空格的位置,最后
类似地输出下半部分。
代码思路:c
核心技术:
存在问题:
解决方法: