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