本博客内容为中国大学生MOOC国家精品课程《计算机程序设计C++》作业记录,仅供参考,观者忌照搬照抄,欢迎交流批评指正!
(注:由于本人学习时,前八周的作业提交时间已过,因此这八周的作业代码只在自己的编译器上测试运行通过,在课程网站上还未测试,于下学期开课时,再另行测试,如您发现有明显错误,可留言评论)
##第8周编程作业
本周作业为动态数组的使用
#include
using namespace std;
char *a[13] = { "zero","one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten","eleven","twelve"};
char *digitName(int n)
{
return a[n];
}
int main()
{
int n;
cin >> n;
if (n < 0 || n > 12)return 0;
cout << digitName(n);
return 0;
}
//本题注意在gcc编译器上 不能写 char *a =new char[],必须给一个长度
#include
using namespace std;
char *deletespace(char *a)
{
int i = 0, j = 0, n = 0;
//i是记录原字符第一个不为空格字符下标,j是最后一个不为空格字符的下标
//n是原字符指针长度,
while (a[i] == ' ')
{
i++;
}
while (a[n] != '\0')//计算包括#在内的字符长度
{
n++;
}
j = n - 2;//将j定位到#前一位置
while (a[j] == ' ')
{
j--;//找到最后一个不为零的字符
}
int length=j-i+2;
char *d=new char[length];
int k = 0;
for (k = 0; k < j - i + 1; k++)
{
d[k] = a[k + i];
}
d[k] = '#';
d[k + 1] = '\0';
return d;
}
int main()
{
char *a=new char[100];
cin.getline(a, 100);
cout << deletespace(a);
return 0;
}
#include
using namespace std;
int main()
{
int m, n,sum=0;
cin >> m >> n;
int **matrix = new int *[m];//动态申请
for (int i = 0; i < m; i++)
{
matrix[i] = new int[n];
}
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
cin >> matrix[i][j];
sum += matrix[i][j];
}
}
for (int i = 0; i < n; i++)//反序释放
{
delete[]matrix[i];
}
delete[]matrix;
cout << sum;
return 0;
}
#include
using namespace std;
int *new_array(int n)
{
int *a = new int[n];
return a;
}
void init_array(int *p, int n, int c)
{
for (int i = 0; i < n; i++)
p[i] = c;
return;
}
int main()
{
int n, c,i;
cin >> n >> c;
int *a;
a = new_array(n);
init_array(a, n, c);
for (i = 0; i < n-1; i++)
{
cout << a[i]<<' ';
}
cout << a[i];
return 0;
}
#include
using namespace std;
int sumDiagonal(int **a, int n)
{
int sum = 0;
for (int i = 0; i < n; i++)
{
sum += a[i][i];
}
return sum;
}
int main()
{
int n;
cin >> n;
int **matrix = new int *[n];//动态申请
for (int i = 0; i < n; i++)
{
matrix[i] = new int[n];
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cin >> matrix[i][j];
}
}
cout << sumDiagonal(matrix, n);
for (int i = 0; i < n; i++)//反序释放
{
delete[]matrix[i];
}
delete[]matrix;
return 0;
}
#include
using namespace std;
bool judge(int *a, int n)
{
for (int i = 0; i < n; i++)
{
if (a[i] > 255 || a[i] < 0) { return false; }
}
return true;
}
void trans10_2(int &n)
{
int mul = 1, sum = 0;
while (n)
{
sum += mul*(n % 2);
mul *= 10;
n /= 2;
}
n = sum;
return;
}
int main()
{
int a[4];
scanf("%d.%d.%d.%d", &a[0], &a[1], &a[2], &a[3]);
if (!judge(a, 4))
{
printf("data error"); return 0;
}
for (int i = 0; i < 4; i++)
{
trans10_2(a[i]);
printf("%08d", a[i]);
}
return 0;
}
以上为第8周的编程作业。