内容目录
数组求斐波那契数列前36个数
#include <stdio.h>
int main(void )
{
int i;
long int f[36]={1,1};
for (i=2;i<36;i++)
f[i]=f[i-2]+f[i-1];
for (i=0;i<36;i++)
{
if (i%4==0)
printf("\n");
printf("%12ld",f[i]);
}
return 0;
}
水仙花数
法一:
#include <stdio.h>
int main(void)
{
int i,j,k,m,n;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
{
m=i*100+j*10+k;
n=i*i*i+j*j*j+k*k*k;
if(m==n)
printf("%-5d",m);
}
}
法二:
#include <stdio.h>
int main(void)
{
int x,y,z,n;
for (n=100;n<1000;n++)
{
x=n%10; //个位
y=n/10%10; //十位
z=n/100; //百位
if (n==(x*x*x+y*y*y+z*z*z))
printf("%-4d",n);
}
}
最大公约数与最小公倍数
#include <stdio.h>
int main(void)
{
int x,y,n,t;
printf("请输入x,y的值:");
scanf("%d%d",&x,&y);
int m;
m=x*y;
if (x<y){
t=x;
x=y;
y=t;
}
n=x%y;
while (n!=0)
{
x=y;
y=n;
n=x%y;
}
printf("最大公约数为:%d\n",y);
printf("最小公倍数为:%d",m/y);
}
冒泡排序法对8个数降序排列
#include <stdio.h>
int main(void )
{
int a[8],i,j,t;
printf("请输入8个数据:\n");
for (i=0;i<8;i++)
scanf("%d",&a[i]);
for (i=0;i<7;i++)
for (j=0;j<7-i;j++)
if(a[j]<a[j+1]) //大数在前
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
printf("排序后的数据:\n");
for (i=0;i<8;i++)
printf("%-4d",a[i]);
}
选择升序法排列8个数
#include <stdio.h>
int main(void )
{
int a[8],i,j,k,x;
printf("请输入8个数据:\n");
for (i=0;i<8;i++)
scanf("%d",&a[i]);
for (i=0;i<7;i++)
{
k=i;
for (j=i+1;j<8;j++)
{
if (a[j]<a[k])
k=j;
}
if (k!=i)
{
x=a[i];
a[i]=a[k];
a[k]=x;
}
}
printf("排序后的数据为:\n");
for (i=0;i<8;i++)
printf("%-4d",a[i]);
}
递归法求阶乘
#include <stdio.h>
long fun(int n);
int main(void )
{
int n;
printf("请输入一个整数:");
scanf("%d",&n);
printf("%d!=%ld",n,fun(n));
}
long fun(int n)
{
long s;
if (n<0) printf("请输入非负整数!\n");
if (n==0||n==1) s=1;
if (n>0)
s= fun(n-1)*n;
return s;
}
求三个数的最大值
#include <stdio.h>
int max(int,int,int);
int main(void )
{
int a,b,c;
printf("请输入三个数:");
scanf("%d%d%d",&a,&b,&c);
printf("三个数中的最大数为:%d", max(a,b,c));
}
int max(int m,int n,int t)
{
int i;
i=m>n?m:n;
i=i>t?i:t;
return i;
}
统计字符
//只用指针做
#include <stdio.h>
int main(void )
{
int space=0,number=0,letter=0,other=0;
char str[255],*p=str;
gets(str);
for (;*p!='\0';p++)
{
if (*p==' ') space++;
else if (*p>='0'&&*p<='9') number++;
else if ((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')) letter++;
else other++;
}
printf("空格个数:%-4d,数字个数:%-4d,\n字母个数:%-4d,其他字符个数:%-4d",space,number,letter,other);
}
函数和指针做
#include <stdio.h>
int count(char *p)
{
int space=0,number=0,letter=0,other=0;
for (;*p!='\0';p++)
{
if (*p==' ') space++;
else if (*p>='0'&&*p<='9') number++;
else if ((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')) letter++;
else other++;
}
printf("空格个数:%-4d,数字个数:%-4d,\n字母个数:%-4d,其他字符个数:%-4d",space,number,letter,other);
}
int main(void )
{
char str[255];
gets(str);
count(str);
}
计算分段函数
#include <stdio.h>
int fun(int);
int main(void )
{
int x;
printf("请输入x的值:");
scanf("%d",&x);
printf("y=%d",fun(x));
}
int fun(int x)
{
if(x<=1) return x;
if(x>1&&x<10) return 2*x+1;
if(x>=10) return 3*x-8;
}
求pai值
//利用格里高利公式求pai/4=1-1/3+1/5-1/7+······,求pai的值,直到最后一项绝对值小于1e-6为止
#include <stdio.h>
#include <math.h>
int main(void )
{
int a=1;
float x=1,b=1,sum=0; //a为分子,b为分母,sum为和,x为首项
while (fabs(x)>=1e-6)
{
sum+=x;
b+=2;
a=-a;
x=a/b;
}
sum*=4;
printf("pai=%f",sum);
}
拼接字符串
#include <stdio.h>
法一:(指针)
void main()
{
char a[10],b[10],*p=a,*q=b;
scanf("%s%s",a,b);
for (;*p!=0;p++);
for (;*q!=0;q++,p++)
*p=*q;
*p=0;
printf("%s",a);
}
法二:(数组法)
void main()
{
char a[10],b[10];
int i,j;
scanf("%s%s",a,b);
for (i=0;a[i]!=0;i++);
for (j=0;b[j]!=0;j++,i++)
a[i]=b[j];
a[i]=0;
printf("%s",a);
}
Comments NOTHING