您的位置:首页 > 编程语言 > C语言/C++

C语言之经典习题

2017-11-21 14:23 183 查看


1.斐波那契

intFibon(int
n)

{

     
intf1=1;

     
intf2=1;

     
intf3=1;//使前两项输出1

     
for(int
i=3;i<=n;i++)

     
{f3=f1+f2;

     
f1=f2;

     
f2=f3;} //循环体

     
returnf3;

}

 

intmain()

{

     
printf("%d\n",Fibon(0));

     
printf("%d\n",Fibon(5));

     
return0;

}

2.数字处理

//几位数:丢个位数字

//
逆序输出:先取余得各位打印,丢弃个位

//
顺序输出:先整除最高位打印,丢弃最高位

intGetFigures(int
n)//统计十进制数字n是个几位数字

{

     
intcount=0;//计数

     
if(n==0)

     
{return1;}

     
do//丢弃个位

     
{count++;

     
 n/=10;}

     
while(n!=0);

     
returncount;//几位数

}

 

voidPrintReverse(int
n)//逆序输出十进制数字n的每一位,12->2
1

{

     
if(n<0)//负数处理

     
{printf("-");

     
 n=-n;}

     
do//打印个位,丢弃个位

     
{printf("%d ",n%10);

     
 n/=10;}

     
while(n!=0);

     
printf("\n");

}

 

voidPrintOrder(int
n)//顺序输出

{

     
inta=GetFigures(n);//几位数

 

     
int tmp=1;

     
for(int
i=0;i<a-1;i++)

     
{tmp*=10;}//2位数对应100

 

     
do//打印最高位,丢弃最高位,进行下一位

     
{printf("%d ",n/tmp);

     
 n%=tmp;}

     
 tmp/=10;}

     
while(n!=0);

     
printf("\n\n");

}

 

intmain()

{

     
printf("%d\n",GetFigures(0));

     
PrintReverse(0);

     
PrintOrder(0);

 

     
printf("%d\n",GetFigures(567));

    
PrintReverse(567);

     
PrintOrder(567);

 

     
printf("%d\n",GetFigures(-567));    

     
PrintReverse(-567);

     
PrintOrder(-567);

 

     
return0;

}

3.判断素数

#include<math.h>

boolE(int
n)

{

     
//for(inti=2;i<n;i++)

     
for(inti=2;i<sqrt((double)n);i++)//进行开平方优化

     
{if(n%i==0)

     
{returnfalse;}}

     

     
returntrue;  

}

intmain()

{   

   if(E(7))//判断某一个数字是不是素数

   
{printf("%d是素数\n",7);}

    else

    {printf("%d不是素数\n",7);}

 

    for(inti=3;i<100;i++)//判断3~100之间的素数

   if(E(i))

    {printf("%d\n",i);}

 

    return0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: