冒泡算法,公倍数,公约数,快速排序。

1.冒泡算法排序【从小到大(十个数为例):3,2,4,6,9,8,7,1,0,5)。

#include <stdio.h>

int main()
{
	int a[10];
	int i, j, temp;
	printf("please input 10 numbers:\n");
	for(i= 0; i< 10; i++)
	{
		scanf("%d", &a[i]);
	}
	printf("\n");
	for(i= 0; i< 9; i++)
	{
		for(j= 0; j< 9-i; j++)
		{
			if(a[j]> a[j+1])
			{
				temp= a[j], a[j]= a[j+1], a[j+1]= temp;
			}
		}
	}
	printf("The sorted numbers:\n");
	for(i= 0; i< 10; i++)
	{
		printf("%d,", a[i]);
	}
	return 0;
}

执行结果如图:2.通过指针变量访问整型变量。

#include <stdio.h>

void main()
{
	int a, b;
	int *pointer_1, *pointer_2;
	a= 100, b= 10;
	pointer_1= &a;
	pointer_2= &b;
	
	printf("%d,%d\n", a, b);
	printf("%d,%d\n", *pointer_1, *pointer_2);
}

3.求两个正数的最小公倍数。

#include <stdio.h>

int main()
{
	int a, b, i;
	printf("please input 2 numbers:");
	scanf("%d,%d", &a, &b);
	for(i= a; ; i++)
	{
		if(i% a==0 && i% b==0)
		{
			break;
		}
	}
	printf("这两个数的最小公倍数为:%d", i);
	return 0;
}

以5,7为例求得结果如下:

缩短编译时间的优化代码(减少了i从1自增到a或者b的编译时间)

#include <stdio.h>
 
int main()
{
	int a, b, i;
	printf("please input 2 numbers:");
	scanf("%d,%d", &a, &b);
	if(a> b)
	{
		for(i= a; ; i++)
	    {
	    	
		    if(i% a==0 && i% b==0)
		    {
			    break;
		    }
	    }
	}
	else
	{
		for(i= b; ; i++)
	    {
	    	
		    if(i% a==0 && i% b==0)
		    {
			    break;
		    }
	    }
	}
	printf("这两个数的最小公倍数为:%d", i);
	return 0;
}

4.求两个数的最大公约数。

#include <stdio.h>

int main()
{
	int a, b;
	printf("please input 2 numbers:\n");
	scanf("%d, %d", &a, &b);
	int i= a;
	for( ; i>0; i--)
	{
		if(a% i== 0 && b% i== 0)
		{
			break;
		}
	}
	printf("这两个数的最大公约数为:%d", i);
	return 0;
}

以(6,12)和(12,6)做了例子如下:

5.1000以内的素数有几个。

#include <stdio.h>

int main()
{
	int i, num, sum= 0;
	for(i= 3; i<= 1000; i++)
	{
		for(num =2; num< i; num++)
		{
			if(i% num== 0)
			{
				sum++;
				break;
			}
		}
	}
	sum= 998- sum+ 1;
	printf("1000以内有%d个素数。", sum);
	return 0;
}

6.编程:某人从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。 现在算起来,他一共吹熄了236根蜡烛。请问,他从多少岁开始过生日party的? 

#include <stdio.h>

int main()
{
	int age, n;
	for(age= 1; age<= 100; age++)
	{
		for(n= age; n<= 100; n++)
		{
			if((n+ age)*(n- age+ 1)/2== 236) 
			{
				printf("他是从%d岁开始过生日party的!", age);
			}
		}
	}
	
	return 0;
}

7.换钞票。

x星球的钞票的面额只有:100元,5元,2元,1元,共4种。
小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱。
小明有点强迫症,他坚持要求200元换出的零钞中2元的张数刚好是1元的张数的10倍,
剩下的当然都是5元面额的。

银行的工作人员有点为难,你能帮助算出:在满足小明要求的前提下,最少要换给他多少张钞票吗?
(5元,2元,1元面额的必须都有,不能是0)

#include <stdio.h>

int main()
{
	int i, j, k, sum;
	for(j= 1; j< 200; j++)
	{
		i= 10*j;
		for(k= 1; k< 20; k++)
		{
			if((2*i)+(1*j)+(5*k)==200)
			{
			sum= i+ j+ k;
			printf("银行工作人员应该最少给他%d张钞票!", sum);
			}
		}
	}
	return 0;
}

8.快速排序。

#include <stdio.h>

int quick_sort(int a[], int left, int right)
{
	int i= left, j= right;
	int temp;
	int pivot= a[(left+ right)/ 2];
	while(i<= j)
	{
		//从左到右找到大于等于基准点的元素 
		while(a[i]< pivot)
		{
			i++;
		}
		//从右到左找到小于等于基准点的元素 
		while(a[j]> pivot)
		{
			j--;
		}
		//将两个数进行互换 
		if(i<= j)
		{
			temp= a[i];
			a[i]= a[j];
			a[j]= temp;
			i++;
			j--;
		}
	}
	if(left< j)
	{
		quick_sort(a, left, j);
	}
	if(i< right)
	{
		quick_sort(a, i, right);
	}
}

int main()
{
	int i;
	int a[]={12, 2, 4, 56, 18, 9, 30, 43};
	int length= sizeof(a)/sizeof(a[0]);
	quick_sort(a, 0, length- 1);
	printf("排序后的数组是:");
	for(i= 0; i< length; i++)
	{
		printf("%d ", a[i]);
	}
	return 0;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值