C语言专插本考试常用算法

06142009 / No Comment / 备考资料

1递归法转换整数为字符

void convert(int n) {
	int t;
	if((t=n/10)!=0)
	convert(t);
	putch(n%10+'0');
}

2判断素数

int isPrime(int n) {
	int i;
	for(i=2;i

3求闰年

if((year%4==0&year%100!=0)||(year%400)==0)
	printf("%d is a leap year",year);
else
	printf("%d is not a leap year",year);

4求N的阶乘

for(int t=1,i=2;i<=N;i++)
	t*=i;
printf("%d",t);

5求m和n最大公约数和最小公倍数

if(a

6大写字母改小写字母

c1=getchar();
c2=c1+32;
printf("%c,%c",c1,c2);

7小写字母改大写字母

c1=getchar();
c2=c1-32;
printf("%c,%c",c1,c2);

8求3个数由小到大的顺序输出

if(a>b){
t=a;a=b;b=t;
}
if(a>c) {
	t=a;
	a=c;
	c=t;
}
if(b>c) {
	t=b;
	b=c;
	c=t;
}

* 若要求由大到小顺序输出,改'>'为'<'即可。

9求ax*x+b*x+c方程的解

if(fabs(a)<=1e-6)
	printf("非二次方程");
else
	disc=b*b-4*a*c;
if(fabs(disc)<=1e-6)
	printf("有两相等实根:%f\n",-b/(2*a));
else if(fabs(disc)>1e-6) {
	x1=(-b+sqrt(disc))/(2*a);
	x2=(-b-sqrt(disc))/(2*a);
	printf("有两相异实根:%f和%f\n",x1,x2);
} else {
	realpart=-b/(2*a);
	imagpart=sqrt(-disc)/(2*a);
	printf("有两共轭复根:\n");
	printf("%f+%fi\n",realpart,imagpart);
	printf("%f-%fi\n",realpart,imagpart);
}

10冒泡法排序 (由小到大)

int a[N+1];
for(i=1;i<=N;i++) /* 输入N个数  (数组输入功能) */
	scanf("%d",&a);
for(j=1;ja[i+1]) {
			t=a;
			a=a[i+1];
			a[i+1]=t;
		}
for(i=1;i<=N;i++)   /* 输出排好的这N个数 (数组输出功能) */
	printf("%d",a);

11选择法排序 (由小到大)

/* 子程序部分 */
void sort(int array[],int n) {
int i,j,k,t;
for(i=0;i

12插入法排序int a[N];

/* 省略数组输入 (见上:冒泡法) */
for(i=1;i=0&&m>a[j]) {
		a[j+1]=a[j];
		j--;
	}
	a[j]=m;
}
/* 省略数组输出 (见上:冒泡法) */

13.数列中查找一个关键字
(1)折半法

BinarySearch(a,n,x,j)
k=0;
m=n-1;
while(k<=m) {
	j=(k+m)/2;
	if(x==a[j]) exit;
	else if(xm) j=0;
	printf("%d",j);

(2)顺序查找法

int a[N];
/* 省略数组输入 (见上:冒泡法) */
for(i=0;i

(3)快速顺序查找法

int a[N];
/* 省略数组输入 (见上:冒泡法) */
a[N-1]=x;
i=0;
while(a!=x) i++;
if(i

Comment RSS / Trackback URI

给我留个言吧... *^_^*

可使用下列xHTML标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
名字跟邮箱为一定要写...