C++常用算法代码
10个经典的C语言基础算法及代码

10个经典的C语言基础算法及代码1.冒泡排序算法冒泡排序是一种简单但效率较低的排序算法,在每一轮遍历中比较相邻的两个元素,如果顺序不正确则交换它们,直到整个数组有序为止。
```cvoid bubbleSort(int arr[], int n)for (int i = 0; i < n-1; i++)for (int j = 0; j < n-1-i; j++)if (arr[j] > arr[j+1])int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}```2.选择排序算法选择排序是一种简单直观的排序算法,它每次从待排序的数组中选择最小(或最大)的元素,并放到已排序的数组末尾。
```cvoid selectionSort(int arr[], int n)for (int i = 0; i < n-1; i++)int min_index = i;for (int j = i+1; j < n; j++)if (arr[j] < arr[min_index])min_index = j;}}int temp = arr[i];arr[i] = arr[min_index];arr[min_index] = temp;}```3.插入排序算法插入排序的基本思想是将数组分为已排序和未排序两部分,每次将未排序的元素插入到已排序的合适位置。
```cvoid insertionSort(int arr[], int n)for (int i = 1; i < n; i++)int key = arr[i];int j = i - 1;while (j >= 0 && arr[j] > key)arr[j+1] = arr[j];j--;}arr[j+1] = key;}```4.快速排序算法快速排序使用分治法的思想,每次选择一个基准元素,将小于基准的元素放到左边,大于基准的元素放到右边,然后递归地对左右两个子数组进行排序。
C语言常用算法程序汇总

C语言常用算法程序汇总C语言是一门广泛应用于计算机编程的语言,具有较高的效率和灵活性。
在C语言中,常见的算法程序包括排序算法、查找算法、递归算法等等。
以下是一些常用的C语言算法程序的汇总:1.排序算法:-冒泡排序:通过多次迭代比较相邻元素并交换位置,将最大的元素逐渐移动到正确的位置。
-插入排序:将待排序的元素与已排序的部分依次比较并插入到正确的位置。
-选择排序:每次从待排序的元素中选择最小的元素并与已排序的部分交换位置。
-快速排序:通过选择一个基准元素,将数组划分为两个子数组进行递归排序。
2.查找算法:-顺序查找:逐个比较数组中的元素,直到找到目标元素或到数组末尾。
-二分查找:通过比较目标元素与数组中间元素的大小,逐步缩小范围,直到找到目标元素。
-哈希查找:通过散列函数将目标元素映射到哈希表的索引位置进行查找。
3.递归算法:-阶乘:通过递归调用自身计算一个正整数的阶乘。
-斐波那契数列:通过递归调用自身计算斐波那契数列的第n个数。
-二叉树遍历:通过递归调用自身遍历二叉树的各个节点。
4.图算法:- 最短路径算法:如Dijkstra算法和Floyd算法,用于计算图中两个节点之间的最短路径。
-拓扑排序:通过对有向无环图进行排序,使得所有的边从排在前面的节点指向排在后面的节点。
- 最小生成树:如Prim算法和Kruskal算法,用于找到图中连接所有节点的最小子树。
5.动态规划:-最长公共子序列:通过寻找两个字符串中的最长公共子序列,解决字符串匹配问题。
-背包问题:通过动态规划解决在给定容量下选取物品使得总价值最大的问题。
-最大子序列和:通过动态规划解决一个数组中选取连续子序列使得和最大的问题。
以上只是一些C语言中常用的算法程序的汇总,实际上,还有很多其他的算法,如逆波兰表达式、霍夫曼编码、最小割等等。
通过学习这些算法,可以更好地理解C语言的应用和开发。
c语言 优先级算法

c语言优先级算法在C语言中,优先级算法是一种常用的算法,用于确定多个任务之间的执行顺序。
优先级算法可以根据任务的重要性或紧急程度决定任务的优先级,进而影响任务的执行顺序。
本文将介绍C语言中常用的几种优先级算法,并给出相应的代码示例。
一、静态优先级算法静态优先级算法是指在编写程序时,为每个任务分配一个预先确定的优先级,而不会在运行时改变。
静态优先级算法可以通过宏定义或全局变量来定义任务的优先级。
在实际应用中,可以根据任务的重要性和紧急程度来合理分配任务的优先级。
下面是一个使用静态优先级算法的示例代码:```c#include <stdio.h>#define PRIORITY_A 1#define PRIORITY_B 2#define PRIORITY_C 3void taskA() {printf("This is task A\n");}void taskB() {printf("This is task B\n");}void taskC() {printf("This is task C\n");}int main() {// 任务执行顺序:taskC -> taskB -> taskAtaskC();taskB();taskA();return 0;}```在上述代码中,我们为任务A、任务B和任务C定义了不同的优先级,并在`main`函数中按照优先级顺序调用这些任务。
根据定义的优先级,最终的任务执行顺序为taskC -> taskB -> taskA。
二、动态优先级算法动态优先级算法是指在运行时根据任务的状态和其他因素来动态地调整任务的优先级。
常用的动态优先级算法有抢占式优先级算法和时间片轮转算法。
1. 抢占式优先级算法抢占式优先级算法是指在任务执行过程中,如果有更高优先级的任务需要执行,则会抢占当前正在执行的任务,并立即执行更高优先级的任务。
c语言计算的代码

c语言计算的代码使用C语言进行计算的代码在计算机编程中,C语言是一种非常常用的编程语言,它具有高效、灵活和可移植等特点。
在C语言中,我们可以使用各种算法和公式来进行各种数学计算,下面就来介绍一些常见的使用C语言进行计算的代码。
一、基本的四则运算在C语言中,我们可以使用加减乘除等基本算术运算符来进行四则运算。
例如,我们可以使用以下代码来实现两个数的相加运算:```#include <stdio.h>int main() {int a = 10;int b = 20;int sum = a + b;printf("两个数的和为:%d\n", sum);return 0;}```二、求平方根在数学中,我们经常需要求一个数的平方根。
在C语言中,我们可以使用math.h头文件中的sqrt()函数来实现求平方根的功能。
下面是一个简单的例子:```#include <stdio.h>#include <math.h>int main() {double num = 16.0;double result = sqrt(num);printf("16的平方根为:%f\n", result);return 0;}```三、求阶乘阶乘是数学中常见的一个概念,表示从1到某个数之间所有整数的乘积。
在C语言中,我们可以使用循环结构来计算阶乘。
下面是一个计算阶乘的例子:```#include <stdio.h>int main() {int n = 5;int result = 1;for (int i = 1; i <= n; i++) {result *= i;}printf("5的阶乘为:%d\n", result);return 0;}```四、求最大公约数最大公约数是两个数中最大的能够同时整除两个数的数。
C语言经典代码考试自用

C语言经典代码考试自用C语言是一种通用的高级程序设计语言,经常被用于系统软件和应用软件的开发。
在学习C语言的过程中,熟练掌握经典的代码是非常重要的。
本文将介绍一些C语言经典代码,希望对于C语言的学习和考试有所帮助。
1. Hello World程序Hello World程序是C语言学习的第一步,也是非常经典的代码。
它的目的是输出一行字符串"Hello World!"到屏幕上。
以下是Hello World程序的代码:```c#include <stdio.h>int main() {printf("Hello World!");return 0;}```2. 求两个整数的最大公约数最大公约数是指能同时整除两个数的最大正整数。
以下是求两个整数的最大公约数的代码:```c#include <stdio.h>int gcd(int a, int b) {if (b == 0) {return a;} else {return gcd(b, a % b);}}int main() {int num1, num2;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);printf("最大公约数为:%d", gcd(num1, num2));return 0;}```3. 判断一个数是否为素数素数是只能被1和自身整除的数,大于1的自然数中除了2以外都是奇数。
以下是判断一个数是否为素数的代码:```c#include <stdio.h>#include <stdbool.h>bool isPrime(int num) {if (num <= 1) {return false;}for (int i = 2; i * i <= num; i++) { if (num % i == 0) {return false;}}return true;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (isPrime(num)) {printf("%d是素数", num);} else {printf("%d不是素数", num);}return 0;}```4. 查找数组中的最大元素以下是查找数组中的最大元素的代码:```c#include <stdio.h>int findMax(int arr[], int n) {int max = arr[0];for (int i = 1; i < n; i++) {if (arr[i] > max) {max = arr[i];}}return max;int main() {int arr[] = {5, 2, 8, 10, 1};int n = sizeof(arr) / sizeof(arr[0]);printf("数组中的最大元素为:%d", findMax(arr, n));return 0;}```5. 根据用户输入的数字打印对应的星号图案以下是根据用户输入的数字打印对应的星号图案的代码:```c#include <stdio.h>void printPattern(int num) {for (int i = 1; i <= num; i++) {for (int j = 1; j <= i; j++) {printf("* ");}printf("\n");}int main() {int num;printf("请输入一个数字:");scanf("%d", &num);printPattern(num);return 0;}```以上是一些C语言经典代码的示例,涵盖了基本输入输出、循环、递归等常用语法和算法。
C语言基础简单的数学运算的代码

C语言基础简单的数学运算的代码#include <stdio.h>int main() {// 定义并初始化变量int num1 = 10;int num2 = 5;// 加法运算int sum = num1 + num2;printf("加法运算结果:%d\n", sum);// 减法运算int difference = num1 - num2;printf("减法运算结果:%d\n", difference);// 乘法运算int product = num1 * num2;printf("乘法运算结果:%d\n", product);// 除法运算float quotient = (float)num1 / num2;printf("除法运算结果:%.2f\n", quotient);// 求余运算int remainder = num1 % num2;printf("求余运算结果:%d\n", remainder);return 0;}以上是一个简单的C语言程序,实现了基本的数学运算功能。
程序运行后,会输出每个数学运算的结果。
接下来我会逐行解释代码的含义和执行过程。
首先,在程序的开头我们使用了#include <stdio.h>这行代码,这是为了包含C语言标准库中的输入输出函数,以便后续可以使用printf()函数打印结果。
接着,在main()函数中,我们定义并初始化了两个整型变量num1和num2,分别赋值为10和5。
这两个变量代表了我们要进行数学运算的两个操作数。
然后,我们使用加法运算将num1和num2相加得到sum,并使用printf()函数打印出加法运算的结果。
接着,我们使用减法运算将num1减去num2得到difference,并使用printf()函数打印出减法运算的结果。
C语言入门必学—10个经典C语言算法
C语言入门必学—10个经典C语言算法C语言是一种广泛使用的编程语言,具有高效、灵活和易学的特点。
它不仅在软件开发中被广泛应用,也是计算机科学专业的必修课。
在学习C语言的过程中,掌握一些经典的算法是非常重要的。
本文将介绍10个经典C语言算法,帮助读者更好地了解和掌握C语言。
一、冒泡排序算法(Bubble Sort)冒泡排序算法是最简单、也是最经典的排序算法之一。
它通过不断比较相邻的元素并交换位置,将最大(或最小)的元素逐渐“冒泡”到数组的最后(或最前)位置。
二、选择排序算法(Selection Sort)选择排序算法是一种简单但低效的排序算法。
它通过不断选择最小(或最大)的元素,并与未排序部分的第一个元素进行交换,将最小(或最大)的元素逐渐交换到数组的前面(或后面)。
三、插入排序算法(Insertion Sort)插入排序算法是一种简单且高效的排序算法。
它通过将数组分为已排序和未排序两个部分,依次将未排序部分的元素插入到已排序部分的合适位置。
四、快速排序算法(Quick Sort)快速排序算法是一种高效的排序算法。
它采用了分治的思想,通过将数组分为较小和较大两部分,并递归地对两部分进行排序,最终达到整个数组有序的目的。
五、归并排序算法(Merge Sort)归并排序算法是一种高效的排序算法。
它采用了分治的思想,将数组一分为二,递归地对两个子数组进行排序,并将结果合并,最终得到有序的数组。
六、二分查找算法(Binary Search)二分查找算法是一种高效的查找算法。
它通过不断将查找范围折半,根据中间元素与目标值的大小关系,缩小查找范围,最终找到目标值所在的位置。
七、递归算法(Recursive Algorithm)递归算法是一种通过自我调用的方式解决问题的算法。
在C语言中,递归算法常用于解决树的遍历、问题分解等情况。
八、斐波那契数列算法(Fibonacci Sequence)斐波那契数列是一列数字,其中每个数字都是前两个数字的和。
C语言初学者经典代码(5条)
C语言初学者经典代码(5条)1.打印“Hello, world!”#include <stdio.h>int main() {printf("Hello, world!");return 0;}这段代码使用了C标准库中的printf()函数,它能够在控制台中打印文本信息。
在main()函数中调用该函数,并传入字符串“Hello, world!”作为参数。
程序运行后,在控制台中就能看到输出的文本信息。
2.计算两个数的和并输出结果:#include <stdio.h>int main() {int a = 5, b = 2;int sum = a + b;printf("The sum of %d and %d is %d", a, b, sum);return 0;}这段代码定义了两个整型变量a和b,并将它们的值分别设置为5和2。
然后将它们相加得到和并赋值给整型变量sum。
最后通过printf()函数输出结果文本信息。
其中%d是占位符,表示输出一个整型变量的值。
3.判断一个数是否为偶数:#include <stdio.h>int main() {int num = 4;if (num % 2 == 0) {printf("%d is an even number.", num);} else {printf("%d is an odd number.", num);}return 0;}这段代码定义了一个整型变量num,并将它的初始值设置为4。
然后使用if语句判断num是否为偶数。
如果是,就输出相应的文本信息;如果不是,也输出相应的文本信息。
在if语句中,%d同样表示输出一个整型变量的值。
%s表示输出一个字符串的值。
4.输出乘法表:#include <stdio.h>int main() {for (int i = 1; i <= 9; ++i) {for (int j = 1; j <= i; ++j) {printf("%d*%d=%d ", j, i, i*j);}printf("\n");}return 0;}这段代码使用了两个嵌套的for循环,分别控制行和列的输出。
初学者必会的c语言必背代码
初学者必会的c语言必背代码1、c语言必背100代码,C语言代码大全第一个------乘法表。
用C语言输出9*9成法口诀。
共9行9列,i控制行,j控制列。
2、c语言必背100代码之4×4数组下面程序的功能是将一个4×4的数组进行逆时针旋转90度后输出,要求原始数组的数据随机输入,新数组以4行4列的方式输出,请在空白处完善程序。
3、c语言必背100代码,C语言必背100代码。
古典问题有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?兔子的规律为数列1,1,2,3,5,8,13,21…4、c语言必背100代码素数判断101-200之间有多少个素数,并输出所有素数及素数的个数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
5、c语言必背100代码完数相关代码一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如6=1+2+3.编程找出1000以内的所有完数。
6、c语言必背100代码三角形打印编程打印直角杨辉三角形7、c语言必背100代码平均分问题通过键盘输入3名学生4门课程的成绩,分别求每个学生的平均成绩和每门课程的平均成绩。
要求所有成绩均放入一个4行5列的数组中,输入时同一人数据间用空格,不同人用回车其中最后一列和最后一行分别放每个学生的平均成绩、每门课程的平均成绩及班级总平均分。
#include <stdio.h>#include <stdlib.h>main(){ float a[4][5],sum1,sum2;int i,j;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%f",&a[i][j]);for(i=0;i<3;i++){ sum1=0;for(j=0;j<4;j++)sum1+=a[i][j];a[i][4]=sum1/4;}for(j=0;j<5;j++){ sum2=0;for(i=0;i<3;i++)sum2+=a[i][j];a[3][j]=sum2/3;}for(i=0;i<4;i++){ for(j=0;j<5;j++)printf("%6.2f",a[i][j]);printf("\n");}}8、c语言必背100代码反向输出完善程序,实现将输入的字符串反序输出,如输入windows 输出swodniw。
C语言入门训练代码(10条)
C语言入门训练代码(10条)1. 输入n,计算出n的阶乘。
#include <stdio.h>int main(){int n, i;long long ret = 1;printf("请输入一个正整数:");scanf("%d", &n);for (i=1; i<=n; ++i){ret *= i;}printf("%d的阶乘是%lld\n", n, ret);return 0;}2. 编写一个程序,将一个字符串中的字母全部转换为大写字母。
#include <stdio.h>#include <ctype.h>#define MAX_LEN 100int main(){char str[MAX_LEN + 1];int i;printf("请输入一个字符串:");fgets(str, MAX_LEN, stdin);for (i=0; str[i]!='\0'; ++i){str[i] = toupper(str[i]);}printf("转换后的字符串是:%s", str);return 0;}3. 输入两个正整数m和n,求它们的最大公约数和最小公倍数。
#include <stdio.h>int main(){int m, n, i, gcd, lcm;printf("请输入两个正整数m和n:");scanf("%d %d", &m, &n);for (i=1; i<=m && i<=n; ++i){if (m%i==0 && n%i==0){gcd = i;}}lcm = m*n / gcd;printf("%d和%d的最大公约数是%d,最小公倍数是%d\n", m, n, gcd, lcm);return 0;}4. 输入一组数据,计算它们的平均值以及大于平均值的个数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常用算法经典代码(C++版)一、快速排序void qsort(int x,int y) //待排序的数据存放在a[1]..a[n]数组中{int h=x,r=y;int m=a[(x+y)>>1]; //取中间的那个位置的值while(h<r){while (a[h]<m) h++; //比中间那个位置的值小,循环直到找一个比中间那个值大的while (a[r]>m) r--; //比中间那个位置的值大,循环直到找一个比中间那个值小的if(h<=r){int temp=a[h];//如果此时h<=r,交换a[h]和a[r]a[h]=a[r];a[r]=temp;h++;r--; //这两句必不可少哦}}if(r>x) qsort(x,r);//注意此处,尾指针跑到前半部分了if(h<y) qsort(h,y); //注意此处,头指针跑到后半部分了}调用:qsort(1,n)即可实现数组a中元素有序。
适用于n比较大的排序二、冒泡排序void paopao(void) //待排序的数据存放在a[1]..a[n]数组中{for(int i=1;i<n;i++) //控制循环(冒泡)的次数,n个数,需要n-1次冒泡for(int j=1;j<=n-i;j++) //相邻的两两比较if(a[j]<a[j+1]) {int temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}或者void paopao(void) //待排序的数据存放在a[1]..a[n]数组中{for(int i=1;i<n;i++) //控制循环(冒泡)的次数,n个数,需要n-1次冒泡for(int j=n-i;j>=1;j--) //相邻的两两比较if(a[j]<a[j+1]) {int temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}调用:paopao(),适用于n比较小的排序三、桶排序void bucketsort(void)//a的取值范围已知。
如a<=cmax。
{memset(tong,0,sizeof(tong));//桶初始化for(int i=1;i<=n;i++)//读入n个数{int acin>>a;tong[a]++;}//相应的桶号计数器加1for(int i=1;i<=cmax;i++){if(tong[i]>0) //当桶中装的树大于0,说明i出现过tong[i]次,否则没出现过iwhile (tong[i]!=0){tong[i]--;cout<<i<<‟ …;}}}桶排序适用于那些待排序的关键字的值在已知范围的排序。
四、合(归)并排序void merge(int l,int m,int r)//合并[l,m]和[m+1,r]两个已经有序的区间{ int b[101];//借助一个新的数组B,使两个有序的子区间合并成一个有序的区间,b数组的大小要注意int h,t,k;k=0;//用于新数组B的指针h=l;t=m+1;//让h指向第一个区间的第一个元素,t指向第二个区间的第一个元素。
while((h<=m)&&(t<=r))//在指针h和t没有到区间尾时,把两个区间的元素抄在新数组中{k++; //新数组指针加1if (a[h]<a[t]){b[k]=a[h];h++;} //抄第一个区间元素到新数组else{b[k]=a[t];t++;} //抄第二个区间元素到新数组}while(h<=m){k++;b[k]=a[h];h++;} //如果第一个区间没有抄结束,把剩下的抄在新数组中while(t<=r){k++;b[k]=a[t];t++;} //如果第二个区间没有抄结束,把剩下的抄在新数组中for(int o=1;o<=k;o++)//把新数组中的元素,再抄回原来的区间,这两个连续的区间变为有序的区间。
a[l+o-1]=b[o];}void mergesort(int x,int y)//对区间[x,y]进行二路归并排序{int mid;if(x>=y) return;mid=(x+y)/2;//求[x,y]区间,中间的那个点mid,mid把x,y区间一分为二mergesort(x,mid);//对前一段进行二路归并mergesort(mid+1,y);//对后一段进行二路归并merge(x,mid,y);//把已经有序的前后两段进行合并}归并排序应用了分治思想,把一个大问题,变成两个小问题。
二分是分治的思想。
五、二分查找int find(int x,int y,int m) //在[x,y]区间查找关键字等于m的元素下标{ int head,tail,mid;head=x;tail=y;mid=((x+y)/2);//取中间元素下标if(a[mid]==m) return mid;//如果中间元素值为m返回中间元素下标midif(head>tail) return 0;//如果x>y,查找失败,返回0if(m>a[mid]) //如果m比中间元素大,在后半区间查找,返回后半区间查找结果return find(mid+1,tail);else //如果m比中间元素小,在前半区间查找,返回后前区间查找结果return find(head,mid-1);}六、高精度加法#include<iostream>#include<cstring>using namespace std;int main(){string str1,str2;int a[250],b[250],len; //数组的大小决定了计算的高精度最大位数int i;memset(a,0,sizeof(a));memset(b,0,sizeof(b));cin>>str1>>str2; //输入两个字符串a[0]=str1.length(); //取得第一个字符串的长度for(i=1;i<=a[0];i++) //把第一个字符串转换为整数,存放在数组a中a[i]=str1[a[0]-i]-'0';b[0]=str2.length(); //取得第二个字符串长度for(i=1;i<=b[0];i++) //把第二个字符串中的每一位转换为整数,存放在数组B中b[i]=str2[b[0]-i]-'0';len=(a[0]>b[0]?a[0]:b[0]); //取两个字符串最大的长度for(i=1;i<=len;i++) //做按位加法,同时处理进位{a[i]+=b[i];a[i+1]+=a[i]/10;a[i]%=10;}len++; //下面是去掉最高位的0,然后输出。
while((a[len]==0)&&(len>1)) len--;for(i=len;i>=1;i--)cout<<a[i];return 0;}注意:两个数相加,结果的位数,应该比两个数中大的那个数多一位。
七、高精度减法#include<iostream>using namespace std;int compare(string s1,string s2);int main(){string str1,str2;int a[250],b[250],len;int i;memset(a,0,sizeof(a));memset(b,0,sizeof(b));cin>>str1>>str2;a[0]=str1.length();for(i=1;i<=a[0];i++)a[i]=str1[a[0]-i]-'0';b[0]=str2.length();for(i=1;i<=b[0];i++)b[i]=str2[b[0]-i]-'0';if((compare(str1,str2))==0) //大于等于,做按位减,并处理借位。
{for(i=1;i<=a[0];i++){a[i]-=b[i];if (a[i]<0) {a[i+1]--;a[i]+=10;}}a[0]++;while((a[a[0]]==0)&&(a[0]>1)) a[0]--;for(i=a[0];i>=1;i--)cout<<a[i];cout<<endl;}else{cout<<'-'; //小于就输出负号for(i=1;i<=b[0];i++) //做按位减,大的减小的{b[i]-=a[i];if (b[i]<0) {b[i+1]--;b[i]+=10;}}b[0]++;while((b[b[0]]==0)&&(b[0]>1)) b[0]--;for(i=b[0];i>=1;i--)cout<<b[i];cout<<endl;}return 0;}int compare(string s1,string s2) //比较字符串(两个数)数字的大小,大于等于返回0,小于返回1。
{if(s1.length()>s2.length()) return 0; //先比较长度,哪个字符串长,对应的那个数就大if(s1.length()<s2.length()) return 1;for(int i=0;i<=s1.length();i++) //长度相同时,就一位一位比较。
{if(s1[i]>s2[i]) return 0;if(s1[i]<s2[i]) return 1;}return 0; //如果长度相同,每一位也一样,就返回0,说明相等}做减法时,首先要判断两个字符串的大小,决定是否输出负号,然后就是按位减法,注意处理借位。
八、高精度乘法#include<iostream>#include<cstring>using namespace std;int main(){string str1,str2;int a[250],b[250],c[500],len; //250位以内的两个数相乘int i,j;memset(a,0,sizeof(a));memset(b,0,sizeof(b));cin>>str1>>str2;a[0]=str1.length();for(i=1;i<=a[0];i++)a[i]=str1[a[0]-i]-'0';b[0]=str2.length();for(i=1;i<=b[0];i++)b[i]=str2[b[0]-i]-'0';memset(c,0,sizeof(c));for(i=1;i<=a[0];i++) //做按位乘法同时处理进位,注意循环内语句的写法。