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;
}