小程序:冒泡排序与日期计算

需积分: 7 0 下载量 64 浏览量 更新于2024-09-11 收藏 44KB DOC 举报
"小程序包含学习常用的函数,如冒泡排序、闰年判断及天数计算、单词排序和句子单词提取。" 这篇资源介绍了一个小程序,它整合了多种常用的功能,适用于学习和实践编程技巧。以下是这些功能的详细说明: 1. 冒泡排序法:这是一种基础的排序算法,通过不断地比较相邻元素并交换位置,使得较大的元素逐渐“浮”到数组的末尾。在代码中,使用两个嵌套循环来实现这个过程。外层循环控制排序的轮数,内层循环则负责每一轮中的比较和交换。`LEN`代表数组的长度,`sz`是待排序的数组。 ```cpp for(int k = 1; k <= LEN; k++){ for(int i = 0; i < LEN - k; i++){ if(sz[i] > sz[i + 1]){ int e = sz[i + 1]; sz[i + 1] = sz[i]; sz[i] = e; } } } ``` 2. 闰年与天数计算(调用函数):这里有两个函数,`isRunNian()`用于判断是否为闰年,`DiJiTian()`用于计算给定日期在当年中的第几天。`isRunNian()`根据闰年的规则,即能被400整除或者能被4整除但不能被100整除的年份是闰年。`DiJiTian()`通过遍历月份累加天数,同时考虑2月的天数,根据闰年与否进行调整。 ```cpp int isRunNian(int year){ int result; if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)){ result = 1; }else{ result = 0; } return result; } int DiJiTian(int year, int month, int day){ int result = 0; for(int i = 1; i < month; i++){ // ... (略) } result += day; return result; } ``` 3. 单词排序:该功能用于对一个字符串数组按照字典顺序进行排序。使用冒泡排序算法,但这次比较的是字符串而不是数值。`strcmp()`函数用于比较两个字符串,如果第一个字符串大于第二个,则交换它们的位置。 ```cpp for(int k = 1; k <= n; k++){ for(int r = 0; r < n - k; r++){ char word[101]; if(strcmp(danci[r], danci[r + 1]) > 0){ strcpy(word, danci[r]); strcpy(danci[r], danci[r + 1]); strcpy(danci[r + 1], word); } } } ``` 4. 句子中提取单词:这个功能用于从输入的句子中提取出单词,存储到二维字符数组`danci`中。`gets()`函数用于读取整个句子,然后通过遍历字符串,当遇到空格或结束符时,将单词存入数组。 ```cpp char juzi[NUM * LEN]; char danci[NUM][LEN]; int i, k, index; gets(juzi); index = 0; for(i = 0;; i++){ for(k = 0;;){ // ... (略) } } ``` 这个小程序为学习者提供了一个集成了多种基础功能的实践平台,有助于理解和掌握基本的算法和数据处理技巧。