课程主页在:http://blog.youkuaiyun.com/sxhelijian/article/details/11890759
【项目1-体会函数参数传递】
设计一个程序,输入3个整数,将其按从大到小的顺序输出,要求
(1)排序功能通过函数实现
(2)写出两个版本的函数,一个采用传地址值的方法,另一个采用引用类型作参数
参考解答在: http://blog.youkuaiyun.com/sxhelijian/article/details/8362289(2012级第17周项目1)【项目2-用指针玩字符串】指针是神奇的,指向整型的指针int*p1,可以操作整型数组inta[];指向字符型的指针char*p2,可以操作字符数组(字符串)charstr[];指向指针的指针可以操作二维数组。更灵活的是,在函数的传递中,指针、数组名在一定程度上可以互换。
本项目试图通过编制操作字符串的函数,实现字符串的操作。
请编制函数,其功能是对字符串的进行操作(任务1作为示例给出,3、7必做,其余选做)。
序 | 功能 | 用数组名作形参 | 用指针作形参 |
1 | 字符串str1和str2连接,连接后的结果存放到str1中 | voidastrcat(charstr1[],constcharstr2[]) | voidpstrcat(char*str1,constchar*str2) |
2 | 去除字符串str中的特定字符c(如空格),结果仍保存到原字符串中 | voidadelchar(charstr[],constcharc) | voidpdelchar(char*str,constcharc) |
3 | 求字符串str的长度并返回 | intastrlen(charstr[]) | intpstrlen(char*str) |
4 | 统计句子str中单词的个数 | intawordnum(charstr[]) | intpwordnum(char*str) |
5 | 去除句子中第一个单词前的空格 | voidatrim(charstr[]) | voidptrim(char*str) |
6 | 去除句子中所有多余的空格 | voidaalltrim(charstr[]) | voidpalltrim(charstr[]) |
7 | 比较两个字符串,返回值同strcmp() | intastrcmp(constcharstr1[],constcharstr2[]) | intpstrcmp(constchar*str1,constchar*str2) |
【项目3-数组的排序】按给定部分程序的要求,用指向数组的指针变量作为形式参数编写函数,完成排序。重点体会:(1)排序算法,可以是冒泡,也可以是选择;(2)用指向数组的指针变量作为形式参数,用数组名(即数组的地址)作为实际参数,函数中对于形参的改变实质上也就是对实参对应内存单元的改变;(3)形式参数中不指定数组大小,实际数组的大小也一并作为参数传递。
参考解答在:http://blog.youkuaiyun.com/sxhelijian/article/details/8362361(2012级第17周项目5)
【项目4】数组用于进制转换:编一个程序,其中调用函数voidtran(intn,intd)用于将十进制数n转换为d进制数输出,并输出d进制数中最大位值是多少,在第几位。d的取值在2-32之间,数制d超过10时,依次用ABC...代表其基本符号,如对17进制而言,G代表其最大符号,对应十进制的16。
提示:用递归函数完成十进制向d进制的转换是需要掌握的,但对于本题而言,由于要在转换后的各位数上进行查找,建议用数组存放转换后的各位数值。右边是运行示例:
【项目5:穷举法解决组合问题】本项目只需要用到第3章控制结构部分。临近期末,通过这组题目,再用“循环”活动活动思维。
具体内容请看2012级第11周项目2,链接:http://blog.youkuaiyun.com/sxhelijian/article/details/8141924
参考解答在:(1)百钱百鸡 (2)换分币 (3)年龄几何 (4)—三色球 (5)委派任务 (6)谁是小偷? (7)都要学C (8)软件比拼 (9)污损的数字