基本算法
两个数交换
1.方法一:采用原来的两个数进行加减从而实现两数交换。
#include <stdio.h>
int main(void)
{
int a = 12,b =34;
printf(“交换前a=%d,b=%d”,a,b);
a = a + b;
b = a - b;
a = a - b;
printf(“交换后a=%d,b=%d”,a,b);
return 0;
}
2.方法二:借助中间变量进行交换
#include <stdio.h>
int main(void)
{
int a = 12,b =34;
printf(“交换前a=%d,b=%d”,a,b);
nTemp = a;
a = b;
b = nTemp;
printf(“交换后a=%d,b=%d”,a,b);
return 0;
}
3.方法三:使用按位异或方式。
#include <stdio.h>
int main(void)
{
int a = 12,b =34;
printf(“交换前a=%d,b=%d”,a,b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf(“交换后a=%d,b=%d”,a,b);
return 0;
}
三数排序
1.方法一
#include <stdio.h>
int main(void)
{
int temp;
int x=12,y=56,z=34;
printf("排序前x=%d,y=%d,z=%d\n",x,y,z);
}
if(x>y)
{
temp=x;x=y;y=temp;
}
if(x>z)
{
temp=x;x=z;z=temp;
}
if(y>z)
{
temp=y;y=z;z=temp;
}
printf("排序后x=%d,y=%d,z=%d\n",x,y,z);
return 0;
}
2.方法二
#include <stdio.h>
#define MAX(a,b,c) ((a>b?a:b)>c)?(a>b?a:b):c//前两个数中的大数和后两个数中的大数,中的大数
#define MID(a,b,c) a>b?((b>c)?b:(a>c?c:a)):((a>c)?a:(b>c?c:b))//前两个数中的大数和后两个数中的大数,中的小数
#define MIN(a,b,c) ((a>b?b:a)>c)?c:(a>b?b:a)//前两个数中的小数和后两个数中的小数,中的小数
int main(void)
{
int temp;
int x=12,y=56,z=34;
printf("排序前x=%d,y=%d,z=%d\n",x,y,z);
printf("排序后x=%d,y=%d,z=%d\n",MIN(x,y,z),MID(x,y,z),MAX(x,y,z));
return 0;
}
键盘输入10个数,输出最大数和最小数.
#include <stdio.h>
int main()
{
int a[10],i,max,min;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
max=a[0];
min=a[0];
for(i=0;i<10;i++)
{
if(max<a[i])
{
max=a[i];
}
if(min>a[i])
{
min=a[i];
}
}
printf("最大数为%d\n最小数为%d\n",max,min);
return 0;
}
计算1+2+3+……+100=?.
#include <stdio.h>
int main(void)
{
int num = 0;
int i;
for(i = 1;i <= 100; i++)
{
num += i;
}
printf("1+2+3+……+100=%d \n",num);
return 0;
}
计算5!.
#include <stdio.h>
int main(void)
{
int s=1,i;
for(i=1;i<=5;i++)
s*=i;
printf("%d\n",s);
return 0;
}
素数的判断
方法一:计算从2~n-1
#include <stdio.h>
int main(void)
{
int i, n;
scanf("%d", &n);
for (i = 2; i < n ; i++)
{
if (n%i == 0)
break;
}
if (i < n) printf("This is not a prime.");
else printf("This is a prime.");
return 0;
}
方法二:计算从2~n的算术平方根
#include <stdio.h>
#include <math.h>
int main(void)
{
int n,i;
double k;
scanf("%d", &n);
k = sqrt(n);
for (i = 2; i <= k;i++)
{
if (n%i == 0) break;
}
if (i <=k) printf("This is not a prime.");
else printf("This is a prime");
return 0;
}
闰年判断
#include <stdio.h>
int main (void)
{
int year;
printf("请输入年份:");
scanf("%d",&year);
if((year%4==0)&&(year%100!=0)||(year%400==0))
printf("此年是闰年\n");
else
printf("此年不是闰年\n");
return 0;
}
输出9*9乘法口诀。
#include <stdio.h>
int main(void)
{
int i,j,result;
for (i=1;i<10;i++)
{ for(j=1;j<10;j++)
{
result=i*j;
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/
}
printf("\n");/*每一行后换行*/
}
return 0;
}
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
兔子的规律为数列1,1,2,3,5,8,13,21....*/
#include<stdio.h>
int main(void)
{
long f1,f2;
int i;
f1=f2=1;
for(i=1;i<=20;i++)
{
printf("%12ld %12ld",f1,f2);
if(i%2==0) printf("\n");/*控制输出,每行四个*/
f1=f1+f2; /*前两个月加起来赋值给第三个月*/
f2=f1+f2; /*前两个月加起来赋值给第三个月*/
}
return 0;
}