高级语言程序设计课程第七次个人作业
**高级语言程序设计课程第七次个人作业**
-
这个作业属于哪个课程:
https://edu.cnblogs.com/campus/fzu/2024C -
这个作业要求在哪里:
https://edu.cnblogs.com/campus/fzu/2024C/homework/13304 -
学号:102400108
-
姓名:王馨怡
作业内容: -
编写并运行博客园的八道题。
001
题目:定义一个二维数组和指向该数组的指针,分别以数组下标和指针的形式引用数组各个元素进行赋值与输出。
问题:感觉代码没什么问题,但就是用指针的时候输出不了
解决:(怎么可能没有问题),在第二个for循环中,我循环条件写成了j<n,将其改为正确的 j<m, 问题解决。
002
题目:构造螺旋方阵。对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。
输入格式:
输入在一行中给出一个正整数N(<10)。
输出格式:
输出N×N的螺旋方阵。每行N个数字,每个数字占3位。
输入样例:
5
输出样例:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
问题:没有思路
解决:先在网站上查找写法和知识点,然后才自己摸索写出来的
003
题目:7门课程的成绩分别存放在score[n][1]、score[n][2]、...、score[n][7]中,第0列用来存放总成绩。请编写一个函数实现计算成绩表score中每一个学生7门课程的总成绩,并将总成绩存放在该学生的第0列中。请在main函数中构造数据测试你写的函数。
问题:一开始打印目录的时候我是直接用空格间隔每个词语的,发现怎么调整都对不好
解决:还是把每个词语当作字符串,然后用“%7s”直接输出,会方便一些,也更美观。
004
题目:将以下定义的含义写出来。
a)int a; b)int a; c)int **a; d)int a[10]; e)int (a)[10];
问题:无
解决:无
005
题目:给定一个二维数组,使用指针把数组中的数字复制到另一个数组中相同的位置。
问题:无
解决:无
006
题目:请编写一个函数,接受一个字符串指针作为参数,并返回该字符串的长度,不包括字符串结尾的空字符。
问题:本来没有定义字符数组,只是想直接用char ch实现输入,发现根本输入不了
解决:看书,突然想起来我定义 ch 本身就只是一个字符,当然错误。将其改为字符数组,问题解决。
007
题目:输出以下内容,并解释每一个输出内容的含义。
int a[3][4] = {0};
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(a[0][0]));
printf("%d\n",sizeof(a[0]));
printf("%d\n",sizeof(a[0]+1));
printf("%d\n",sizeof((a[0]+1)));
printf("%d\n",sizeof(a+1));
printf("%d\n",sizeof((a+1)));
printf("%d\n",sizeof(&a[0]+1));
printf("%d\n",sizeof((&a[0]+1)));
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(a[3]));
问题:对于sizeof(a[0]+1)、sizeof(a+1)、sizeof(&a[0]+1)、sizeof(*(&a[0]+1))\sizeof(a[3])的大小不理解
解决:****上网查找资料,理解了代码,含义如下图
008
题目:键盘输入一个长度为len(1 <= len < 30)的字符串,再输入一个正整数 m(1 <= m <= len),将此字符串中从第 m 个字符开始的剩余全部字符复制成为另一个字符串,并将这个新字符串输出。要求用指针处理字符串。
问题:没有输出
解决:发现是自己函数声明写错了,写成了 char *len。改写成 char *ch,问题解决
总结思考:
1.我发现这次的练习中,我犯了好几次低级错误,都是将某一变量名写成了另一个变量名,从而程序无法输出。这需要注意!!!
2.对于函数传入一维数组和函数传入二维数组不是很理解,现在写对了两个例子,需要自己加深理解。
3.对于书本知识不是特别清晰,特别是第10章,还要继续研读书本。
4.对于矩阵的转置、乘法....螺旋矩阵等特殊矩阵的写法还不是很清晰,甚至不会。我觉得我应该上网查询知识点,掌握之后再尝试自己写此类代码。
5.对于第七题,我还是不太理解啥时候表示指针,啥时候表示一行,啥时候表示元素值。我还得再揣摩一下,实在不行再问问老师,看看网课。