
C和C++
冰公主
永远对自己的事业充满热情。
永远意志坚定。
展开
-
11-999之间的所有三重回文数字
问题描述:找出11-999之间的所有三重回文数字,所谓三重回文数a就是指a,a的平方,a的立方都是回文数字。分析:1.首先要能判断一个数字是否为回文数字。判断一个字符串是否为回文字符串是简单的,所以我们先把它用itoa()函数变成字符串。注意存储数字的字符串要足够大,放得下立方后的数字。itoa(num, str, 10);itoa()函数有3个参数:第一个参数是要转换的数字,第二...原创 2020-04-20 15:28:58 · 2232 阅读 · 0 评论 -
字符串排序的指针方法和指针数组方法
指针数组是一种灵活的存字符串的方式,使用交换排序思想对字符串进行排序//字符串排序(数组法) void SortStr1(char str[5][9]){ char temp[9]; int i,j; printf("Before sorted:\n"); for(i=0;i<5;i++){ puts(str[i]); } for(i=0;i<4;i++){...原创 2020-04-18 09:47:27 · 2032 阅读 · 0 评论 -
使用指针判断回文字符串
判断回文字符串有多种方法,可以分为使用指针的和使用数组的,在循环比较的结束调件上,有到1/2位置处结束的,有低处位置高于高处位置结束的。下面给出指针写法:int huiwen(char *str){ int flag=1; int len; char *pStart=str;//等价于char *pStart;pStart=str; char *pEnd; len=strlen...原创 2020-04-18 09:44:37 · 5910 阅读 · 2 评论 -
C语言实现字符串拼接的函数
先遍历到目标子串末尾,然后将源字符串复制到目标子串后,并将末尾置\0void myStrcat(char dstStr[],char srcStr[]){ int i,j; for(i=0;dstStr[i];i++); for(j=0;srcStr[j];i++,j++){ dstStr[i]=srcStr[j]; } dstStr[i]='\0';}...原创 2020-04-18 09:35:58 · 4878 阅读 · 0 评论 -
判断子串位置和个数的函数
以每一个字符为起点比较是否为子串,若未达子串末尾就出现不相等的字符,则说明不是子串,结束比较,开始下一次枚举比较;若到达末尾未出现不相等的字符,则返回位置/*果s2不是s1的子串,返回-1如果s2是s1的子串,返回其在s1中第一次出现的位置空串是任何串的子串,且出现位置为0 */ int strStr(char s1[],char s2[]){ int i,j,k; if(s2[...原创 2020-04-18 09:32:20 · 606 阅读 · 0 评论 -
统计一个字符串中单词个数
遍历字符数组,若当前字符不是空格,而前一个字符是空格,则表示有新单词出现 ,计数器加1。当字符为0时表示结束。int CountLetter(char str[]){ int num,i; //当第一个字符为空格或\0时设置num初值为0 num=str[0]!=' '&&str[0]?1:0; //若当前字符不是空格,而前一个字符是空格,则表示有新单词出现 ...原创 2020-04-18 09:21:44 · 2555 阅读 · 0 评论 -
C++/C与Java的区别
Java 是由 C++发展而来的,保留了 C++的大部分内容,其编程方式类似于 C++。但 Java 的句法更清晰、规模更小、更易学。Sun 公司曾对多种程序设计语言进行分析研究,取其精华去其糟粕,最终推出了 Java。Java从根本上解决了C++的固有缺陷,形成了新一代面向对象的程序设计语言(当然了解决问题也是需要代价的)。一、跨平台(C\C++和Java)Java是基于JVM虚拟机的跨...原创 2020-04-17 18:00:17 · 1036 阅读 · 0 评论 -
C语言编写将一个数的各个位分离的算法
本来是想总结一下对一个int型数的操作有关的算法,但是发现有这么一类算法和数的各个数位有关,比如求水仙花数。其实这类算法最主要的就是把一个数的各个位分离。所以就贴上简单易用的最重要的几句算法吧。非递归方式while(p){//p是要分离的数 printf("%2d",p%10); p=p/10; }递归方式void fun(int p){ if(p==0) retu...原创 2020-04-13 10:40:41 · 6231 阅读 · 0 评论 -
排序算法分类及算法
内部排序算法可以分为三类:1.插入排序插入排序的基本思想是:每次将一个待排序的记录按关键字大小插入到前面已排好的子序列中,直到全部记录插入完成。(1)直接插入排序(2)折半插入排序2.交换排序交换是指根据表中两个记录的比较结果来对换者两个记录在表中的位置。(1)冒泡排序(2)快速排序3.选择排序每趟(如第i趟)在后面n-i+1个待排记录中选择最小的一个,作为...原创 2020-04-13 09:29:01 · 179 阅读 · 0 评论 -
C语言实现折半插入排序算法
折半搜索有序子表找到待插入位置,然后移动元素腾出位置并插入//每趟先找到插入位置,然后移动、插入 void InsertSort2(int a[],int n){ int i,j,low,high,mid,k; for(i=1;i<n;i++){//将a[1]~a[n-1]插入到前面已排序列 k=a[i]; low=0; high=i-1; while(low&...原创 2020-04-13 09:05:29 · 1821 阅读 · 1 评论 -
使用C语言实现直接插入排序算法
基本思想:每次将一个待排序的记录按关键字大小插入到前面有序表直到全部记录插入完成void InsertSort(int a[],int n){ int i,j,k; for(i=1;i<n;i++){//将a[1]~a[n-1]插入到前面已排序列 if(a[i]<a[i-1]){//若a[i]小于其前驱,则插入有序表 k=a[i]; for(j=i-1...原创 2020-04-13 09:01:17 · 1170 阅读 · 0 评论 -
使用C语言实现快速排序算法
快速排序属于交换类排序,是对冒泡排序的一种改进。基本思想基于分治法:在待排序表中任取一个元素pivot作为基准,通过一趟排序将排序表划分为两部分,使得大于pivot的元素在一个表中,小于pivot的元素在一个表中,pivot放在最终位置,这是一趟快排。而后分别递归的对两个子表重复上述过程,直至每部分内只有一个元素或空为止,即所有元素放在了其最终位置上。//快速排序:low=0,high...原创 2020-04-13 08:56:43 · 623 阅读 · 0 评论 -
使用C语言实现冒泡排序算法优化
从后往前遍历,相邻两个数比较,若逆序则交换,这样每趟遍历把一个最小的数放到待排序列的第一个位置;下一趟冒泡时,前一趟确定的最小元素不在参加比较,待排序列减少一个元素;另外,当本趟遍历没有元素交换位置时,说明序列已经有序,则结束 。//冒泡排序 void BubbleSort(int a[],int n){ int i,j,temp,flag; for(i=0;i<n-1;i+...原创 2020-04-13 08:37:56 · 768 阅读 · 0 评论 -
使用C语言实现简单选择排序
思想:每趟(如第i趟)从后面n-i+1个待排序元素中选取最小的作为第i个元素,直到n-1趟做完,待排序元素只剩1个。void SelectSort(int a[],int n){ int i,j,min,temp; for(i=0;i<(n-1);i++){ min=i; for(j=i+1;j<n;j++){ if(a[min]>a[j]){ m...原创 2020-04-13 08:35:32 · 311 阅读 · 0 评论 -
求100以内素数的方法(筛选法,穷举法,穷举法优化)
一、基本思想//质数(素数)是指在大于1的自然数中除了1和它本身以外不再有其他因数的自然数。(1)判断一个数n是不是素数,可以用2到(int)sqrt(n)之间的所有整数去除n,看能否整除,如果都不能整除,那么n是素数(慢)(2)筛法求素数:把2到n的多有数都存到数组里,从2开始,先划掉n内所有2的倍数,然后每次从下一个剩下的数(必然是素数)开始,划掉其n内所有的倍数,最后剩下的数,就...原创 2020-04-05 14:33:11 · 3958 阅读 · 0 评论 -
C和C++学习总结
一、基本数据类型int,long,short,char的最高位(最左边)是符号位,为1则表示负数,为0表示非负数一个字节等于8位(bit),即8个二进制位。sizeof(变量名)sizeof(类型名)二、强制类型转换c中:int i=10;double x=(double)i;c++:double x=double(i);c++两种方式都接受,但是推荐后一种。三...原创 2020-04-03 22:14:34 · 853 阅读 · 0 评论