高级语言程序设计课程第七次个人作业
这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/gjyycx
这个作业要求在哪里:https://edu.cnblogs.com/campus/fzu/gjyycx/homework/15587
学号:102400102
姓名:方韵希
(1)定义一个二维数组和指向该数组的指针,分别以数组下标和指针的形式引用数组各个元素进行赋值与输出。

(2)构造螺旋方阵。对任意给定的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

分别用top,bottom,left,right来标记位置,遍历数组填充数字
(3)7门课程的成绩分别存放在score[n][1]、score[n][2]、...、score[n][7]中,第0列用来存放总成绩。请编写一个函数实现计算成绩表score中每一个学生7门课程的总成绩,并将总成绩存放在该学生的第0列中。请在main函数中构造数据测试你写的函数。

(4)将以下定义的含义写出来。
a)int a; 定义一个整型变量a
b)int a; 定义一个指向整型的指针变量a
c)int **a; 定义一个指向整型指针的指针
d)int a[10]; 定义一个包含10个整型元素的数组
e)int (a)[10]; 定义一个指向包含10个整型元素的数组的指针
(5)给定一个二维数组,使用指针把数组中的数字复制到另一个数组中相同的位置。

(6)请编写一个函数,接受一个字符串指针作为参数,并返回该字符串的长度,不包括字符串结尾的空字符。

(7)输出以下内容,并解释每一个输出内容的含义。
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]));)

int a[3][4] = {0};
printf("%d\n",sizeof(a)); 输出整个二维数组的大小344字节=48字节
printf("%d\n",sizeof(a[0][0])); a[0][0] 是第一个整型元素,4字节
printf("%d\n",sizeof(a[0])); a[0] 是第一行,一个包含4个int的一维数组,44=16字节
printf("%d\n",sizeof(a[0]+1)); a[0] + 1 是指针运算,指向a[0][1],指针大小在64位系统中为8字节
printf("%d\n",sizeof((a[0]+1))); (a[0] + 1) 解引用得到a[0][1],为整型,4字节
printf("%d\n",sizeof(a+1)); a + 1 是指针运算,指向第二行,8字节
printf("%d\n",sizeof((a+1))); (a + 1) 解引用得到第二行,44=16字节
printf("%d\n",sizeof(&a[0]+1)); &a[0] 是取第一行的地址,&a[0] + 1 指向第二行,8字节
printf("%d\n",sizeof(*(&a[0]+1))); (&a[0] + 1) 解引用得到第二行,16字节
printf("%d\n",sizeof(a)); a 解引用得到第一行,16字节
printf("%d\n",sizeof(a[3]));)a[3] 是数组的第四行,44=16字节
(8)键盘输入一个长度为len(1 <= len < 30)的字符串,再输入一个正整数 m(1 <= m <= len),将此字符串中从第 m 个字符开始的剩余全部字符复制成为另一个字符串,并将这个新字符串输出。要求用指针处理字符串。

总结:掌握了指向数组的指针,但用指针解题的思路还不是很清晰
浙公网安备 33010602011771号