高级语言程序设计第六次作业
这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/gjyycx?filter=homework
这个作业要求在哪里:https://edu.cnblogs.com/campus/fzu/gjyycx/homework/14585
学号:102500308
姓名:郭心悦
一、编程作业内容
(1)设计一个按值传递和按地址传递呈现不同效果的程序

思考:二者存在大差别,按值传递形参的赋值不影响最终输出实参的值,形参只是实参的临时副本

(2)编写函数fun(int m, int *k, int xx[]),将小于整数m的非素数存入xx数组中,个数由k返回。


思考:c语言只有一个返回值,所以*k可以储存大量的值
(3)编写函数,将长度为n的字符串从第m个字符开始的全部字符复制成另一个字符串。


思考:或许m已经大于n了?所以需要先取模再进行计算()
(4)编写函数用冒泡法将数组按从小到大的顺序排列。


思考:使用冒泡法的for循环时需要注意循环到-1结束,防止取不到的情况发生
(5)将n个整数按输入顺序的逆序排列,要求应用带指针参数的函数实现。


取地址符推进还是很好用的()
(6)写一个函数打印arr数组的内容,不使用数组下标,使用指针。


(7)编写程序,分别找出多个n×m数组的最大值、最小值,并输出两个值的下标。


(8)判断上三角矩阵。上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。本题要求编写程序,判断一个给定的方阵是否上三角矩阵。



(9)给定一个按升序排列的二维数组,编写一个函数来判断目标值是否存在于数组中。数组是一个m x n的矩阵,可使用算法快速查询。

找到后可以直接结束,加速程序运行时间,更加便捷
(10)编写一个函数,输入一个整数,将其分解为两个质数之和。提示:函数可以声明为int split(int n, int *a, int *b)。n作为传入参数,a和b作为传出参数。若无法分解返回0,可以分解则返回1。




思考:写的时候以为所有的数都可以拆成两个素数之和,没有考虑拆不了的情况出现,导致没有输出
后面发现本身就是素数的数无法再拆成两个素数之和
(11) 编写函数void shift(char* s, int n),请原地将字符串s循环左移n次。例如,字符串“hello”左移3次得到“lohel”。


(12)写一个程序读入一个二维整型数组并判断它是否为魔方矩阵。在魔方阵中,所有的行、列和对角线都拥有相同的和。




反思:每一个count使用完之后需要立即count++,否则会不够规范程序出错
(13)利用指针,判断两个字符串是否相等。忽略大小写。例如,输入 “hello”和”hELlO”,认为它们是相等的。返回值:1表示相等。0表示不同)。


注意:大小写之间的ASCII值相差32而不是26
(14)定义一个一维数组和二维数组,按顺序打印出数组中每个元素的地址。


(15)设计一个分别使用数组名和指针引用数组元素的程序。


二、总结和思考
学习巩固了数组的储存,指针的地址指向等等

浙公网安备 33010602011771号