C语言基础算法
作者:网络转载 发布时间:[ 2016/12/2 13:52:19 ] 推荐标签:.NET C语言
例1、任意读入一个二至十六进制数(字符串),转换成十进制数后输出。
#include "string.h"
#include "ctype.h"
main()
{
char x[20];
int r,d;
gets(x); /*输入一个r进制整数序列*/
scanf("%d",&r); /*输入待处理的进制基数2-16*/
d=Tran(x,r);
printf("%s=%d ",x,d);
}
int Tran(char *p,int r)
{
int d,i,cr;
char fh,c;
d=0;
fh=*p;
if(fh=='-')p++;
for(i=0;i<strlen(p);i++)
{
c=*(p+i);
if(toupper(c)>='A')
cr=toupper(c)-'A'+10;
else
cr=c-'0';
d=d*r+cr;
}
if(fh=='-')
d=-d;
return(d);
}
(7)辗转相除法求两个正整数的大公约数 该算法的要领是:假设两个正整数为a和b,先求出前者除以后者的余数,存放到变量r中,若r不为0,则将b的值得赋给a,将r的值得赋给b;再求出a除以b的余数,仍然存放到变量r中??如此反复,直至r为0时终止,此时b中存放的即为原来两数的大公约数。
例1、任意读入两个正整数,求出它们的大公约数。
[法一:用while循环时,大公约数存放于b中]
main()
{
int a,b,r;
doscanf("%d%d",&a,&b);
while(a<=0||b<=0); /*确保a和b为正整数*/
r=a%b;
while(r!=0)
{
a=b;b=r;r=a%b;
}
printf("%d ",b);
}
[法二:用do…while循环时,大公约数存放于a中]
main()
{
int a,b,r;
doscanf("%d%d",&a,&b);
while(a<=0||b<=0); /*确保a和b为正整数*/
do
{
r=a%b;a=b;b=r;
}while(r!=0);
printf("%d ",a);
}
【引申】可以利用大公约数求小公倍数。提示:两个正整数a和b的小公倍数=a×b/大公约数。
(8)数组元素的插入、删除
(1)数组元素的插入 此算法一般是在已经有序的数组中再插入一个数据,使数组中的数列依然有序。算法要领是:假设待插数据为x,数组a中数据为升序序列。
①先将x与a数组当前后一个元素进行比较,若比后一个元素还大,将x放入其后一个元素中;否则进行以下步骤;
②先查找到待插位置。从数组a的第1个元素开始找到不比x小的第一个元素,设其下标为i ;
③将数组a中原后一个元素至第i个元素依次一一后移一位,让出待插数据的位置,即下标为i的位置;
④将x存放到a(i)中。例题参见前面“‘排序’中插入法排序的例1”。
(2)数组元素的删除 此算法的要领是:首先要找到(也可能找不到)待删除元素在数组中的位置(即下标),然后将待删元素后的每一个元素向前移动一位,后将数组元素的个数减1。
例1、数组a中有若干不同考试分数,任意读入一个分数,若与数组a中某一元素值相等,将该元素删除。
#define N 6
main()
{
int fs[N]={69,90,85,56,44,80},x;
int i,j,n;
n=N;
scanf("%d",&x); /*任意读入一个分数值*/ /*以下查找待删分数的位置,即元素下标*/
for(i=0;i<n;i++)
if(fs[i]==x)break;
if(i==n)
printf("Notfound! ");
else /*将待删位置之后的所有元素一一前移*/
{
for(j=i+1;j<n;j++) fs[j-1]=fs[j];
n=n-1; /*元素个数减1*/
}
for(i=0;i<n;i++)
printf("%d",fs[i]);
}
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南