#include <stdio.h> #include <string.h> int main() { int i = 0, j = 0, len; char str[10], res[10]; scanf("%s", str); len = strlen(str); for(i = len - 1; i >= 0; i--) { res[j] = str[i]; j++; } res[j] = '\0'; printf("%s\n", res); return 0; }
#include <stdio.h> int max(int a, int b) { return a > b ? a : b; } int main() { int (*fun)(); int a = 3, b = 2; fun = &max; printf("%d\n", fun(a, b)); return 0; }
计数排序法是对一个待排序的数组进行排序,并将排序结果放到另一个新的数组中。计数排序算法针对待排序数组中的每个记录,扫描待排序的数组一趟,统计待排序数组中有多少个记录的值比该记录的值小。假设针对某一个记录,统计出的计数值为n,那么,这个记录在新的有序数组中的合适的存放位置即为n。
/* * 功能:计数排序 */ #include <iostream> using namespace std; //找出数组中最大值 int max(int *array,int length) { int maxNum=array[0]; for(int i=1;i<length;i++) { if(array[i]>maxNum) maxNum=array[i]; } return maxNum; } //对元素值介于0~maxNum之间的数组进行计数排序 //算法思路:计算数组中小于某个元素的元素个数计为i,那么该元素在排好序的结果中的位置即为i+1 int *CountingSort(int *array,int length) { int maxNum=max(array,length)+1; //数组cArray为计数数组,数组大小为maxNum+1 //记录数组中每个元素在该数组中出现的次数 //因此数组大小应为数组中最大元素加1(考虑数组中可能包含0值) int *cArray=new int[maxNum]; //数组bArray为结果数组 int *bArray=new int[length]; //计数数组初始化 for(int i=0;i<maxNum;i++) { cArray[i]=0; } //对要排序的数组进行遍历,记录数组中每个元素在该数组中出现的次数 for(int j=0;j<length;j++) { //cArray[i]包含等于i的元素个数 cArray[array[j]]++; } //遍历数组cArray,得到数组中小于等于ele(0≤ele≤maxNum)的元素个数,并存入cArray[ele]中 for(i=1;i<maxNum;i++) { //cArray[i]包含小于或等于i的元素个数 cArray[i]=cArray[i]+cArray[i-1]; } //从数组最后一个元素开始遍历,将array[j]放到正确位置 //之所以要从数组最后一个元素开始遍历是为了保证排序算法是稳定的 for(j=length-1;j>=0;j--) { //由cArray[array[j]]得到元素array[j]在结果集中是第几个元素,并将其放入bArray结果数组中 bArray[cArray[array[j]]-1]=array[j]; //考虑到待排序数组中存在值相同的元素,所以每当将一个值array[j]放入bArray中时 //都要减小cArray[array[j]]的值 cArray[array[j]]--; } //返回结果数组 return bArray; } int main() { int array[]={10,9,8,7,6,5,4,3,2,1,0}; int *bArray=CountingSort(array,sizeof(array)/sizeof(*array)); for(int j=0;j<sizeof(array)/sizeof(*array);j++) { cout<<bArray[j]<<endl; } return 0; }
list: 不带参数,将接着上一次 list 命令的,输出下边的内容。